diff options
Diffstat (limited to 'syntax')
| -rw-r--r-- | syntax/blade.vim | 56 | ||||
| -rw-r--r-- | syntax/eelixir.vim | 5 | ||||
| -rw-r--r-- | syntax/elixir.vim | 36 | ||||
| -rw-r--r-- | syntax/go.vim | 24 | ||||
| -rw-r--r-- | syntax/html.vim | 30 | ||||
| -rw-r--r-- | syntax/jade.vim | 2 | ||||
| -rw-r--r-- | syntax/perl6.vim | 2 | ||||
| -rw-r--r-- | syntax/ruby.vim | 28 | ||||
| -rw-r--r-- | syntax/rust.vim | 1 | ||||
| -rw-r--r-- | syntax/swift.vim | 46 | 
10 files changed, 139 insertions, 91 deletions
| diff --git a/syntax/blade.vim b/syntax/blade.vim index 0a1f7607..bbce6b14 100644 --- a/syntax/blade.vim +++ b/syntax/blade.vim @@ -1,45 +1,49 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'blade') == -1 -" Language:     Blade +" Vim syntax file +" Language:     Blade (Laravel)  " Maintainer:   Jason Walton <jwalton512@gmail.com> -" URL:          https://github.com/xsbeats/vim-blade -" License:      DBAD +" Filenames:    *.blade.php -" Check if our syntax is already loaded -if exists('b:current_syntax') && b:current_syntax == 'blade' +if exists('b:current_syntax')      finish  endif -" Include PHP +if !exists("main_syntax") +    let main_syntax = 'blade' +endif + +runtime! syntax/html.vim +unlet! b:current_syntax  runtime! syntax/php.vim -silent! unlet b:current_syntax +unlet! b:current_syntax + +syn case match +syn clear htmlError + +syn region  bladeEcho       matchgroup=bladeDelimiter start="@\@<!{{" end="}}"  contains=@bladePhp,bladePhpParenBlock  containedin=ALLBUT,@bladeExempt keepend +syn region  bladeEcho       matchgroup=bladeDelimiter start="{!!" end="!!}"  contains=@bladePhp,bladePhpParenBlock  containedin=ALLBUT,@bladeExempt keepend +syn region  bladeComment    matchgroup=bladeDelimiter start="{{--" end="--}}"  contains=bladeTodo  containedin=ALLBUT,@bladeExempt keepend -" Echos -syn region bladeUnescapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{!!/ end=/!!}\s*/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment -syn region bladeEscapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{{{\@!/ end=/}}\s*/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment -syn region bladeEscapedEcho matchgroup=bladeEchoDelim start=/@\@<!\s*{{{{\@!/ end=/}}}/ oneline contains=@phpClTop containedin=ALLBUT,bladeComment +syn keyword bladeKeyword    @if @elseif @foreach @forelse @for @while @can @include @each @inject @extends @section @unless nextgroup=bladePhpParenBlock skipwhite containedin=ALLBUT,@bladeExempt +syn keyword bladeKeyword    @else @endif @endunless @endfor @endforeach @empty @endforelse @endwhile @endcan @stop @append @endsection containedin=ALLBUT,@bladeExempt -" Structures -syn match bladeStructure /\s*@\(else\|empty\|endfor\|endforeach\|endforelse\|endif\|endpush\|endsection\|endunless\|endwhile\|overwrite\|show\|stop\)\>/ -syn match bladeStructure /\s*@\(append\|choice\|each\|elseif\|extends\|for\|foreach\|forelse\|if\|include\|lang\|push\|section\|stack\|unless\|while\|yield\|\)\>\s*/ nextgroup=bladeParens -syn region bladeParens matchgroup=bladeParen start=/(/ end=/)/ contained contains=@bladeAll,@phpClTop +syn region  bladePhpParenBlock  matchgroup=bladeDelimiter start="\s*(" end=")" contains=@bladePhp,bladePhpParenBlock skipwhite contained -" Comments -syn region bladeComments start=/\s*{{--/ end=/--}}/ contains=bladeComment keepend -syn match bladeComment /.*/ contained containedin=bladeComments +syn cluster bladePhp contains=@phpClTop +syn cluster bladeExempt contains=bladeComment,@htmlTop -" Clusters -syn cluster bladeAll contains=bladeStructure,bladeParens +syn keyword bladeTodo todo fixme xxx  contained -" Highlighting +hi def link bladeDelimiter      PreProc  hi def link bladeComment        Comment -hi def link bladeEchoDelim      Delimiter -hi def link bladeParen          Delimiter -hi def link bladeStructure      Keyword +hi def link bladeTodo           Todo +hi def link bladeKeyword        Statement +let b:current_syntax = 'blade' -if !exists('b:current_syntax') -    let b:current_syntax = 'blade' +if exists('main_syntax') && main_syntax == 'blade' +    unlet main_syntax  endif  endif diff --git a/syntax/eelixir.vim b/syntax/eelixir.vim index 6d940cb9..38dee597 100644 --- a/syntax/eelixir.vim +++ b/syntax/eelixir.vim @@ -1,9 +1,5 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1 -" Vim syntax file -" Language: Embedded Elixir -" URL:      https://github.com/elixir-lang/vim-elixir -  if exists("b:current_syntax")    finish  endif @@ -66,5 +62,4 @@ if main_syntax == 'eelixir'    unlet main_syntax  endif -  endif diff --git a/syntax/elixir.vim b/syntax/elixir.vim index b75340b3..3f0a8dbb 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -1,10 +1,5 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1 -" Vim syntax file -" Language: Elixir -" Maintainer: Carlos Galdino <carloshsgaldino@gmail.com> -" Last Change: 2013 Apr 24 -  if exists("b:current_syntax")    finish  endif @@ -12,21 +7,21 @@ endif  " syncing starts 2000 lines before top line so docstrings don't screw things up  syn sync minlines=2000 -syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments +syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments,elixirBlockDefinition  syn match elixirComment '#.*' contains=elixirTodo,@Spell  syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained -syn keyword elixirKeyword case when cond for if unless try receive send -syn keyword elixirKeyword exit raise throw after rescue catch else do end +syn keyword elixirKeyword case when with cond for if unless try receive send +syn keyword elixirKeyword exit raise throw after rescue catch else  syn keyword elixirKeyword quote unquote super spawn spawn_link spawn_monitor  " Functions used on guards  syn keyword elixirKeyword contained is_atom is_binary is_bitstring is_boolean  syn keyword elixirKeyword contained is_float is_function is_integer is_list -syn keyword elixirKeyword contained is_map is_number is_pid is_port is_record -syn keyword elixirKeyword contained is_reference is_tuple is_exception abs -syn keyword elixirKeyword contained bit_size byte_size div elem hd length +syn keyword elixirKeyword contained is_map is_nil is_number is_pid is_port +syn keyword elixirKeyword contained is_record is_reference is_tuple is_exception +syn keyword elixirKeyword contained abs bit_size byte_size div elem hd length  syn keyword elixirKeyword contained map_size node rem round tl trunc tuple_size  syn match elixirGuard '.*when.*' contains=ALLBUT,@elixirNotTop @@ -87,14 +82,14 @@ syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{  syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop  syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop -syn region elixirDocString     start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell fold keepend -syn region elixirDocString     start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell fold keepend +syn region elixirDocString     start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell keepend fold +syn region elixirDocString     start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation,@Spell keepend fold  syn match elixirAtomInterpolated   ':\("\)\@=' contains=elixirString  syn match elixirString             "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)" -syn region elixirBlock              matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold -syn region elixirAnonymousFunction  matchgroup=elixirKeyword start="\<fn\>"         end="\<end\>" contains=ALLBUT,@elixirNotTop fold +syn region elixirBlock              matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold +syn region elixirAnonymousFunction  matchgroup=elixirBlockDefinition start="\<fn\>"         end="\<end\>" contains=ALLBUT,@elixirNotTop fold  syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigilDelimiter @@ -106,11 +101,11 @@ syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\u<"  syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\u\["               end="\]"  skip="\\\\\|\\\]"  contains=elixirDelimEscape fold  syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\u("                end=")"   skip="\\\\\|\\)"   contains=elixirDelimEscape fold -syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" fold -syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l{"                end="}"   skip="\\\\\|\\}"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation -syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l<"                end=">"   skip="\\\\\|\\>"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation -syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l\["               end="\]"  skip="\\\\\|\\\]"  fold contains=@elixirStringContained,elixirRegexEscapePunctuation -syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l("                end=")"   skip="\\\\\|\\)"   fold contains=@elixirStringContained,elixirRegexEscapePunctuation +syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1"                                                              fold +syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l{"                end="}"   skip="\\\\\|\\}"   contains=@elixirStringContained,elixirRegexEscapePunctuation fold +syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l<"                end=">"   skip="\\\\\|\\>"   contains=@elixirStringContained,elixirRegexEscapePunctuation fold +syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l\["               end="\]"  skip="\\\\\|\\\]"  contains=@elixirStringContained,elixirRegexEscapePunctuation fold +syn region elixirSigil matchgroup=elixirSigilDelimiter start="\~\l("                end=")"   skip="\\\\\|\\)"   contains=@elixirStringContained,elixirRegexEscapePunctuation fold  " Sigils surrounded with docString  syn region elixirSigil matchgroup=elixirSigilDelimiter start=+\~\a\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold @@ -147,6 +142,7 @@ syn match  elixirCallbackDeclaration    "[^[:space:];#<,()\[\]]\+" contained con  syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration +hi def link elixirBlockDefinition        Keyword  hi def link elixirDefine                 Define  hi def link elixirPrivateDefine          Define  hi def link elixirModuleDefine           Define diff --git a/syntax/go.vim b/syntax/go.vim index 4cd53c45..a0a86e83 100644 --- a/syntax/go.vim +++ b/syntax/go.vim @@ -71,6 +71,10 @@ if !exists("g:go_highlight_structs")    let g:go_highlight_structs = 0  endif +if !exists("g:go_highlight_interfaces") +  let g:go_highlight_interfaces = 0 +endif +  if !exists("g:go_highlight_build_constraints")    let g:go_highlight_build_constraints = 0  endif @@ -210,9 +214,17 @@ endif  " Spacing errors around the 'chan' keyword  if g:go_highlight_chan_whitespace_error != 0    " receive-only annotation on chan type -  syn match goSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@=" +  " +  " \(\<chan\>\)\@<!<-  (only pick arrow when it doesn't come after a chan) +  " this prevents picking up 'chan<- chan<-' but not '<- chan' +  syn match goSpaceError display "\(\(\<chan\>\)\@<!<-\)\@<=\s\+\(\<chan\>\)\@=" +    " send-only annotation on chan type -  syn match goSpaceError display "\(\<chan\)\@<=\s\+\(<-\)\@=" +  " +  " \(<-\)\@<!\<chan\>  (only pick chan when it doesn't come after an arrow) +  " this prevents picking up '<-chan <-chan' but not 'chan <-' +  syn match goSpaceError display "\(\(<-\)\@<!\<chan\>\)\@<=\s\+\(<-\)\@=" +    " value-ignoring receives in a few contexts    syn match goSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+"  endif @@ -285,6 +297,14 @@ endif  hi def link     goStruct            Function  hi def link     goStructDef         Function +" Interfaces; +if g:go_highlight_interfaces != 0 +  syn match goInterface             /\(.\)\@<=\w\+\({\)\@=/ +  syn match goInterfaceDef          /\(type\s\+\)\@<=\w\+\(\s\+interface\s\+{\)\@=/ +endif +hi def link     goInterface         Function +hi def link     goInterfaceDef      Function +  " Build Constraints  if g:go_highlight_build_constraints != 0      syn match   goBuildKeyword      display contained "+build" diff --git a/syntax/html.vim b/syntax/html.vim index abeb1490..77dc0fce 100644 --- a/syntax/html.vim +++ b/syntax/html.vim @@ -1,28 +1,27 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1  " Vim syntax file -" Language:	HTML (version 5) -" Maintainer:	Rodrigo Machado <rcmachado@gmail.com> -" URL:		http://rm.blog.br/vim/syntax/html.vim -" Last Change:  2009 Aug 19 +" Language:     HTML (version 5.1) +"               SVG (SVG 1.1 (Second Edition) ) +" Last Change:  2016 Jan 20  " License:      Public domain  "               (but let me know if you like :) )  " -" Note: This file just adds the new tags from HTML 5 +" Note: This file just add new tags from HTML 5  "       and don't replace default html.vim syntax file  " -" Modified:     othree <othree@gmail.com> -" Changes:      update to Draft 13 January 2011 -"               add complete new attributes +" Maintainer:   Kao, Wei-Ko(othree) ( othree AT gmail DOT com ) +" Changes:      update to Draft 2016 Jan 13  "               add microdata Attributes -"               add bdi element +" Maintainer:   Rodrigo Machado <rcmachado@gmail.com> +" URL:          http://rm.blog.br/vim/syntax/html.vim  " Modified:     htdebeer <H.T.de.Beer@gmail.com>  " Changes:      add common SVG elements and attributes for inline SVG  " HTML 5 tags  syn keyword htmlTagName contained article aside audio canvas command  syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer -syn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output +syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output  syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data  syn keyword htmlTagName contained template content shadow  syn keyword htmlTagName contained wbr bdi @@ -43,6 +42,7 @@ syn keyword htmlTagName contained glyph glyphRef hkern  syn keyword htmlTagName contained linearGradient marker mask pattern radialGradient set stop  syn keyword htmlTagName contained missing-glyph mpath   syn keyword htmlTagName contained text textPath tref tspan vkern +syn keyword htmlTagName contained metadata title  " Custom Element  syn match htmlTagName contained "\<[a-z_]\([a-z0-9_.]\+\)\?\(\-[a-z0-9_.]\+\)\+\>" @@ -101,21 +101,21 @@ syn keyword htmlArg contained d descent diffuseConstant divisor dur dx dy  syn keyword htmlArg contained edgeMode elevation end exponent externalResourcesRequired   syn keyword htmlArg contained fill filterRes filterUnits font-family font-size font-stretch font-style font-variant font-weight format format from fx fy   syn keyword htmlArg contained g1 g2 glyph-name glyphRef gradientTransform gradientUnits  -syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-y  +syn keyword htmlArg contained hanging height horiz-adv-x horiz-origin-x horiz-origin-y   syn keyword htmlArg contained id ideographic in in2 intercept   syn keyword htmlArg contained k k1 k2 k3 k4 kernelMatrix kernelUnitLength keyPoints keySplines keyTimes   syn keyword htmlArg contained lang lengthAdjust limitingConeAngle local   syn keyword htmlArg contained markerHeight markerUnits markerWidth maskContentUnits maskUnits mathematical max media method min mode name   syn keyword htmlArg contained numOctaves  -syn keyword htmlArg contained offset offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness  +syn keyword htmlArg contained offset onabort onactivate onbegin onclick onend onerror onfocusin onfocusout onload onmousedown onmousemove onmouseout onmouseover onmouseup onrepeat onresize onscroll onunload onzoom operator order orient orientation origin overline-position overline-thickness   syn keyword htmlArg contained panose-1 path pathLength patternContentUnits patternTransform patternUnits points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits   syn keyword htmlArg contained r radius refX refY rendering-intent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry   syn keyword htmlArg contained scale seed slope spacing specularConstant specularExponent spreadMethod startOffset stdDeviation stemh stemv stitchTiles strikethrough-position strikethrough-thickness string surfaceScale systemLanguage  -syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type u -syn keyword htmlArg contained 1 u2 underline-position underline-thickness unicode unicode-range units-per-em  +syn keyword htmlArg contained tableValues target targetX targetY textLength title to transform type +syn keyword htmlArg contained u1 u2 underline-position underline-thickness unicode unicode-range units-per-em   syn keyword htmlArg contained v-alphabetic v-hanging v-ideographic v-mathematical values version vert-adv-y vert-origin-x vert-origin-y viewBox viewTarget   syn keyword htmlArg contained width widths  -syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:show xlink:title xlink:type xml:base xml:lang xml:space  +syn keyword htmlArg contained x x-height x1 x2 xChannelSelector xlink:actuate xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xml:lang xml:space   syn keyword htmlArg contained y y1 y2 yChannelSelector   syn keyword htmlArg contained z zoomAndPan   syn keyword htmlArg contained alignment-baseline baseline-shift clip-path clip-rule clip color-interpolation-filters color-interpolation color-profile color-rendering color cursor direction display dominant-baseline enable-background fill-opacity fill-rule fill filter flood-color flood-opacity font-family font-size-adjust font-size font-stretch font-style font-variant font-weight glyph-orientation-horizontal glyph-orientation-vertical image-rendering kerning letter-spacing lighting-color marker-end marker-mid marker-start mask opacity overflow pointer-events shape-rendering stop-color stop-opacity stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width stroke text-anchor text-decoration text-rendering unicode-bidi visibility word-spacing writing-mode diff --git a/syntax/jade.vim b/syntax/jade.vim index 27f2da85..ff6c7e28 100644 --- a/syntax/jade.vim +++ b/syntax/jade.vim @@ -64,7 +64,7 @@ syn region  jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):\%(markdow  syn region  jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus  syn region  jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!" -syn match  jadeScriptConditional "^\s*\<\%(if\|else\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!" +syn match  jadeScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"  syn match  jadeScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"  syn region  jadeScriptLoopRegion start="^\s*\(for \)" end="$" contains=jadeScriptLoopKeywords  syn keyword  jadeScriptLoopKeywords for in contained diff --git a/syntax/perl6.vim b/syntax/perl6.vim index 9d1e39b6..ff8070b8 100644 --- a/syntax/perl6.vim +++ b/syntax/perl6.vim @@ -1951,7 +1951,7 @@ endif  if exists("perl6_fold") || exists("perl6_extended_all")      setl foldmethod=syntax      syn region p6BlockFold -        \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+{\%(\s+\|#.*\)\?$" +        \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+\%({\s*\%(#.*\)\?\)\?$"          \ end="^\z1}"          \ transparent fold keepend extend  endif diff --git a/syntax/ruby.vim b/syntax/ruby.vim index 43dd3d36..3a6ef484 100644 --- a/syntax/ruby.vim +++ b/syntax/ruby.vim @@ -179,20 +179,20 @@ syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\["				end="\]"  s  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I("				end=")"   skip="\\\\\|\\)"	 contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape    fold  " Here Document -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+	 end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop - -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc			fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend - -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart		     fold keepend -syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend +syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+	 end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop + +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc			fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend + +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart		     fold keepend +syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend  if exists('main_syntax') && main_syntax == 'eruby'    let b:ruby_no_expensive = 1 diff --git a/syntax/rust.vim b/syntax/rust.vim index b01c0465..644fc51b 100644 --- a/syntax/rust.vim +++ b/syntax/rust.vim @@ -127,7 +127,6 @@ syn match     rustMacro       '#\w\(\w\)*' contains=rustAssert,rustPanic  syn match     rustEscapeError   display contained /\\./  syn match     rustEscape        display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ -syn match     rustEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{8}\)/  syn match     rustEscapeUnicode display contained /\\u{\x\{1,6}}/  syn match     rustStringContinuation display contained /\\\n\s*/  syn region    rustString      start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation diff --git a/syntax/swift.vim b/syntax/swift.vim index 4f5230ae..db24f594 100644 --- a/syntax/swift.vim +++ b/syntax/swift.vim @@ -16,13 +16,47 @@ syntax match swiftShebang "\v#!.*$"  " Comment contained keywords  syntax keyword swiftTodos contained TODO XXX FIXME NOTE  syntax keyword swiftMarker contained MARK -syntax match swiftDocString "\v^\s*-\s*parameter"hs=s+1 contained -syntax match swiftDocString "\v^\s*-\s*returns"hs=s+1 contained + +" In comment identifiers +function! s:CommentKeywordMatch(keyword) +  execute "syntax match swiftDocString \"\\v^\\s*-\\s*". a:keyword . "\\W\"hs=s+1,he=e-1 contained" +endfunction + +syntax case ignore + +call s:CommentKeywordMatch("attention") +call s:CommentKeywordMatch("author") +call s:CommentKeywordMatch("authors") +call s:CommentKeywordMatch("bug") +call s:CommentKeywordMatch("complexity") +call s:CommentKeywordMatch("copyright") +call s:CommentKeywordMatch("date") +call s:CommentKeywordMatch("experiment") +call s:CommentKeywordMatch("important") +call s:CommentKeywordMatch("invariant") +call s:CommentKeywordMatch("note") +call s:CommentKeywordMatch("parameter") +call s:CommentKeywordMatch("postcondition") +call s:CommentKeywordMatch("precondition") +call s:CommentKeywordMatch("remark") +call s:CommentKeywordMatch("remarks") +call s:CommentKeywordMatch("requires") +call s:CommentKeywordMatch("returns") +call s:CommentKeywordMatch("see") +call s:CommentKeywordMatch("since") +call s:CommentKeywordMatch("throws") +call s:CommentKeywordMatch("todo") +call s:CommentKeywordMatch("version") +call s:CommentKeywordMatch("warning") + +syntax case match +delfunction s:CommentKeywordMatch +  " Literals  " Strings -syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftInterpolatedWrapper -syntax region swiftInterpolatedWrapper start="\v[^\\]\\\(\s*" end="\v\s*\)" contained containedin=swiftString contains=swiftInterpolatedString +syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftInterpolatedWrapper oneline +syntax region swiftInterpolatedWrapper start="\v[^\\]\\\(\s*" end="\v\s*\)" contained containedin=swiftString contains=swiftInterpolatedString,swiftString  syntax match swiftInterpolatedString "\v\w+(\(\))?" contained containedin=swiftInterpolatedWrapper  " Numbers @@ -167,9 +201,9 @@ syntax keyword swiftStructure        \ struct        \ enum -syntax region swiftTypeWrapper start="\v:\s*" skip="\s*,\s*$*\s*" end="$" contains=swiftString,swiftBoolean,swiftNumber,swiftType,swiftGenericsWrapper transparent +syntax region swiftTypeWrapper start="\v:\s*" skip="\s*,\s*$*\s*" end="$\|/"me=e-1 contains=ALL transparent  syntax region swiftGenericsWrapper start="\v\<" end="\v\>" contains=swiftType transparent oneline -syntax region swiftLiteralWrapper start="\v\=\s*" skip="\v[^\[\]]\(\)" end="\v(\[\]|\(\))" contains=swiftType,swiftString transparent oneline +syntax region swiftLiteralWrapper start="\v\=\s*" skip="\v[^\[\]]\(\)" end="\v(\[\]|\(\))" contains=ALL transparent oneline  syntax region swiftReturnWrapper start="\v-\>\s*" end="\v(\{|$)" contains=swiftType transparent oneline  syntax match swiftType "\v<\u\w*" contained containedin=swiftGenericsWrapper,swiftTypeWrapper,swiftLiteralWrapper,swiftGenericsWrapper | 
