diff options
Diffstat (limited to 'syntax')
| -rw-r--r-- | syntax/basic/literal.vim | 2 | ||||
| -rw-r--r-- | syntax/basic/type.vim | 2 | ||||
| -rw-r--r-- | syntax/carp.vim | 8 | ||||
| -rw-r--r-- | syntax/crystal.vim | 550 | ||||
| -rw-r--r-- | syntax/elixir.vim | 2 | ||||
| -rw-r--r-- | syntax/julia.vim | 153 | ||||
| -rw-r--r-- | syntax/llvm.vim | 5 | ||||
| -rw-r--r-- | syntax/mma.vim | 16 | ||||
| -rw-r--r-- | syntax/pgsql.vim | 4 | ||||
| -rw-r--r-- | syntax/php.vim | 190 | ||||
| -rw-r--r-- | syntax/ps1.vim | 32 | ||||
| -rw-r--r-- | syntax/python.vim | 588 | ||||
| -rw-r--r-- | syntax/reason.vim | 294 | ||||
| -rw-r--r-- | syntax/ruby.vim | 4 | ||||
| -rw-r--r-- | syntax/terraform.vim | 624 | ||||
| -rw-r--r-- | syntax/vala.vim | 10 | ||||
| -rw-r--r-- | syntax/zig.vim | 4 | 
17 files changed, 1576 insertions, 912 deletions
| diff --git a/syntax/basic/literal.vim b/syntax/basic/literal.vim index 1f4fb854..eb7dce77 100644 --- a/syntax/basic/literal.vim +++ b/syntax/basic/literal.vim @@ -20,7 +20,7 @@ syntax match   typescriptSpecial            contained "\v\\%(x\x\x|u%(\x{4}|\{\x  " From vim runtime  " <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48> -syntax region  typescriptRegexpString          start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}]+me=e-1 nextgroup=typescriptDotNotation oneline +syntax region  typescriptRegexpString          start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuy]\{0,5\}\s*$+ end=+/[gimuy]\{0,5\}\s*[;.,)\]}:]+me=e-1 nextgroup=typescriptDotNotation oneline  syntax region  typescriptTemplate    \ start=/`/  skip=/\\\\\|\\`\|\n/  end=/`\|$/ diff --git a/syntax/basic/type.vim b/syntax/basic/type.vim index 4de74eeb..74942a2d 100644 --- a/syntax/basic/type.vim +++ b/syntax/basic/type.vim @@ -86,7 +86,7 @@ syntax region typescriptObjectType matchgroup=typescriptBraces    \ start=/{/ end=/}/    \ contains=@typescriptTypeMember,typescriptEndColons,@typescriptComments,typescriptAccessibilityModifier,typescriptReadonlyModifier    \ nextgroup=@typescriptTypeOperator -  \ contained skipwhite fold +  \ contained skipwhite skipnl fold  syntax cluster typescriptTypeMember contains=    \ @typescriptCallSignature, diff --git a/syntax/carp.vim b/syntax/carp.vim index ad809beb..7266360d 100644 --- a/syntax/carp.vim +++ b/syntax/carp.vim @@ -39,7 +39,7 @@ syn keyword carpFunc println print get-line from-string mod random  syn keyword carpFunc random-between str mask delete append length duplicate  syn keyword carpFunc cstr chars from-chars to-int from-int sin cos sqrt acos  syn keyword carpFunc atan2 exit time seed-random for cond floor abs sort-with -syn keyword carpFunc subarray prefix-array suffix-array reverse sum min max +syn keyword carpFunc slice prefix suffix reverse sum min max  syn keyword carpFunc first last reduce format zero read-file bit-shift-left  syn keyword carpFunc bit-shift-right bit-and bit-or bit-xor bit-not safe-add  syn keyword carpFunc safe-sub safe-mul even? odd? cmp allocate repeat-indexed @@ -47,8 +47,8 @@ syn keyword carpFunc sanitize-addresses memory-balance reset-memory-balance!  syn keyword carpFunc log-memory-balance! memory-logged assert-balanced trace  syn keyword carpFunc assert  syn keyword carpFunc pi e swap! update! char-at tail head split-by words lines -syn keyword carpFunc pad-left pad-right count-char empty? random-sized substring -syn keyword carpFunc prefix-string suffix-string starts-with? ends-with? +syn keyword carpFunc pad-left pad-right count-char empty? random-sized +syn keyword carpFunc starts-with? ends-with?  syn keyword carpFunc string-join free sleep-seconds sleep-micros substitute  syn keyword carpFunc neg to-float match matches? find global-match match-str  syn keyword carpFunc from-float tan asin atan cosh sinh tanh exp frexp ldexp @@ -111,7 +111,7 @@ syn match carpNumber    "\<[-+]\?\d\+/\d\+[lfb]\?\>" contains=carpContainedNumbe  syn keyword carpBoolean  true false -syn match carpChar    "\<\\.\w\@!" +syn match carpChar    "\\\(\(newline\)\|\(space\)\|\(tab\)\|\(.\)\)"  syn region carpQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal  syn region carpQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=@carpQuotedStuff,@carpQuotedOrNormal diff --git a/syntax/crystal.vim b/syntax/crystal.vim index 8fdd2a6b..ae52cf70 100644 --- a/syntax/crystal.vim +++ b/syntax/crystal.vim @@ -1,16 +1,67 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1  " Language: Crystal +" Maintainer: rhysd <https://rhysd.github.io> +"  " Based on Ruby syntax highlight  " which was made by Mirko Nasato and Doug Kearns -" --------------------------------------------- +" ---------------------------------------------- +" Prelude  if exists('b:current_syntax')    finish  endif +" eCrystal Config +if exists('g:main_syntax') && g:main_syntax ==# 'ecrystal' +  let b:crystal_no_expensive = 1 +end + +" Folding Config +if has('folding') && exists('g:crystal_fold') +  setlocal foldmethod=syntax +endif + +let s:foldable_groups = split( +      \   get( +      \     b:, +      \     'crystal_foldable_groups', +      \     get(g:, 'crystal_foldable_groups', 'ALL') +      \   ) +      \ ) + +function! s:foldable(...) abort +  if index(s:foldable_groups, 'NONE') > -1 +    return 0 +  endif + +  if index(s:foldable_groups, 'ALL') > -1 +    return 1 +  endif + +  for l:i in a:000 +    if index(s:foldable_groups, l:i) > -1 +      return 1 +    endif +  endfor + +  return 0 +endfunction + +function! s:run_syntax_fold(args) abort +  let [_0, _1, groups, cmd; _] = matchlist(a:args, '\(["'']\)\(.\{-}\)\1\s\+\(.*\)') +  if call('s:foldable', split(groups)) +    let cmd .= ' fold' +  endif +  exe cmd +endfunction + +com! -nargs=* SynFold call s:run_syntax_fold(<q-args>) + +" Not-Top Cluster  syn cluster crystalNotTop contains=@crystalExtendedStringSpecial,@crystalRegexpSpecial,@crystalDeclaration,crystalConditional,crystalExceptional,crystalMethodExceptional,crystalTodo,crystalLinkAttr +" Whitespace Errors  if exists('g:crystal_space_errors')    if !exists('g:crystal_no_trail_space_error')      syn match crystalSpaceError display excludenl "\s\+$" @@ -28,91 +79,94 @@ if exists('g:crystal_operators')  endif  " Expression Substitution and Backslash Notation -syn match crystalStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"						    contained display +syn match crystalStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"                            contained display  syn match crystalStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display -syn region crystalInterpolation	      matchgroup=crystalInterpolationDelim start="#{" end="}" contained contains=ALLBUT,@crystalNotTop -syn match  crystalInterpolation	      "#\%(\$\|@@\=\)\w\+"    display contained contains=crystalInterpolationDelim,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable,crystalPredefinedVariable +syn region crystalInterpolation      matchgroup=crystalInterpolationDelim start="#{" end="}" contained contains=ALLBUT,@crystalNotTop +syn match  crystalInterpolation      "#\%(\$\|@@\=\)\w\+" display contained contains=crystalInterpolationDelim,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable,crystalPredefinedVariable  syn match  crystalInterpolationDelim "#\ze\%(\$\|@@\=\)\w\+" display contained -syn match  crystalInterpolation	      "#\$\%(-\w\|\W\)"       display contained contains=crystalInterpolationDelim,crystalPredefinedVariable,crystalInvalidVariable -syn match  crystalInterpolationDelim "#\ze\$\%(-\w\|\W\)"    display contained -syn region crystalNoInterpolation	      start="\\#{" end="}"            contained -syn match  crystalNoInterpolation	      "\\#{"		      display contained -syn match  crystalNoInterpolation	      "\\#\%(\$\|@@\=\)\w\+"  display contained -syn match  crystalNoInterpolation	      "\\#\$\W"		      display contained +syn match  crystalInterpolation      "#\$\%(-\w\|\W\)" display contained contains=crystalInterpolationDelim,crystalPredefinedVariable,crystalInvalidVariable +syn match  crystalInterpolationDelim "#\ze\$\%(-\w\|\W\)" display contained +syn region crystalNoInterpolation    start="\\#{" end="}" contained +syn match  crystalNoInterpolation    "\\#{" display contained +syn match  crystalNoInterpolation    "\\#\%(\$\|@@\=\)\w\+" display contained +syn match  crystalNoInterpolation    "\\#\$\W" display contained -syn match crystalDelimEscape	"\\[(<{\[)>}\]]" transparent display contained contains=NONE +syn match crystalDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE -syn region crystalNestedParentheses    start="("  skip="\\\\\|\\)"  matchgroup=crystalString end=")"	transparent contained -syn region crystalNestedCurlyBraces    start="{"  skip="\\\\\|\\}"  matchgroup=crystalString end="}"	transparent contained -syn region crystalNestedAngleBrackets  start="<"  skip="\\\\\|\\>"  matchgroup=crystalString end=">"	transparent contained -syn region crystalNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=crystalString end="\]"	transparent contained +syn region crystalNestedParentheses    matchgroup=crystalString start="("  skip="\\\\\|\\)"  end=")"  transparent contained +syn region crystalNestedCurlyBraces    matchgroup=crystalString start="{"  skip="\\\\\|\\}"  end="}"  transparent contained +syn region crystalNestedAngleBrackets  matchgroup=crystalString start="<"  skip="\\\\\|\\>"  end=">"  transparent contained +syn region crystalNestedSquareBrackets matchgroup=crystalString start="\[" skip="\\\\\|\\\]" end="\]" transparent contained  " These are mostly Oniguruma ready -syn region crystalRegexpComment	matchgroup=crystalRegexpSpecial   start="(?#"								  skip="\\)"  end=")"  contained -syn region crystalRegexpParens	matchgroup=crystalRegexpSpecial   start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)"  end=")"  contained transparent contains=@crystalRegexpSpecial -syn region crystalRegexpBrackets	matchgroup=crystalRegexpCharClass start="\[\^\="								  skip="\\\]" end="\]" contained transparent contains=crystalStringEscape,crystalRegexpEscape,crystalRegexpCharClass oneline -syn match  crystalRegexpCharClass	"\\[DdHhSsWw]"	       contained display -syn match  crystalRegexpCharClass	"\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained -syn match  crystalRegexpEscape	"\\[].*?+^$|\\/(){}[]" contained -syn match  crystalRegexpQuantifier	"[*?+][?+]\="	       contained display -syn match  crystalRegexpQuantifier	"{\d\+\%(,\d*\)\=}?\=" contained display -syn match  crystalRegexpAnchor	"[$^]\|\\[ABbGZz]"     contained display -syn match  crystalRegexpDot	"\."		       contained display -syn match  crystalRegexpSpecial	"|"		       contained display -syn match  crystalRegexpSpecial	"\\[1-9]\d\=\d\@!"     contained display -syn match  crystalRegexpSpecial	"\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display -syn match  crystalRegexpSpecial	"\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display -syn match  crystalRegexpSpecial	"\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display -syn match  crystalRegexpSpecial	"\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display - -syn cluster crystalStringSpecial	 contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape -syn cluster crystalExtendedStringSpecial contains=@crystalStringSpecial,crystalNestedParentheses,crystalNestedCurlyBraces,crystalNestedAngleBrackets,crystalNestedSquareBrackets -syn cluster crystalRegexpSpecial	 contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape,crystalRegexpSpecial,crystalRegexpEscape,crystalRegexpBrackets,crystalRegexpCharClass,crystalRegexpDot,crystalRegexpQuantifier,crystalRegexpAnchor,crystalRegexpParens,crystalRegexpComment +syn region crystalRegexpComment    matchgroup=crystalRegexpSpecial   start="(?#" skip="\\)" end=")" contained +syn region crystalRegexpParens     matchgroup=crystalRegexpSpecial   start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@crystalRegexpSpecial +syn region crystalRegexpBrackets   matchgroup=crystalRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=crystalStringEscape,crystalRegexpEscape,crystalRegexpCharClass oneline +syn match  crystalRegexpCharClass  "\\[DdHhSsWw]" contained display +syn match  crystalRegexpCharClass  "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained +syn match  crystalRegexpEscape     "\\[].*?+^$|\\/(){}[]" contained +syn match  crystalRegexpQuantifier "[*?+][?+]\=" contained display +syn match  crystalRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display +syn match  crystalRegexpAnchor     "[$^]\|\\[ABbGZz]" contained display +syn match  crystalRegexpDot        "\." contained display +syn match  crystalRegexpSpecial    "|"  contained display +syn match  crystalRegexpSpecial    "\\[1-9]\d\=\d\@!" contained display +syn match  crystalRegexpSpecial    "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display +syn match  crystalRegexpSpecial    "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display +syn match  crystalRegexpSpecial    "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display +syn match  crystalRegexpSpecial    "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display + +syn cluster crystalStringSpecial         contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape +syn cluster crystalExtendedStringSpecial contains=@crystalStringSpecial,crystalNestedParentheses,crystalNestedCurlyBraces,crystalNestedAngleBrackets,crystalNestedSquareBrackets,crystalNestedRawParentheses,crystalNestedRawCurlyBraces,crystalNestedRawAngleBrackets,crystalNestedRawSquareBrackets +syn cluster crystalRegexpSpecial         contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape,crystalRegexpSpecial,crystalRegexpEscape,crystalRegexpBrackets,crystalRegexpCharClass,crystalRegexpDot,crystalRegexpQuantifier,crystalRegexpAnchor,crystalRegexpParens,crystalRegexpComment  " Numbers and ASCII Codes -syn match crystalASCIICode	"\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" -syn match crystalInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*\%(_*[ufi]\%(32\|64\)\)\=\>"								display -syn match crystalInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(_\x\+\)*\%(_*[ufi]\%(32\|64\)\)\=\>"						display -syn match crystalInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*\%(_\x\+\)*\%(_*[ufi]\%(32\|64\)\)\=\>"								display -syn match crystalInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*\%(_\x\+\)*\%(_*[ufi]\%(32\|64\)\)\=\>"								display -syn match crystalFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\%(_*f\%(32\|64\)\)\=\>"					display -syn match crystalFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\%(_*f\%(32\|64\)\)\=\>"	display +syn match crystalASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" +syn match crystalInteger   "\<0x[[:xdigit:]_]\+\%([ui]\%(8\|16\|32\|64\|128\)\|f\%(32\|64\)\)\=\>" display +syn match crystalInteger   "\<0o[0-7_]\+\%([ui]\%(8\|16\|32\|64\|128\)\)\=\>" display +syn match crystalInteger   "\<0b[01_]\+\%([ui]\%(8\|16\|32\|64\|128\)\)\=\>" display +syn match crystalInteger   "\<\d[[:digit:]_]*\%([ui]\%(8\|16\|32\|64\|128\)\|f\%(32\|64\)\)\=\>" contains=crystalInvalidInteger display +syn match crystalFloat     "\<\d[[:digit:]_]*\.\d[[:digit:]_]*\%(f\%(32\|64\)\)\=\>" contains=crystalInvalidInteger display +syn match crystalFloat     "\<\d[[:digit:]_]*\%(\.\d[[:digit:]_]*\)\=\%([eE][-+]\=[[:digit:]_]\+\)\%(f\%(32\|64\)\)\=\>" contains=crystalInvalidInteger display +" Note: 042 is invalid but 0, 0_, 0_u8 and 0_1 are valid (#73) +syn match crystalInvalidInteger "\.\@<!\<0\d\+\>" contained containedin=crystalFloat,crystalInteger display  " Identifiers  syn match crystalLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent -syn match crystalBlockArgument	    "&[_[:lower:]][_[:alnum:]]"		 contains=NONE display transparent - -syn match  crystalTypeName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalClassName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalModuleName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalStructName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalLibName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalEnumName		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained -syn match  crystalConstant		"\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" -syn match  crystalClassVariable	"@@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display -syn match  crystalInstanceVariable "@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*"  display -syn match  crystalGlobalVariable	"$\%(\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*\|-.\)" -syn match  crystalFreshVariable		"\%(\h\|[^\x00-\x7F]\)\@<!%\%(\h\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display -syn match  crystalSymbol		"[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[][=?]\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" -syn match  crystalSymbol		"[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" -syn match  crystalSymbol		"[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" -syn match  crystalSymbol		"[]})\"':]\@<!:\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" -syn match  crystalSymbol		"\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 -syn match  crystalSymbol		"[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="he=e-1 -syn match  crystalSymbol		"\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 -syn match  crystalSymbol		"[[:space:],{]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="hs=s+1,he=e-1 -syn region crystalSymbol		start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@crystalStringSpecial fold - -syn match  crystalBlockParameter	  "\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" contained +syn match crystalBlockArgument         "&[_[:lower:]][_[:alnum:]]"          contains=NONE display transparent + +syn match  crystalTypeName         "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalClassName        "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalModuleName       "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalStructName       "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalLibName          "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalEnumName         "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained +syn match  crystalConstant         "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" +syn match  crystalClassVariable    "@@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display +syn match  crystalInstanceVariable "@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display +syn match  crystalGlobalVariable   "$\%(\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*\|-.\)" +syn match  crystalFreshVariable    "\%(\h\|[^\x00-\x7F]\)\@<!%\%(\h\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display +syn match  crystalSymbol           "[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[][=?]\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" +syn match  crystalSymbol           "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" +syn match  crystalSymbol           "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" +syn match  crystalSymbol           "[]})\"':]\@<!:\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" +syn match  crystalSymbol           "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 +syn match  crystalSymbol           "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="he=e-1 +syn match  crystalSymbol           "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 +syn match  crystalSymbol           "[[:space:],{]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="hs=s+1,he=e-1 + +SynFold ':' syn region crystalSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@crystalStringSpecial + +syn match  crystalBlockParameter     "\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" contained  syn region crystalBlockParameterList start="\%(\%(\<do\>\|{\)\s*\)\@<=|" end="|" oneline display contains=crystalBlockParameter -syn match crystalInvalidVariable	 "$[^ %A-Za-z_-]" +syn match crystalInvalidVariable    "$[^ %A-Za-z_-]"  syn match crystalPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# -syn match crystalPredefinedVariable "$\d\+"										   display -syn match crystalPredefinedVariable "$_\>"											   display -syn match crystalPredefinedVariable "$-[0FIKadilpvw]\>"									   display -syn match crystalPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>"					   display +syn match crystalPredefinedVariable "$\d\+" display +syn match crystalPredefinedVariable "$_\>" display +syn match crystalPredefinedVariable "$-[0FIKadilpvw]\>" display +syn match crystalPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display  syn match crystalPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display  syn match crystalPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!"  syn match crystalPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\)\>\%(\s*(\)\@!" @@ -120,77 +174,82 @@ syn match crystalPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(STDERR\  syn match crystalPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(crystal_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"  " Normal Regular Expression -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|ifdef\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial fold -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=/]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial fold +SynFold '/' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|ifdef\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[imx]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial +SynFold '/' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=/]\@!" end="/[imx]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial  " Generalized Regular Expression -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@crystalRegexpSpecial fold -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r{"				 end="}[iomxneus]*"   skip="\\\\\|\\}"	 contains=@crystalRegexpSpecial fold -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r<"				 end=">[iomxneus]*"   skip="\\\\\|\\>"	 contains=@crystalRegexpSpecial,crystalNestedAngleBrackets,crystalDelimEscape fold -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r\["				 end="\][iomxneus]*"  skip="\\\\\|\\\]"	 contains=@crystalRegexpSpecial fold -syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r("				 end=")[iomxneus]*"   skip="\\\\\|\\)"	 contains=@crystalRegexpSpecial fold +SynFold '%' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r{"  end="}[imx]*"  skip="\\\\\|\\}"  contains=@crystalRegexpSpecial +SynFold '%' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r<"  end=">[imx]*"  skip="\\\\\|\\>"  contains=@crystalRegexpSpecial,crystalNestedAngleBrackets,crystalDelimEscape +SynFold '%' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r\[" end="\][imx]*" skip="\\\\\|\\\]" contains=@crystalRegexpSpecial +SynFold '%' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r("  end=")[imx]*"  skip="\\\\\|\\)"  contains=@crystalRegexpSpecial +SynFold '%' syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r|"  end="|[imx]*"  skip="\\\\\|\\|"  contains=@crystalRegexpSpecial + +" Normal String +let s:spell_cluster = exists('crystal_spellcheck_strings') ? ',@Spell' : '' +let s:fold_arg      = s:foldable('string') ? ' fold' : '' +exe 'syn region crystalString matchgroup=crystalStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@crystalStringSpecial' . s:spell_cluster . s:fold_arg +unlet s:spell_cluster s:fold_arg -" Normal String and Shell Command Output -syn region crystalString matchgroup=crystalStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@crystalStringSpecial,@Spell fold -syn region crystalString matchgroup=crystalStringDelimiter start="`"	end="`"  skip="\\\\\|\\`"  contains=@crystalStringSpecial fold +" Shell Command Output +SynFold 'string' syn region crystalString matchgroup=crystalStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@crystalStringSpecial  " Character  syn match crystalCharLiteral "'\%([^\\]\|\\[abefnrstv'\\]\|\\\o\{1,3}\|\\x\x\{1,2}\|\\u\x\{4}\)'" contains=crystalStringEscape display  " Generalized Single Quoted String, Symbol and Array of Strings -syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]{"				   end="}"   skip="\\\\\|\\}"	fold contains=crystalNestedCurlyBraces,crystalDelimEscape -syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]<"				   end=">"   skip="\\\\\|\\>"	fold contains=crystalNestedAngleBrackets,crystalDelimEscape -syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]\["				   end="\]"  skip="\\\\\|\\\]"	fold contains=crystalNestedSquareBrackets,crystalDelimEscape -syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]("				   end=")"   skip="\\\\\|\\)"	fold contains=crystalNestedParentheses,crystalDelimEscape -syn region crystalString matchgroup=crystalStringDelimiter start="%q "				   end=" "   skip="\\\\\|\\)"	fold -syn region crystalSymbol matchgroup=crystalSymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)"   end="\z1" skip="\\\\\|\\\z1" fold -syn region crystalSymbol matchgroup=crystalSymbolDelimiter start="%s{"				   end="}"   skip="\\\\\|\\}"	fold contains=crystalNestedCurlyBraces,crystalDelimEscape -syn region crystalSymbol matchgroup=crystalSymbolDelimiter start="%s<"				   end=">"   skip="\\\\\|\\>"	fold contains=crystalNestedAngleBrackets,crystalDelimEscape -syn region crystalSymbol matchgroup=crystalSymbolDelimiter start="%s\["				   end="\]"  skip="\\\\\|\\\]"	fold contains=crystalNestedSquareBrackets,crystalDelimEscape -syn region crystalSymbol matchgroup=crystalSymbolDelimiter start="%s("				   end=")"   skip="\\\\\|\\)"	fold contains=crystalNestedParentheses,crystalDelimEscape +syn region crystalNestedRawParentheses    matchgroup=crystalString start="("  end=")"  transparent contained +syn region crystalNestedRawCurlyBraces    matchgroup=crystalString start="{"  end="}"  transparent contained +syn region crystalNestedRawAngleBrackets  matchgroup=crystalString start="<"  end=">"  transparent contained +syn region crystalNestedRawSquareBrackets matchgroup=crystalString start="\[" end="\]" transparent contained + +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%q("  end=")"  contains=crystalNestedRawParentheses +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%q{"  end="}"  contains=crystalNestedRawCurlyBraces +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%q<"  end=">"  contains=crystalNestedRawAngleBrackets +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%q\[" end="\]" contains=crystalNestedRawSquareBrackets +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%q|"  end="|" + +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[wi]("  end=")"  skip="\\\\\|\\)"  contains=crystalNestedParentheses,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[wi]{"  end="}"  skip="\\\\\|\\}"  contains=crystalNestedCurlyBraces,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[wi]<"  end=">"  skip="\\\\\|\\>"  contains=crystalNestedAngleBrackets,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[wi]\[" end="\]" skip="\\\\\|\\\]" contains=crystalNestedSquareBrackets,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[wi]|"  end="|"  skip="\\\\\|\\|"  contains=crystalDelimEscape  " Generalized Double Quoted String and Array of Strings and Shell Command Output  " Note: %= is not matched here as the beginning of a double quoted string -syn region crystalString matchgroup=crystalStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)"	    end="\z1" skip="\\\\\|\\\z1" contains=@crystalStringSpecial fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[QWIx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@crystalStringSpecial fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[QWIx]\={"				    end="}"   skip="\\\\\|\\}"	 contains=@crystalStringSpecial,crystalNestedCurlyBraces,crystalDelimEscape    fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[QWIx]\=<"				    end=">"   skip="\\\\\|\\>"	 contains=@crystalStringSpecial,crystalNestedAngleBrackets,crystalDelimEscape  fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[QWIx]\=\["				    end="\]"  skip="\\\\\|\\\]"	 contains=@crystalStringSpecial,crystalNestedSquareBrackets,crystalDelimEscape fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[QWIx]\=("				    end=")"   skip="\\\\\|\\)"	 contains=@crystalStringSpecial,crystalNestedParentheses,crystalDelimEscape    fold -syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx] "				    end=" "   skip="\\\\\|\\)"   contains=@crystalStringSpecial fold +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx]\=("  end=")"  skip="\\\\\|\\)"  contains=@crystalStringSpecial,crystalNestedParentheses,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx]\={"  end="}"  skip="\\\\\|\\}"  contains=@crystalStringSpecial,crystalNestedCurlyBraces,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx]\=<"  end=">"  skip="\\\\\|\\>"  contains=@crystalStringSpecial,crystalNestedAngleBrackets,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@crystalStringSpecial,crystalNestedSquareBrackets,crystalDelimEscape +SynFold '%' syn region crystalString matchgroup=crystalStringDelimiter start="%[Qx]\=|"  end="|"  skip="\\\\\|\\|"  contains=@crystalStringSpecial,crystalDelimEscape  " Here Document -syn region crystalHeredocStart matchgroup=crystalStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+	 end=+$+ oneline contains=ALLBUT,@crystalNotTop +syn region crystalHeredocStart matchgroup=crystalStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@crystalNotTop  syn region crystalHeredocStart matchgroup=crystalStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@crystalNotTop  syn region crystalHeredocStart matchgroup=crystalStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@crystalNotTop  syn region crystalHeredocStart matchgroup=crystalStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@crystalNotTop -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc			fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2	matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial fold keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=crystalStringDelimiter end=+^\z1$+ contains=crystalHeredocStart,crystalHeredoc,@crystalStringSpecial keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3    matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart		     fold keepend -syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3  matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial fold keepend - -if exists('g:main_syntax') && g:main_syntax ==# 'ecrystal' -  let b:crystal_no_expensive = 1 -end +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart keepend +SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial keepend +" Module, Class, Method, and Alias Declarations  syn match crystalAliasDeclaration    "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite  syn match crystalAliasDeclaration2   "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable -syn match crystalMethodDeclaration   "[^[:space:];#(]\+"	 contained contains=crystalConstant,crystalFunction,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable -syn match crystalFunctionDeclaration "[^[:space:];#(=]\+"	 contained contains=crystalFunction -syn match crystalTypeDeclaration     "[^[:space:];#=]\+"	 contained contains=crystalTypeName -syn match crystalClassDeclaration    "[^[:space:];#<]\+"	 contained contains=crystalClassName,crystalOperator -syn match crystalModuleDeclaration   "[^[:space:];#]\+"		 contained contains=crystalModuleName,crystalOperator -syn match crystalStructDeclaration   "[^[:space:];#<]\+"	 contained contains=crystalStructName,crystalOperator -syn match crystalLibDeclaration      "[^[:space:];#]\+"		 contained contains=crystalLibName,crystalOperator -syn match crystalMacroDeclaration    "[^[:space:];#(]\+"	 contained contains=crystalFunction -syn match crystalEnumDeclaration     "[^[:space:];#<\"]\+"	 contained contains=crystalEnumName +syn match crystalMethodDeclaration   "[^[:space:];#(]\+"   contained contains=crystalConstant,crystalFunction,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable +syn match crystalFunctionDeclaration "[^[:space:];#(=]\+"  contained contains=crystalFunction +syn match crystalTypeDeclaration     "[^[:space:];#=]\+"   contained contains=crystalTypeName +syn match crystalClassDeclaration    "[^[:space:];#<]\+"   contained contains=crystalClassName,crystalOperator +syn match crystalModuleDeclaration   "[^[:space:];#]\+"    contained contains=crystalModuleName,crystalOperator +syn match crystalStructDeclaration   "[^[:space:];#<]\+"   contained contains=crystalStructName,crystalOperator +syn match crystalLibDeclaration      "[^[:space:];#]\+"    contained contains=crystalLibName,crystalOperator +syn match crystalMacroDeclaration    "[^[:space:];#(]\+"   contained contains=crystalFunction +syn match crystalEnumDeclaration     "[^[:space:];#<\"]\+" contained contains=crystalEnumName  syn match crystalFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=crystalMethodDeclaration,crystalFunctionDeclaration  syn match crystalFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2  syn match crystalFunction "\%([[:space:].]\|^\)\@<=\%(\[\][=?]\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2,crystalMethodDeclaration,crystalFunctionDeclaration @@ -200,59 +259,61 @@ syn cluster crystalDeclaration contains=crystalAliasDeclaration,crystalAliasDecl  " Keywords  " Note: the following keywords have already been defined:  " begin case class def do end for if module unless until while -syn match crystalControl	       "\<\%(break\|in\|next\|rescue\|return\)\>[?!]\@!" +syn match crystalControl        "\<\%(break\|in\|next\|rescue\|return\)\>[?!]\@!"  syn match crystalOperator       "\<defined?" display -syn match crystalKeyword	       "\<\%(super\|previous_def\|yield\|of\|with\|uninitialized\|union\)\>[?!]\@!" -syn match crystalBoolean	       "\<\%(true\|false\)\>[?!]\@!" +syn match crystalKeyword        "\<\%(super\|previous_def\|yield\|of\|with\|uninitialized\|union\)\>[?!]\@!" +syn match crystalBoolean        "\<\%(true\|false\)\>[?!]\@!"  syn match crystalPseudoVariable "\<\%(nil\|self\|__DIR__\|__FILE__\|__LINE__\|__END_LINE__\)\>[?!]\@!" " TODO: reorganise  " Expensive Mode - match 'end' with the appropriate opening keyword for syntax  " based folding and special highlighting of module/class/method definitions  if !exists('b:crystal_no_expensive') && !exists('g:crystal_no_expensive') -  syn match crystalDefine "\<alias\>"  nextgroup=crystalAliasDeclaration  skipwhite skipnl +  syn match crystalDefine "\<alias\>"  nextgroup=crystalAliasDeclaration skipwhite skipnl    syn match crystalDefine "\<def\>"    nextgroup=crystalMethodDeclaration skipwhite skipnl    syn match crystalDefine "\<fun\>"    nextgroup=crystalFunctionDeclaration skipwhite skipnl -  syn match crystalDefine "\<undef\>"  nextgroup=crystalFunction	     skipwhite skipnl +  syn match crystalDefine "\<undef\>"  nextgroup=crystalFunction skipwhite skipnl    syn match crystalDefine "\<\%(type\|alias\)\>\%(\s*\h\w*\s*=\)\@=" nextgroup=crystalTypeDeclaration skipwhite skipnl -  syn match crystalClass  "\<class\>"  nextgroup=crystalClassDeclaration  skipwhite skipnl +  syn match crystalClass  "\<class\>"  nextgroup=crystalClassDeclaration skipwhite skipnl    syn match crystalModule "\<module\>" nextgroup=crystalModuleDeclaration skipwhite skipnl    syn match crystalStruct "\<struct\>" nextgroup=crystalStructDeclaration skipwhite skipnl -  syn match crystalLib	  "\<lib\>" nextgroup=crystalLibDeclaration skipwhite skipnl -  syn match crystalMacro  "\<macro\>" nextgroup=crystalMacroDeclaration skipwhite skipnl -  syn match crystalEnum	  "\<enum\>" nextgroup=crystalEnumDeclaration skipwhite skipnl +  syn match crystalLib    "\<lib\>"    nextgroup=crystalLibDeclaration skipwhite skipnl +  syn match crystalMacro  "\<macro\>"  nextgroup=crystalMacroDeclaration skipwhite skipnl +  syn match crystalEnum   "\<enum\>"   nextgroup=crystalEnumDeclaration skipwhite skipnl -  syn region crystalMethodBlock start="\<\%(def\|macro\)\>"	matchgroup=crystalDefine end="\%(\<\%(def\|macro\)\_s\+\)\@<!\<end\>" contains=ALLBUT,@crystalNotTop fold -  syn region crystalBlock	     start="\<class\>"	matchgroup=crystalClass  end="\<end\>"		       contains=ALLBUT,@crystalNotTop fold -  syn region crystalBlock	     start="\<module\>" matchgroup=crystalModule end="\<end\>"		       contains=ALLBUT,@crystalNotTop fold -  syn region crystalBlock	     start="\<struct\>" matchgroup=crystalStruct end="\<end\>"		       contains=ALLBUT,@crystalNotTop fold -  syn region crystalBlock	     start="\<lib\>" matchgroup=crystalLib    end="\<end\>"		       contains=ALLBUT,@crystalNotTop fold -  syn region crystalBlock	     start="\<enum\>" matchgroup=crystalEnum    end="\<end\>"		       contains=ALLBUT,@crystalNotTop fold +  SynFold 'def'    syn region crystalMethodBlock start="\<\%(def\|macro\)\>" matchgroup=crystalDefine end="\%(\<\%(def\|macro\)\_s\+\)\@<!\<end\>"  contains=ALLBUT,@crystalNotTop +  SynFold 'class'  syn region crystalBlock       start="\<class\>"           matchgroup=crystalClass  end="\<end\>"                                 contains=ALLBUT,@crystalNotTop +  SynFold 'module' syn region crystalBlock       start="\<module\>"          matchgroup=crystalModule end="\<end\>"                                 contains=ALLBUT,@crystalNotTop +  SynFold 'struct' syn region crystalBlock       start="\<struct\>"          matchgroup=crystalStruct end="\<end\>"                                 contains=ALLBUT,@crystalNotTop +  SynFold 'lib'    syn region crystalBlock       start="\<lib\>"             matchgroup=crystalLib    end="\<end\>"                                 contains=ALLBUT,@crystalNotTop +  SynFold 'enum'   syn region crystalBlock       start="\<enum\>"            matchgroup=crystalEnum   end="\<end\>"                                 contains=ALLBUT,@crystalNotTop    " modifiers -  syn match crystalConditionalModifier "\<\%(if\|unless\|ifdef\)\>"    display -  syn match crystalRepeatModifier	     "\<\%(while\|until\)\>" display +  syn match crystalConditionalModifier "\<\%(if\|unless\|ifdef\)\>" display +  syn match crystalRepeatModifier      "\<\%(while\|until\)\>" display + +  SynFold 'do' syn region crystalDoBlock matchgroup=crystalControl start="\<do\>" end="\<end\>" contains=ALLBUT,@crystalNotTop -  syn region crystalDoBlock      matchgroup=crystalControl start="\<do\>" end="\<end\>"                 contains=ALLBUT,@crystalNotTop fold    " curly bracket block or hash literal -  syn region crystalCurlyBlock	matchgroup=crystalCurlyBlockDelimiter  start="{" end="}"				contains=ALLBUT,@crystalNotTop fold -  syn region crystalArrayLiteral	matchgroup=crystalArrayDelimiter	    start="\%(\w\|[\]})]\)\@<!\[" end="]"	contains=ALLBUT,@crystalNotTop fold +  SynFold '{' syn region crystalCurlyBlock   matchgroup=crystalCurlyBlockDelimiter start="{"                     end="}" contains=ALLBUT,@crystalNotTop +  SynFold '[' syn region crystalArrayLiteral matchgroup=crystalArrayDelimiter      start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@crystalNotTop    " statements without 'do' -  syn region crystalBlockExpression  matchgroup=crystalControl     start="\<begin\>"  end="\<end\>" contains=ALLBUT,@crystalNotTop fold -  syn region crystalCaseExpression   matchgroup=crystalConditional start="\<case\>"   end="\<end\>" contains=ALLBUT,@crystalNotTop fold -  syn region crystalSelectExpression matchgroup=crystalConditional start="\<select\>" end="\<end\>" contains=ALLBUT,@crystalNotTop fold -  syn region crystalConditionalExpression matchgroup=crystalConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|ifdef\|unless\)\>" end="\%(\%(\%(\.\@<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@crystalNotTop fold +  SynFold 'begin'  syn region crystalBlockExpression       matchgroup=crystalControl     start="\<begin\>"  end="\<end\>" contains=ALLBUT,@crystalNotTop +  SynFold 'case'   syn region crystalCaseExpression        matchgroup=crystalConditional start="\<case\>"   end="\<end\>" contains=ALLBUT,@crystalNotTop +  SynFold 'select' syn region crystalSelectExpression      matchgroup=crystalConditional start="\<select\>" end="\<end\>" contains=ALLBUT,@crystalNotTop +  SynFold 'if'     syn region crystalConditionalExpression matchgroup=crystalConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|ifdef\|unless\)\>" end="\%(\%(\%(\.\@<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@crystalNotTop -  syn match crystalConditional "\<\%(then\|else\|when\)\>[?!]\@!"  contained containedin=crystalCaseExpression -  syn match crystalConditional "\<\%(when\|else\)\>[?!]\@!"        contained containedin=crystalSelectExpression +  syn match crystalConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=crystalCaseExpression +  syn match crystalConditional "\<\%(when\|else\)\>[?!]\@!" contained containedin=crystalSelectExpression    syn match crystalConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=crystalConditionalExpression -  syn match crystalExceptional	  "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=crystalBlockExpression +  syn match crystalExceptional       "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=crystalBlockExpression    syn match crystalMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=crystalMethodBlock    " statements with optional 'do' -  syn region crystalOptionalDoLine   matchgroup=crystalRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=crystalOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@crystalNotTop -  syn region crystalRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=crystalRepeat end="\<end\>" contains=ALLBUT,@crystalNotTop nextgroup=crystalOptionalDoLine fold +  syn region crystalOptionalDoLine matchgroup=crystalRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=crystalOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@crystalNotTop + +  SynFold 'for' syn region crystalRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=crystalRepeat end="\<end\>" contains=ALLBUT,@crystalNotTop nextgroup=crystalOptionalDoLine    if !exists('g:crystal_minlines')      let g:crystal_minlines = 500 @@ -260,23 +321,24 @@ if !exists('b:crystal_no_expensive') && !exists('g:crystal_no_expensive')    exec 'syn sync minlines=' . g:crystal_minlines  else +  " Non-expensive mode    syn match crystalControl "\<def\>[?!]\@!"    nextgroup=crystalMethodDeclaration skipwhite skipnl    syn match crystalControl "\<fun\>[?!]\@!"    nextgroup=crystalFunctionDeclaration skipwhite skipnl    syn match crystalControl "\<class\>[?!]\@!"  nextgroup=crystalClassDeclaration  skipwhite skipnl    syn match crystalControl "\<module\>[?!]\@!" nextgroup=crystalModuleDeclaration skipwhite skipnl    syn match crystalControl "\<struct\>[?!]\@!" nextgroup=crystalStructDeclaration skipwhite skipnl    syn match crystalControl "\<lib\>[?!]\@!"    nextgroup=crystalLibDeclaration skipwhite skipnl -  syn match crystalControl "\<macro\>[?!]\@!"    nextgroup=crystalMacroDeclaration skipwhite skipnl -  syn match crystalControl "\<enum\>[?!]\@!"    nextgroup=crystalEnumDeclaration skipwhite skipnl +  syn match crystalControl "\<macro\>[?!]\@!"  nextgroup=crystalMacroDeclaration skipwhite skipnl +  syn match crystalControl "\<enum\>[?!]\@!"   nextgroup=crystalEnumDeclaration skipwhite skipnl    syn match crystalControl "\<\%(case\|begin\|do\|for\|if\|ifdef\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"    syn match crystalKeyword "\<\%(alias\|undef\)\>[?!]\@!"  endif  " Link attribute -syn region crystalLinkAttrRegion start="@\[" nextgroup=crystalLinkAttrRegionInner end="]" contains=crystalLinkAttr,crystalLinkAttrRegionInner transparent display oneline +syn region crystalLinkAttrRegion      start="@\[" nextgroup=crystalLinkAttrRegionInner end="]" contains=crystalLinkAttr,crystalLinkAttrRegionInner transparent display oneline  syn region crystalLinkAttrRegionInner start="\%(@\[\)\@<=" end="]\@=" contained contains=ALLBUT,@crystalNotTop transparent display oneline -syn match crystalLinkAttr "@\[" contained containedin=crystalLinkAttrRegion display -syn match crystalLinkAttr "]" contained containedin=crystalLinkAttrRegion display +syn match  crystalLinkAttr            "@\[" contained containedin=crystalLinkAttrRegion display +syn match  crystalLinkAttr            "]" contained containedin=crystalLinkAttrRegion display  " Special Methods  if !exists('g:crystal_no_special_methods') @@ -294,110 +356,112 @@ if !exists('g:crystal_no_special_methods')  endif  " Macro -syn region crystalMacroRegion start="{%" end="%}" contains=ALLBUT,@crystalNotTop transparent display oneline -syn region crystalMacroRegion start="{{" end="}}" contains=ALLBUT,@crystalNotTop transparent display oneline -syn match crystalMacro "\%({%\|%}\|{{\|}}\)" nextgroup=crystalMacroRegion skipwhite display +" Note: This definition must be put after crystalNestedCurlyBraces to give higher priority +syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={%" end="%}" oneline display contains=ALLBUT,@crystalNotTop containedin=ALL +syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={{" end="}}" oneline display contains=ALLBUT,@crystalNotTop containedin=ALL  " Comments and Documentation  syn match   crystalSharpBang "\%^#!.*" display -syn keyword crystalTodo	  FIXME NOTE TODO OPTIMIZE XXX todo contained +syn keyword crystalTodo      FIXME NOTE TODO OPTIMIZE XXX todo contained  syn match   crystalComment   "#.*" contains=crystalSharpBang,crystalSpaceError,crystalTodo,@Spell -if !exists('g:crystal_no_comment_fold') -  syn region crystalMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=crystalComment transparent fold keepend -endif + +SynFold '#' syn region crystalMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=crystalComment transparent keepend  " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|begin\|break\|case\|class\|def\|defined\|do\|else\|select\)\>"		  transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|ifdef\|in\|module\|next\|nil\)\>"		  transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(rescue\|return\|self\|super\|previous_def\|then\|true\)\>"		  transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|begin\|break\|case\|class\|def\|defined\|do\|else\|select\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|ifdef\|in\|module\|next\|nil\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(rescue\|return\|self\|super\|previous_def\|then\|true\)\>" transparent contains=NONE  syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|with\|__FILE__\|__LINE__\)\>" transparent contains=NONE  syn match crystalKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE  syn match crystalKeywordAsMethod "\<\%(if\|ifdef\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|caller\|exit\)\>"		transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fork\|include\|asm\)\>"			transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(loop\|private\|protected\)\>"		transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(require\|raise\)\>"	transparent contains=NONE -syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(typeof\|pointerof\|sizeof\|instance_sizeof\|\)\>"	transparent contains=NONE - -hi def link crystalClass		crystalDefine -hi def link crystalModule		crystalDefine -hi def link crystalStruct		crystalDefine -hi def link crystalLib			crystalDefine -hi def link crystalMacro		crystalDefine -hi def link crystalEnum			crystalDefine -hi def link crystalMethodExceptional	crystalDefine -hi def link crystalDefine		Define -hi def link crystalFunction		Function -hi def link crystalConditional		Conditional -hi def link crystalConditionalModifier	crystalConditional -hi def link crystalExceptional		crystalConditional -hi def link crystalRepeat		Repeat -hi def link crystalRepeatModifier	crystalRepeat -hi def link crystalOptionalDo		crystalRepeat -hi def link crystalControl		Statement -hi def link crystalInclude		Include -hi def link crystalRecord		Statement -hi def link crystalInteger		Number -hi def link crystalASCIICode		Character -hi def link crystalFloat		Float -hi def link crystalBoolean		Boolean -hi def link crystalException		Exception +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|caller\|exit\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fork\|include\|asm\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(loop\|private\|protected\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(require\|raise\)\>" transparent contains=NONE +syn match crystalKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(typeof\|pointerof\|sizeof\|instance_sizeof\|\)\>" transparent contains=NONE + +hi def link crystalClass               crystalDefine +hi def link crystalModule              crystalDefine +hi def link crystalStruct              crystalDefine +hi def link crystalLib                 crystalDefine +hi def link crystalEnum                crystalDefine +hi def link crystalMethodExceptional   crystalDefine +hi def link crystalDefine              Define +hi def link crystalFunction            Function +hi def link crystalConditional         Conditional +hi def link crystalConditionalModifier crystalConditional +hi def link crystalExceptional         crystalConditional +hi def link crystalRepeat              Repeat +hi def link crystalRepeatModifier      crystalRepeat +hi def link crystalOptionalDo          crystalRepeat +hi def link crystalControl             Statement +hi def link crystalInclude             Include +hi def link crystalRecord              Statement +hi def link crystalInteger             Number +hi def link crystalASCIICode           Character +hi def link crystalFloat               Float +hi def link crystalBoolean             Boolean +hi def link crystalException           Exception  if !exists('g:crystal_no_identifiers') -  hi def link crystalIdentifier		Identifier +  hi def link crystalIdentifier Identifier  else -  hi def link crystalIdentifier		NONE +  hi def link crystalIdentifier NONE  endif -hi def link crystalClassVariable	crystalIdentifier -hi def link crystalConstant		Type -hi def link crystalTypeName		crystalConstant -hi def link crystalClassName		crystalConstant -hi def link crystalModuleName		crystalConstant -hi def link crystalStructName		crystalConstant -hi def link crystalLibName		crystalConstant -hi def link crystalEnumName		crystalConstant -hi def link crystalGlobalVariable	crystalIdentifier -hi def link crystalBlockParameter	crystalIdentifier -hi def link crystalInstanceVariable	crystalIdentifier -hi def link crystalFreshVariable	crystalIdentifier -hi def link crystalPredefinedIdentifier	crystalIdentifier -hi def link crystalPredefinedConstant	crystalPredefinedIdentifier -hi def link crystalPredefinedVariable	crystalPredefinedIdentifier -hi def link crystalSymbol		Constant -hi def link crystalKeyword		Keyword -hi def link crystalOperator		Operator -hi def link crystalAccess		Statement -hi def link crystalAttribute		Statement -hi def link crystalPseudoVariable	Constant -hi def link crystalCharLiteral		Character -hi def link crystalComment		Comment -hi def link crystalTodo			Todo -hi def link crystalStringEscape		Special -hi def link crystalInterpolationDelim	Delimiter -hi def link crystalNoInterpolation	crystalString -hi def link crystalSharpBang		PreProc -hi def link crystalRegexpDelimiter	crystalStringDelimiter -hi def link crystalSymbolDelimiter	crystalStringDelimiter -hi def link crystalStringDelimiter	Delimiter -hi def link crystalString		String -hi def link crystalHeredoc		crystalString -hi def link crystalRegexpEscape		crystalRegexpSpecial -hi def link crystalRegexpQuantifier	crystalRegexpSpecial -hi def link crystalRegexpAnchor		crystalRegexpSpecial -hi def link crystalRegexpDot		crystalRegexpCharClass -hi def link crystalRegexpCharClass	crystalRegexpSpecial -hi def link crystalRegexpSpecial	Special -hi def link crystalRegexpComment	Comment -hi def link crystalRegexp		crystalString -hi def link crystalMacro		PreProc -hi def link crystalLinkAttr		crystalMacro -hi def link crystalError		Error -hi def link crystalInvalidVariable	crystalError -hi def link crystalSpaceError		crystalError +hi def link crystalClassVariable        crystalIdentifier +hi def link crystalConstant             Type +hi def link crystalTypeName             crystalConstant +hi def link crystalClassName            crystalConstant +hi def link crystalModuleName           crystalConstant +hi def link crystalStructName           crystalConstant +hi def link crystalLibName              crystalConstant +hi def link crystalEnumName             crystalConstant +hi def link crystalGlobalVariable       crystalIdentifier +hi def link crystalBlockParameter       crystalIdentifier +hi def link crystalInstanceVariable     crystalIdentifier +hi def link crystalFreshVariable        crystalIdentifier +hi def link crystalPredefinedIdentifier crystalIdentifier +hi def link crystalPredefinedConstant   crystalPredefinedIdentifier +hi def link crystalPredefinedVariable   crystalPredefinedIdentifier +hi def link crystalSymbol               Constant +hi def link crystalKeyword              Keyword +hi def link crystalOperator             Operator +hi def link crystalAccess               Statement +hi def link crystalAttribute            Statement +hi def link crystalPseudoVariable       Constant +hi def link crystalCharLiteral          Character +hi def link crystalComment              Comment +hi def link crystalTodo                 Todo +hi def link crystalStringEscape         Special +hi def link crystalInterpolationDelim   Delimiter +hi def link crystalNoInterpolation      crystalString +hi def link crystalSharpBang            PreProc +hi def link crystalRegexpDelimiter      crystalStringDelimiter +hi def link crystalSymbolDelimiter      crystalStringDelimiter +hi def link crystalStringDelimiter      Delimiter +hi def link crystalString               String +hi def link crystalHeredoc              crystalString +hi def link crystalRegexpEscape         crystalRegexpSpecial +hi def link crystalRegexpQuantifier     crystalRegexpSpecial +hi def link crystalRegexpAnchor         crystalRegexpSpecial +hi def link crystalRegexpDot            crystalRegexpCharClass +hi def link crystalRegexpCharClass      crystalRegexpSpecial +hi def link crystalRegexpSpecial        Special +hi def link crystalRegexpComment        Comment +hi def link crystalRegexp               crystalString +hi def link crystalMacro                PreProc +hi def link crystalMacroDelim           crystalMacro +hi def link crystalLinkAttr             crystalMacro +hi def link crystalError                Error +hi def link crystalInvalidVariable      crystalError +hi def link crystalSpaceError           crystalError +hi def link crystalInvalidInteger       crystalError  let b:current_syntax = 'crystal' -" vim: nowrap sw=2 sts=2 ts=8 noet: +delc SynFold + +" vim: nowrap sw=2 sts=2:  endif diff --git a/syntax/elixir.vim b/syntax/elixir.vim index dac6c181..054ddd3e 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -20,7 +20,7 @@ syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained  syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable -syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|after\|rescue\|catch\|else\|quote\|unquote\|super\|unquote_splicing\)\>:\@!' +syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|after\|raise\|rescue\|catch\|else\|quote\|unquote\|super\|unquote_splicing\)\>:\@!'  syn keyword elixirInclude import require alias use diff --git a/syntax/julia.vim b/syntax/julia.vim index 433c6234..52711062 100644 --- a/syntax/julia.vim +++ b/syntax/julia.vim @@ -25,24 +25,6 @@ endif  scriptencoding utf-8 -if !exists("b:julia_syntax_version") -  let b:julia_syntax_version = get(g:, "default_julia_version", "current") -endif -if !exists("b:julia_syntax_highlight_deprecated") -  let b:julia_syntax_highlight_deprecated = get(g:, "julia_syntax_highlight_deprecated", 0) -endif - -if b:julia_syntax_version =~? '\<\%(curr\%(ent\)\?\|release\|7\|0\.7\|10\|1.0\)\>' -  let b:julia_syntax_version = 10 -elseif b:julia_syntax_version =~? '\<\%(next\|devel\|11\|1\.1\)\>' -  let b:julia_syntax_version = 11 -elseif b:julia_syntax_version =~? '\<\%(prev\%(ious\)\?\|legacy\|6\|0\.6\)\>' -  let b:julia_syntax_version = 6 -else -  echohl WarningMsg | echomsg "Unrecognized or unsupported julia syntax version: " . b:julia_syntax_version | echohl None -  let b:julia_syntax_version = 10 -endif -  let s:julia_spellcheck_strings = get(g:, "julia_spellcheck_strings", 0)  let s:julia_spellcheck_docstrings = get(g:, "julia_spellcheck_docstrings", 1)  let s:julia_spellcheck_comments = get(g:, "julia_spellcheck_comments", 1) @@ -96,24 +78,10 @@ syntax cluster juliaExprsPrintf		contains=@juliaExpressions,@juliaPrintfItems  syntax cluster juliaParItems		contains=juliaParBlock,juliaSqBraBlock,juliaCurBraBlock,juliaQuotedParBlock,juliaQuotedQMarkPar  syntax cluster juliaKeywordItems	contains=juliaKeyword,juliaInfixKeyword,juliaRepKeyword,juliaTypedef -syntax cluster juliaBlocksItems	        contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaTypeBlock,juliaImmutableBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock -if b:julia_syntax_version == 6 -  syntax cluster juliaTypesItems	contains=@juliaTypesItemsAll,@juliaTypesItems06 -else -  syntax cluster juliaTypesItems	contains=@juliaTypesItemsAll,@juliaTypesItems06,@juliaTypesItems1011 -endif -syntax cluster juliaTypesItemsAll	contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther -syntax cluster juliaTypesItems06	contains=juliaBaseTypeNum06,juliaBaseTypeRange06,juliaBaseTypeDict06,juliaBaseTypeSet06 -syntax cluster juliaTypesItems1011	contains=juliaBaseTypeBasic1011,juliaBaseTypeNum1011,juliaBaseTypeError1011,juliaBaseTypeIter1011,juliaBaseTypeRange1011,juliaBaseTypeArray1011,juliaBaseTypeDict1011,juliaBaseTypeSet1011,juliaBaseTypeC1011,juliaBaseTypeDisplay1011,juliaBaseTypeIO1011,juliaBaseTypeString1011 - -syntax cluster juliaConstItemsAll	contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric -syntax cluster juliaConstItems06	contains=juliaConstNum06,juliaConstIO06 -syntax cluster juliaConstItems1011	contains=juliaConstGeneric1011,juliaPossibleEuler,juliaConstEnv1011,juliaConstIO1011 -if b:julia_syntax_version == 6 -  syntax cluster juliaConstItems	contains=@juliaConstItemsAll,@juliaConstItems06 -else -  syntax cluster juliaConstItems	contains=@juliaConstItemsAll,@juliaConstItems06,@juliaConstItems1011 -endif +syntax cluster juliaBlocksItems		contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaTypeBlock,juliaImmutableBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock +syntax cluster juliaTypesItems		contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther + +syntax cluster juliaConstItems  	contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric,juliaConstIO,juliaPossibleEuler  syntax cluster juliaMacroItems		contains=juliaPossibleMacro,juliaDollarVar,juliaDollarPar,juliaDollarSqBra  syntax cluster juliaSymbolItems		contains=juliaPossibleSymbol @@ -124,18 +92,18 @@ syntax cluster juliaOperatorItems	contains=juliaOperator,juliaRangeOperator,juli  syntax cluster juliaCommentItems	contains=juliaCommentL,juliaCommentM  syntax cluster juliaErrorItems		contains=juliaErrorPar,juliaErrorEnd,juliaErrorElse,juliaErrorCatch,juliaErrorFinally -syntax cluster juliaSpellcheckStrings	        contains=@spell +syntax cluster juliaSpellcheckStrings		contains=@spell  syntax cluster juliaSpellcheckDocStrings	contains=@spell -syntax cluster juliaSpellcheckComments	        contains=@spell +syntax cluster juliaSpellcheckComments		contains=@spell  if !s:julia_spellcheck_docstrings -  syntax cluster juliaSpellcheckDocStrings      remove=@spell +  syntax cluster juliaSpellcheckDocStrings	remove=@spell  endif  if !s:julia_spellcheck_strings -  syntax cluster juliaSpellcheckStrings remove=@spell +  syntax cluster juliaSpellcheckStrings		remove=@spell  endif  if !s:julia_spellcheck_comments -  syntax cluster juliaSpellcheckComments        remove=@spell +  syntax cluster juliaSpellcheckComments	remove=@spell  endif  syntax match   juliaSemicolon		display ";" @@ -172,10 +140,6 @@ exec 'syntax region  juliaBeginBlock		matchgroup=juliaBlKeyword start="'.s:nodot  exec 'syntax region  juliaFunctionBlock	matchgroup=juliaBlKeyword start="'.s:nodot.'\<function\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'  exec 'syntax region  juliaMacroBlock		matchgroup=juliaBlKeyword start="'.s:nodot.'\<macro\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'  exec 'syntax region  juliaQuoteBlock		matchgroup=juliaBlKeyword start="'.s:nodot.'\<quote\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' -if b:julia_syntax_version <= 10 -  exec 'syntax region  juliaTypeBlock		matchgroup=juliaBlKeyword06 start="'.s:nodot.'\<type\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' -  exec 'syntax region  juliaImmutableBlock	matchgroup=juliaBlKeyword06 start="'.s:nodot.'\<immutable\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' -endif  exec 'syntax region  juliaStructBlock		matchgroup=juliaBlKeyword start="'.s:nodot.'\<struct\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'  exec 'syntax region  juliaMutableStructBlock	matchgroup=juliaBlKeyword start="'.s:nodot.'\<mutable struct\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'  exec 'syntax region  juliaLetBlock		matchgroup=juliaBlKeyword start="'.s:nodot.'\<let\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' @@ -192,64 +156,43 @@ exec 'syntax region  juliaPrimitiveBlock	matchgroup=juliaBlKeyword start="'.s:no  exec 'syntax region  juliaComprehensionFor	matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'  exec 'syntax match   juliaComprehensionIf	contained "'.s:nodot.'\<if\>"' -exec 'syntax match   juliaOuter    contained "\<outer\ze\s\+' . s:idregex . '\>"' - -syntax match   juliaBaseTypeBasic	display "\<\%(Tuple\|NTuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\)\>" -syntax match   juliaBaseTypeBasic06	display "\<\%(Void\|\%(Label\|Goto\)Node\|Associative\|MethodTable\|Nullable\|TypeMap\%(Level\|Entry\)\|CodeInfo\)\>" -syntax match   juliaBaseTypeBasic1011	display "\<\%(Nothing\|Some\|Missing\|NamedTuple\)\>" -syntax match   juliaBaseTypeNum		display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|Irrational\|Enum\|BigInt\|BigFloat\|MathConst\)\>" -syntax match   juliaBaseTypeNum06	display "\<Complex\%(32\|64\|128\)\>" -syntax match   juliaBaseTypeNum1011	display "\<\%(AbstractIrrational\|ComplexF\%(16\|32\|64\)\)\>" -syntax match   juliaBaseTypeC		display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\)\)\>" -syntax match   juliaBaseTypeC1011	display "\<Cvoid\>" -syntax match   juliaBaseTypeError	display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|Unicode\|ReadOnlyMemory\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Null\|Remote\)Exception\|DimensionMismatch\|SegmentationFault\)\>" -syntax match   juliaBaseTypeError1011	display "\<\%(StringIndexError\|MissingException\)\>" -syntax match   juliaBaseTypeIter	display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\)\>" -syntax match   juliaBaseTypeIter1011	display "\<CartesianIndices\>" -syntax match   juliaBaseTypeString	display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\)\?String\>" -syntax match   juliaBaseTypeString1011	display "\<SubstitutionString\>" -syntax match   juliaBaseTypeArray	display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|SparseVector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|RowVector\)\>" -syntax match   juliaBaseTypeArray1011	display "\<\%(Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>" -syntax match   juliaBaseTypeDict	display "\<\%(WeakKey\)\?Dict\>" -syntax match   juliaBaseTypeDict06	display "\<ObjectIdDict\>" -syntax match   juliaBaseTypeDict1011	display "\<IdDict\>" -syntax match   juliaBaseTypeSet		display "\<\%(Set\|AbstractSet\)\>" -syntax match   juliaBaseTypeSet06	display "\<IntSet\>" -syntax match   juliaBaseTypeSet1011	display "\<\%(BitSet\|AbstractDict\)\>" -syntax match   juliaBaseTypeIO		display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\)\>" -syntax match   juliaBaseTypeIO1011	display "\<GenericIOBuffer\>" +exec 'syntax match   juliaOuter		contained "\<outer\ze\s\+' . s:idregex . '\>"' + +syntax match   juliaBaseTypeBasic	display "\<\%(\%(N\|Named\)\?Tuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\|Nothing\|Some\|Missing\)\>" +syntax match   juliaBaseTypeNum		display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|\%(Abstract\)\?Irrational\|Enum\|BigInt\|BigFloat\|MathConst\|ComplexF\%(16\|32\|64\)\)\>" +syntax match   juliaBaseTypeC		display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\|void\)\)\>" +syntax match   juliaBaseTypeError	display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|ReadOnlyMemory\|StringIndex\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Missing\|\%(Process\|Task\)Failed\)Exception\|DimensionMismatch\|SegmentationFault\)\>" +syntax match   juliaBaseTypeIter	display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\|CartesianIndices\)\>" +syntax match   juliaBaseTypeString	display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\|Substitution\)\?String\>" +syntax match   juliaBaseTypeArray	display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|\%(Sparse\|Row\)Vector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>" +syntax match   juliaBaseTypeDict	display "\<\%(WeakKey\|Id\|Abstract\)\?Dict\>" +syntax match   juliaBaseTypeSet		display "\<\%(\%(Abstract\|Bit\)\?Set\)\>" +syntax match   juliaBaseTypeIO		display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\|GenericIOBuffer\)\>"  syntax match   juliaBaseTypeProcess	display "\<\%(Pipe\|Cmd\|PipeBuffer\)\>" -syntax match   juliaBaseTypeRange	display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>" -syntax match   juliaBaseTypeRange06	display "\<Range\>" -syntax match   juliaBaseTypeRange1011	display "\<\(Abstract\|Lin\)Range\>" +syntax match   juliaBaseTypeRange	display "\<\%(Dims\|RangeIndex\|\%(Abstract\|Lin\|Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>"  syntax match   juliaBaseTypeRegex	display "\<Regex\%(Match\)\?\>"  syntax match   juliaBaseTypeFact	display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"  syntax match   juliaBaseTypeSort	display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"  syntax match   juliaBaseTypeRound	display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"  syntax match   juliaBaseTypeSpecial	display "\<\%(LocalProcess\|ClusterManager\)\>"  syntax match   juliaBaseTypeRandom	display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>" -syntax match   juliaBaseTypeDisplay	display "\<\%(Text\(Display\)\?\|Display\|MIME\|HTML\)\>" -syntax match   juliaBaseTypeDisplay1011	display "\<AbstractDisplay\>" +syntax match   juliaBaseTypeDisplay	display "\<\%(Text\(Display\)\?\|\%(Abstract\)\?Display\|MIME\|HTML\)\>"  syntax match   juliaBaseTypeTime	display "\<\%(Date\%(Time\)\?\|DateFormat\)\>"  syntax match   juliaBaseTypeOther	display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"  syntax match   juliaConstNum		display "\%(\<\%(\%(NaN\|Inf\)\%(16\|32\|64\)\?\|pi\|π\)\>\)" -syntax match   juliaConstNum06  	display "\%(\<\%(eu\?\|eulergamma\|γ\|catalan\|φ\|golden\)\>\)"  " Note: recognition of ℯ, which Vim does not consider a valid identifier, is  " complicated. We detect possible uses by just looking for the character (for  " performance) and then check that it's actually used by its own.  " (This also tries to detect preceding number constants; it does so in a crude  " way.)  syntax match   juliaPossibleEuler	"ℯ" contains=juliaEuler -exec 'syntax match   juliaEuler	        contained "\%(\%(^\|[' . s:nonidS_chars . ']\|' . s:operators . '\)\%([.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze\%($\|[' . s:nonidS_chars . ']\|' . s:operators . '\)"' +exec 'syntax match   juliaEuler		contained "\%(\%(^\|[' . s:nonidS_chars . ']\|' . s:operators . '\)\%([.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze\%($\|[' . s:nonidS_chars . ']\|' . s:operators . '\)"'  syntax match   juliaConstBool		display "\<\%(true\|false\)\>" -syntax match   juliaConstEnv		display "\<\%(ARGS\|ENV\|OS_NAME\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|JULIA_HOME\|PROGRAM_FILE\)\>" -syntax match   juliaConstEnv1011	display "\<DEPOT_PATH\>" -syntax match   juliaConstIO06		display "\<\%(STD\%(OUT\|IN\|ERR\)\|DevNull\)\>" -syntax match   juliaConstIO1011		display "\<\%(std\%(out\|in\|err\)\|devnull\)\>" -syntax match   juliaConstC		display "\<\%(WORD_SIZE\|C_NULL\)\>" -syntax match   juliaConstGeneric	display "\<\%(nothing\|Main\)\>" -syntax match   juliaConstGeneric1011	display "\<\%(undef\|missing\)\>" +syntax match   juliaConstEnv		display "\<\%(ARGS\|ENV\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|PROGRAM_FILE\|DEPOT_PATH\)\>" +syntax match   juliaConstIO		display "\<\%(std\%(out\|in\|err\)\|devnull\)\>" +syntax match   juliaConstC		display "\<\%(C_NULL\)\>" +syntax match   juliaConstGeneric	display "\<\%(nothing\|Main\|undef\|missing\)\>"  syntax match   juliaPossibleMacro	transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro @@ -301,7 +244,7 @@ syntax match   juliaComplexUnit		display	contained "\<im\>"  exec 'syntax match   juliaOperator	"' . s:operators . '"'  syntax match   juliaRangeOperator	display ":" -exec 'syntax region  juliaTernaryRegion	matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|^\s*:\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol' +exec 'syntax region  juliaTernaryRegion	matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol'  let s:interp_dollar = '\([' . s:nonidS_chars . s:uniop_chars . s:binop_chars . '!?]\|^\)\@'.s:d(1).'<=\$' @@ -369,7 +312,7 @@ syntax match   juliaPrintfFmt		display contained "\\%%"hs=s+1  " this is used to restrict the search for Symbols to when colons appear at all  " (for performance reasons) -syntax match   juliaPossibleSymbol      transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon +syntax match   juliaPossibleSymbol	transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon  let s:quotable = '\%(' . s:idregex . '\|?\|' . s:operators . '\|' . s:float_regex . '\|' . s:int_regex . '\)'  let s:quoting_colon = '\%(\%(^\s*\|\s\{6,\}\|[' . s:nonid_chars . s:uniop_chars . s:binop_chars . '?]\s*\)\@'.s:d(6).'<=\|\%(\<\%(return\|if\|else\%(if\)\?\|while\|try\|begin\)\s*\)\@'.s:d(9).'<=\)\zs:' @@ -405,7 +348,7 @@ syntax keyword juliaTodo		contained TODO FIXME XXX  "   :hi link juliaParDelim Delimiter  hi def link juliaParDelim		juliaNone  hi def link juliaSemicolon		juliaNone -hi def link juliaComma  		juliaNone +hi def link juliaComma			juliaNone  hi def link juliaColon			juliaOperator @@ -414,12 +357,11 @@ hi def link juliaKeyword		Keyword  hi def link juliaInfixKeyword		Keyword  hi def link juliaRepKeyword		Keyword  hi def link juliaBlKeyword		Keyword -exec 'hi! def link juliaBlKeyword06 ' . (b:julia_syntax_version == 6 ? 'Keyword' : b:julia_syntax_version == 10 ? 'juliaDeprecated' : 'NONE')  hi def link juliaConditional		Conditional  hi def link juliaRepeat			Repeat  hi def link juliaException		Exception  hi def link juliaTypedef		Keyword -exec 'hi! def link juliaOuter ' . (b:julia_syntax_version >= 10 ? 'Keyword' : 'NONE') +hi def link juliaOuter			Keyword  hi def link juliaBaseTypeBasic		Type  hi def link juliaBaseTypeNum		Type  hi def link juliaBaseTypeC		Type @@ -441,24 +383,13 @@ hi def link juliaBaseTypeRandom		Type  hi def link juliaBaseTypeDisplay	Type  hi def link juliaBaseTypeTime		Type  hi def link juliaBaseTypeOther		Type -for t in ["Num", "Range", "Dict", "Set"] -  let h = b:julia_syntax_version == 6 ? "Type" : b:julia_syntax_version == 10 ? "juliaDeprecated" : "NONE" -  exec "hi! def link juliaBaseType" . t . "06 " . h -endfor -for t in ["Range", "Dict", "Set", "Basic", "C", "Array", "Iter", "Display", "IO", "Num", "Error", "String"] -  let h = b:julia_syntax_version >= 10 ? "Type" : "NONE" -  exec "hi! def link juliaBaseType" . t . "1011 " . h -endfor  " NOTE: deprecated constants are not highlighted as such. For once,  " one can still legitimately use them by importing Base.MathConstants.  " Plus, one-letter variables like `e` and `γ` can be used with other  " meanings.  hi def link juliaConstNum		Constant -let h = b:julia_syntax_version == 6 ? "Constant" : "NONE" -exec "hi! def link juliaConstNum06 " . h -let h = b:julia_syntax_version >= 10 ? "Constant" : "NONE" -exec "hi! def link juliaEuler " . h +hi def link juliaEuler			Constant  hi def link juliaConstEnv		Constant  hi def link juliaConstC			Constant @@ -466,13 +397,7 @@ hi def link juliaConstLimits		Constant  hi def link juliaConstGeneric		Constant  hi def link juliaRangeEnd		Constant  hi def link juliaConstBool		Boolean - -for t in ["Generic", "IO", "Env"] -  let h = b:julia_syntax_version >= 10 ? "Constant" : "NONE" -  exec "hi! def link juliaConst" . t . "1011 " . h -endfor -let h = b:julia_syntax_version == 6 ? "Constant" : b:julia_syntax_version == 10 ? "juliaDeprecated" : "NONE" -exec "hi! def link juliaConstIO06 " . h +hi def link juliaConstIO		Boolean  hi def link juliaComprehensionFor	Keyword  hi def link juliaComprehensionIf	Keyword @@ -485,7 +410,7 @@ hi def link juliaSymbolS		Identifier  hi def link juliaQParDelim		Identifier  hi def link juliaQuotedQMarkPar		Identifier  hi def link juliaQuotedQMarkParS	Identifier -hi def link juliaQuotedQMark            juliaOperatorHL +hi def link juliaQuotedQMark		juliaOperatorHL  hi def link juliaNumber			Number  hi def link juliaFloat			Float @@ -521,7 +446,7 @@ hi def link juliaHexEscapeChar		SpecialChar  hi def link juliaUniCharSmall		SpecialChar  hi def link juliaUniCharLarge		SpecialChar  hi def link juliaDoubleBackslash	SpecialChar -hi def link juliaEscapedQuote   	SpecialChar +hi def link juliaEscapedQuote		SpecialChar  hi def link juliaPrintfFmt		SpecialChar @@ -550,12 +475,6 @@ hi def link juliaErrorPrintfFmt		juliaError  hi def link juliaError			Error -if b:julia_syntax_highlight_deprecated == 1 -  hi! def link juliaDeprecated		Todo -else -  hi! def link juliaDeprecated		NONE -end -  syntax sync fromstart  let b:current_syntax = "julia" diff --git a/syntax/llvm.vim b/syntax/llvm.vim index 31746336..ea9796f1 100644 --- a/syntax/llvm.vim +++ b/syntax/llvm.vim @@ -25,10 +25,10 @@ syn match   llvmType /\<i\d\+\>/  " The true and false tokens can be used for comparison opcodes, but it's  " much more common for these tokens to be used for boolean constants.  syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw -syn keyword llvmStatement bitcast br catchpad catchswitch catchret call +syn keyword llvmStatement bitcast br catchpad catchswitch catchret call callbr  syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement  syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext -syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr +syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub fneg getelementptr  syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue  syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min  syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole @@ -150,6 +150,7 @@ syn keyword llvmKeyword        \ sspstrong        \ strictfp        \ swiftcc +      \ swiftself        \ tail        \ target        \ thread_local diff --git a/syntax/mma.vim b/syntax/mma.vim index faae8279..d668ab32 100644 --- a/syntax/mma.vim +++ b/syntax/mma.vim @@ -1,18 +1,10 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mathematica') == -1 -" Vim syntax file -" Language:     Mathematica -" Maintainer:   Voldikss <dyzplus@gmail.com> -" Last Change:  2019 Jan 23 by Voldikss -" Source:       https://github.com/voldikss/vim-mma/syntax/mma.vim -" Credits: -"   Arnoud Buzing: https://github.com/arnoudbuzing -"   Rsmenon: https://github.com/rsmenon +"Vim syntax file +" Language: Mathematica +" Maintainer: R. Menon <rsmenon@icloud.com> +" Last Change: Feb 25, 2013 -" TODO: -"   Box Forms - -" quit when a syntax file was already loaded  if exists("b:current_syntax")      finish  endif diff --git a/syntax/pgsql.vim b/syntax/pgsql.vim index 88d99064..fa4d7e48 100644 --- a/syntax/pgsql.vim +++ b/syntax/pgsql.vim @@ -1943,9 +1943,7 @@ syn match sqlPlpgsqlVariable ".\zs@[A-z0-9_]\+" contained  " PL/pgSQL operators  syn match sqlPlpgsqlOperator ":=" contained -syn region plpgsql matchgroup=sqlString start=+\$pgsql\$+ end=+\$pgsql\$+ keepend -  \ contains=sqlIsKeyword,sqlIsFunction,sqlComment,sqlPlpgsqlKeyword,sqlPlpgsqlVariable,sqlPlpgsqlOperator,sqlNumber,sqlIsOperator,sqlString,sqlTodo -syn region plpgsql matchgroup=sqlString start=+\$body\$+ end=+\$body\$+ keepend +syn region plpgsql matchgroup=sqlString start=+\$\z(pgsql\|body\|function\)\$+ end=+\$\z1\$+ keepend    \ contains=sqlIsKeyword,sqlIsFunction,sqlComment,sqlPlpgsqlKeyword,sqlPlpgsqlVariable,sqlPlpgsqlOperator,sqlNumber,sqlIsOperator,sqlString,sqlTodo  if get(g:, 'pgsql_dollar_strings', 0)    syn region sqlString start=+\$\$+ end=+\$\$+ contains=@Spell diff --git a/syntax/php.vim b/syntax/php.vim index e77c415f..c1d8bd42 100644 --- a/syntax/php.vim +++ b/syntax/php.vim @@ -187,8 +187,17 @@ if !exists("php_phpdoc_folding")    let php_phpdoc_folding = 0  endif +" set default global php version +if !exists('g:php_version_id') +  let g:php_version_id = 70300   +endif + +" set default buffer level php version +if !exists('b:php_version_id') +  let b:php_version_id = g:php_version_id +endif +  " Folding Support {{{ -"  if php_folding==1 && has("folding")    command! -nargs=+ SynFold <args> fold  else @@ -673,71 +682,142 @@ syn case match  " HereDoc  if version >= 704 -  " @begin phpHereDoc -  SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@3<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  " including HTML,JavaScript,SQL if enabled via options -  if (exists("php_html_in_heredoc") && php_html_in_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_sql_heredoc") && php_sql_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_xml_heredoc") && php_xml_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif +  if b:php_version_id >= 70300 +    " @begin phpHereDoc +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\I\i*\)$" end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@3<="\z(\I\i*\)"$+ end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpHereDoc +  else +    " @begin phpHereDoc +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@3<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@3<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif    " @end phpHereDoc -else -  " @copy phpHereDoc strip_maximum_size -  SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  " including HTML,JavaScript,SQL if enabled via options -  if (exists("php_html_in_heredoc") && php_html_in_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_sql_heredoc") && php_sql_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend    endif -  if (exists("php_xml_heredoc") && php_xml_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +else +  if b:php_version_id >= 70300 +    " @copy phpHereDoc strip_maximum_size +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpHereDoc +  else +    " @copy phpHereDoc strip_maximum_size +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpHereDoc    endif -  " @end phpHereDoc  endif  " NowDoc  if version >= 704 +  if b:php_version_id >= 70300    " @begin phpNowDoc -  SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\I\i*\)'$+ end="^\z1\(;\=$\)\@=" contained keepend extend -  " including HTML,JavaScript,SQL if enabled via options -  if (exists("php_html_in_nowdoc") && php_html_in_nowdoc) -    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_sql_nowdoc") && php_sql_nowdoc) -    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_xml_nowdoc") && php_xml_nowdoc) -    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif +    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\I\i*\)'$+ end="^\s*\z1\>" contained keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_nowdoc") && php_html_in_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$+ end="^\s*\z1\>" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$+ end="^\s*\z1\>" contained contains=@htmlJavascript,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_nowdoc") && php_sql_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$+ end="^\s*\z1\>" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_nowdoc") && php_xml_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)'$+ end="^\s*\z1\>" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif    " @end phpNowDoc -else -  " @copy phpHereDoc strip_maximum_size -  SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  " including HTML,JavaScript,SQL if enabled via options -  if (exists("php_html_in_heredoc") && php_html_in_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend -  endif -  if (exists("php_sql_heredoc") && php_sql_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +  else +    " @begin phpNowDoc +    SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\I\i*\)'$+ end="^\z1\(;\=$\)\@=" contained keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_nowdoc") && php_html_in_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_nowdoc") && php_sql_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_nowdoc") && php_xml_nowdoc) +      SynFold syn region phpNowDoc matchgroup=Delimiter start=+\(<<<\)\@3<='\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)'$+ end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpNowDoc    endif -  if (exists("php_xml_heredoc") && php_xml_heredoc) -    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +else +  if b:php_version_id >= 70300 +    " @copy phpHereDoc strip_maximum_size +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\s*\z1\>" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\s*\z1\>"  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\s*\z1\>" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpNowDoc +  else +    " @copy phpHereDoc strip_maximum_size +    SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    SynFold syn region phpHereDoc matchgroup=Delimiter start=+\(<<<\)\@<="\z(\I\i*\)"$+ end="^\z1\(;\=$\)\@=" contained contains=@Spell,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    " including HTML,JavaScript,SQL if enabled via options +    if (exists("php_html_in_heredoc") && php_html_in_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@="  contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_sql_heredoc") && php_sql_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    if (exists("php_xml_heredoc") && php_xml_heredoc) +      SynFold syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(xml\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@xmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar,phpStrEsc keepend extend +    endif +    " @end phpNowDoc    endif -  " @end phpNowDoc  endif  syn case ignore diff --git a/syntax/ps1.vim b/syntax/ps1.vim index d3be8a12..4bc74638 100644 --- a/syntax/ps1.vim +++ b/syntax/ps1.vim @@ -59,16 +59,24 @@ syn match ps1Constant +\$^+  syn keyword ps1Keyword class define from using var  " Function declarations -syn keyword ps1Keyword function nextgroup=ps1FunctionDeclaration skipwhite -syn keyword ps1Keyword filter nextgroup=ps1FunctionDeclaration skipwhite -syn keyword ps1Keyword workflow nextgroup=ps1FunctionDeclaration skipwhite -syn keyword ps1Keyword configuration nextgroup=ps1FunctionDeclaration skipwhite -syn keyword ps1Keyword class nextgroup=ps1FunctionDeclaration skipwhite -syn keyword ps1Keyword enum nextgroup=ps1FunctionDeclaration skipwhite -syn match ps1FunctionDeclaration /\w\+\(-\w\+\)*/ contained - -" Function invocations -syn match ps1FunctionInvocation /\w\+\(-\w\+\)\+/ +syn keyword ps1Keyword function nextgroup=ps1Function skipwhite +syn keyword ps1Keyword filter nextgroup=ps1Function skipwhite +syn keyword ps1Keyword workflow nextgroup=ps1Function skipwhite +syn keyword ps1Keyword configuration nextgroup=ps1Function skipwhite +syn keyword ps1Keyword class nextgroup=ps1Function skipwhite +syn keyword ps1Keyword enum nextgroup=ps1Function skipwhite + +" Function declarations and invocations +syn match ps1Cmdlet /\v(add|clear|close|copy|enter|exit|find|format|get|hide|join|lock|move|new|open|optimize|pop|push|redo|remove|rename|reset|search|select|Set|show|skip|split|step|switch|undo|unlock|watch)(-\w+)+/ contained +syn match ps1Cmdlet /\v(connect|disconnect|read|receive|send|write)(-\w+)+/ contained +syn match ps1Cmdlet /\v(backup|checkpoint|compare|compress|convert|convertfrom|convertto|dismount|edit|expand|export|group|import|initialize|limit|merge|mount|out|publish|restore|save|sync|unpublish|update)(-\w+)+/ contained +syn match ps1Cmdlet /\v(debug|measure|ping|repair|resolve|test|trace)(-\w+)+/ contained +syn match ps1Cmdlet /\v(approve|assert|build|complete|confirm|deny|deploy|disable|enable|install|invoke|register|request|restart|resume|start|stop|submit|suspend|uninstall|unregister|wait)(-\w+)+/ contained +syn match ps1Cmdlet /\v(block|grant|protect|revoke|unblock|unprotect)(-\w+)+/ contained +syn match ps1Cmdlet /\v(use)(-\w+)+/ contained + +" Other functions +syn match ps1Function /\w\+\(-\w\+\)\+/ contains=ps1Cmdlet  " Type declarations  syn match ps1Type /\[[a-z_][a-z0-9_.,\[\]]\+\]/ @@ -164,8 +172,8 @@ if version >= 508 || !exists("did_ps1_syn_inits")  	HiLink ps1Escape SpecialChar  	HiLink ps1InterpolationDelimiter Delimiter  	HiLink ps1Conditional Conditional -	HiLink ps1FunctionDeclaration Function -	HiLink ps1FunctionInvocation Function +	HiLink ps1Cmdlet Function +	HiLink ps1Function Identifier  	HiLink ps1Variable Identifier  	HiLink ps1Boolean Boolean  	HiLink ps1Constant Constant diff --git a/syntax/python.vim b/syntax/python.vim index 74c7732c..13b8d74e 100644 --- a/syntax/python.vim +++ b/syntax/python.vim @@ -3,9 +3,9 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'python') == -1  " For version 5.x: Clear all syntax items  " For versions greater than 6.x: Quit when a syntax file was already loaded  if v:version < 600 -  syntax clear +    syntax clear  elseif exists('b:current_syntax') -  finish +    finish  endif  " @@ -16,22 +16,22 @@ command! -buffer Python3Syntax let b:python_version_2 = 0 | let &syntax=&syntax  " Enable option if it's not defined  function! s:EnableByDefault(name) -  if !exists(a:name) -    let {a:name} = 1 -  endif +    if !exists(a:name) +        let {a:name} = 1 +    endif  endfunction  " Check if option is enabled  function! s:Enabled(name) -  return exists(a:name) && {a:name} +    return exists(a:name) && {a:name}  endfunction  " Is it Python 2 syntax?  function! s:Python2Syntax() -  if exists('b:python_version_2') -      return b:python_version_2 -  endif -  return s:Enabled('g:python_version_2') +    if exists('b:python_version_2') +        return b:python_version_2 +    endif +    return s:Enabled('g:python_version_2')  endfunction  " @@ -42,22 +42,31 @@ call s:EnableByDefault('g:python_slow_sync')  call s:EnableByDefault('g:python_highlight_builtin_funcs_kwarg')  if s:Enabled('g:python_highlight_all') -  call s:EnableByDefault('g:python_highlight_builtins') -  if s:Enabled('g:python_highlight_builtins') -    call s:EnableByDefault('g:python_highlight_builtin_objs') -    call s:EnableByDefault('g:python_highlight_builtin_funcs') -    call s:EnableByDefault('g:python_highlight_builtin_types') -  endif -  call s:EnableByDefault('g:python_highlight_exceptions') -  call s:EnableByDefault('g:python_highlight_string_formatting') -  call s:EnableByDefault('g:python_highlight_string_format') -  call s:EnableByDefault('g:python_highlight_string_templates') -  call s:EnableByDefault('g:python_highlight_indent_errors') -  call s:EnableByDefault('g:python_highlight_space_errors') -  call s:EnableByDefault('g:python_highlight_doctests') -  call s:EnableByDefault('g:python_print_as_function') -  call s:EnableByDefault('g:python_highlight_class_vars') -  call s:EnableByDefault('g:python_highlight_operators') +    call s:EnableByDefault('g:python_highlight_builtins') +    if s:Enabled('g:python_highlight_builtins') +        call s:EnableByDefault('g:python_highlight_builtin_objs') +        call s:EnableByDefault('g:python_highlight_builtin_funcs') +        call s:EnableByDefault('g:python_highlight_builtin_types') +    endif +    call s:EnableByDefault('g:python_highlight_exceptions') +    call s:EnableByDefault('g:python_highlight_string_formatting') +    call s:EnableByDefault('g:python_highlight_string_format') +    call s:EnableByDefault('g:python_highlight_string_templates') +    call s:EnableByDefault('g:python_highlight_indent_errors') +    call s:EnableByDefault('g:python_highlight_space_errors') +    call s:EnableByDefault('g:python_highlight_doctests') +    call s:EnableByDefault('g:python_print_as_function') +    call s:EnableByDefault('g:python_highlight_func_calls') +    call s:EnableByDefault('g:python_highlight_class_vars') +    call s:EnableByDefault('g:python_highlight_operators') +endif + +" +" Function calls +" + +if s:Enabled('g:python_highlight_func_calls') +    syn match pythonFunctionCall '\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\ze\%(\s*(\)'  endif  " @@ -68,7 +77,7 @@ syn keyword pythonStatement     break continue del return pass yield global asse  syn keyword pythonStatement     raise nextgroup=pythonExClass skipwhite  syn keyword pythonStatement     def class nextgroup=pythonFunction skipwhite  if s:Enabled('g:python_highlight_class_vars') -  syn keyword pythonClassVar    self cls +    syn keyword pythonClassVar    self cls  endif  syn keyword pythonRepeat        for while  syn keyword pythonConditional   if elif else @@ -82,20 +91,20 @@ syn match pythonImport          '^\s*\zsfrom\>'  if s:Python2Syntax() -  if !s:Enabled('g:python_print_as_function') -    syn keyword pythonStatement  print -  endif -  syn keyword pythonStatement   exec -  syn keyword pythonImport      as -  syn match   pythonFunction    '[a-zA-Z_][a-zA-Z0-9_]*' display contained +    if !s:Enabled('g:python_print_as_function') +        syn keyword pythonStatement  print +    endif +    syn keyword pythonStatement   exec +    syn keyword pythonImport      as +    syn match   pythonFunction    '[a-zA-Z_][a-zA-Z0-9_]*' display contained  else -  syn keyword pythonStatement   as nonlocal -  syn match   pythonStatement   '\v\.@<!<await>' -  syn match   pythonFunction    '\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*' display contained -  syn match   pythonStatement   '\<async\s\+def\>' nextgroup=pythonFunction skipwhite -  syn match   pythonStatement   '\<async\s\+with\>' -  syn match   pythonStatement   '\<async\s\+for\>' -  syn cluster pythonExpression contains=pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonNone,pythonSingleton,pythonBuiltinObj,pythonBuiltinFunc,pythonBuiltinType +    syn keyword pythonStatement   as nonlocal +    syn match   pythonStatement   '\v\.@<!<await>' +    syn match   pythonFunction    '\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*' display contained +    syn match   pythonStatement   '\<async\s\+def\>' nextgroup=pythonFunction skipwhite +    syn match   pythonStatement   '\<async\s\+with\>' +    syn match   pythonStatement   '\<async\s\+for\>' +    syn cluster pythonExpression contains=pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonNone,pythonSingleton,pythonBuiltinObj,pythonBuiltinFunc,pythonBuiltinType  endif @@ -114,9 +123,9 @@ syn match pythonError           '[$?]\|\([-+@%&|^~]\)\1\{1,}\|\([=*/<>]\)\2\{2,}  syn match   pythonDecorator    '^\s*\zs@' display nextgroup=pythonDottedName skipwhite  if s:Python2Syntax() -  syn match   pythonDottedName '[a-zA-Z_][a-zA-Z0-9_]*\%(\.[a-zA-Z_][a-zA-Z0-9_]*\)*' display contained +    syn match   pythonDottedName '[a-zA-Z_][a-zA-Z0-9_]*\%(\.[a-zA-Z_][a-zA-Z0-9_]*\)*' display contained  else -  syn match   pythonDottedName '\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\)*' display contained +    syn match   pythonDottedName '\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\)*' display contained  endif  syn match   pythonDot        '\.' display containedin=pythonDottedName @@ -126,8 +135,8 @@ syn match   pythonDot        '\.' display containedin=pythonDottedName  syn match   pythonComment       '#.*$' display contains=pythonTodo,@Spell  if !s:Enabled('g:python_highlight_file_headers_as_comments') -  syn match   pythonRun         '\%^#!.*$' -  syn match   pythonCoding      '\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$' +    syn match   pythonRun         '\%^#!.*$' +    syn match   pythonCoding      '\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$'  endif  syn keyword pythonTodo          TODO FIXME XXX contained @@ -140,12 +149,12 @@ syn match pythonError           '\<\d\+[^0-9[:space:]]\+\>' display  " Mixing spaces and tabs also may be used for pretty formatting multiline  " statements  if s:Enabled('g:python_highlight_indent_errors') -  syn match pythonIndentError   '^\s*\%( \t\|\t \)\s*\S'me=e-1 display +    syn match pythonIndentError   '^\s*\%( \t\|\t \)\s*\S'me=e-1 display  endif  " Trailing space errors  if s:Enabled('g:python_highlight_space_errors') -  syn match pythonSpaceError    '\s\+$' display +    syn match pythonSpaceError    '\s\+$' display  endif  " @@ -153,20 +162,20 @@ endif  "  if s:Python2Syntax() -  " Python 2 strings -  syn region pythonString   start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonString   start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonString   start=+[bB]\="""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell -  syn region pythonString   start=+[bB]\='''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +    " Python 2 strings +    syn region pythonString   start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonString   start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonString   start=+[bB]\="""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell +    syn region pythonString   start=+[bB]\='''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell  else -  " Python 3 byte strings -  syn region pythonBytes    start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell -  syn region pythonBytes    start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell -  syn region pythonBytes    start=+[bB]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest,pythonSpaceError,@Spell -  syn region pythonBytes    start=+[bB]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest2,pythonSpaceError,@Spell - -  syn match pythonBytesError    '.\+' display contained -  syn match pythonBytesContent  '[\u0000-\u00ff]\+' display contained contains=pythonBytesEscape,pythonBytesEscapeError +    " Python 3 byte strings +    syn region pythonBytes    start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell +    syn region pythonBytes    start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell +    syn region pythonBytes    start=+[bB]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest,pythonSpaceError,@Spell +    syn region pythonBytes    start=+[bB]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest2,pythonSpaceError,@Spell + +    syn match pythonBytesError    '.\+' display contained +    syn match pythonBytesContent  '[\u0000-\u00ff]\+' display contained contains=pythonBytesEscape,pythonBytesEscapeError  endif  syn match pythonBytesEscape       +\\[abfnrtv'"\\]+ display contained @@ -184,100 +193,100 @@ syn match pythonUniEscape         '\\N{[A-Z ]\+}' display contained  syn match pythonUniEscapeError    '\\N{[^A-Z ]\+}' display contained  if s:Python2Syntax() -  " Python 2 Unicode strings -  syn region pythonUniString  start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonUniString  start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonUniString  start=+[uU]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell -  syn region pythonUniString  start=+[uU]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell +    " Python 2 Unicode strings +    syn region pythonUniString  start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonUniString  start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonUniString  start=+[uU]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +    syn region pythonUniString  start=+[uU]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell  else -  " Python 3 strings -  syn region pythonString   start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonString   start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonString   start=+'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell -  syn region pythonString   start=+"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell - -  syn region pythonFString   start=+[fF]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonFString   start=+[fF]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell -  syn region pythonFString   start=+[fF]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell -  syn region pythonFString   start=+[fF]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell +    " Python 3 strings +    syn region pythonString   start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonString   start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonString   start=+'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +    syn region pythonString   start=+"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell + +    syn region pythonFString   start=+[fF]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonFString   start=+[fF]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell +    syn region pythonFString   start=+[fF]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +    syn region pythonFString   start=+[fF]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell  endif  if s:Python2Syntax() -  " Python 2 Unicode raw strings -  syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell -  syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell -  syn region pythonUniRawString start=+[uU][rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell -  syn region pythonUniRawString start=+[uU][rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell - -  syn match  pythonUniRawEscape       '\%([^\\]\%(\\\\\)*\)\@<=\\u\x\{4}' display contained -  syn match  pythonUniRawEscapeError  '\%([^\\]\%(\\\\\)*\)\@<=\\u\x\{,3}\X' display contained +    " Python 2 Unicode raw strings +    syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell +    syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell +    syn region pythonUniRawString start=+[uU][rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell +    syn region pythonUniRawString start=+[uU][rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell + +    syn match  pythonUniRawEscape       '\%([^\\]\%(\\\\\)*\)\@<=\\u\x\{4}' display contained +    syn match  pythonUniRawEscapeError  '\%([^\\]\%(\\\\\)*\)\@<=\\u\x\{,3}\X' display contained  endif  " Python 2/3 raw strings  if s:Python2Syntax() -  syn region pythonRawString  start=+[bB]\=[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawString  start=+[bB]\=[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawString  start=+[bB]\=[rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell -  syn region pythonRawString  start=+[bB]\=[rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell +    syn region pythonRawString  start=+[bB]\=[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawString  start=+[bB]\=[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawString  start=+[bB]\=[rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +    syn region pythonRawString  start=+[bB]\=[rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell  else -  syn region pythonRawString  start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawString  start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawString  start=+[rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell -  syn region pythonRawString  start=+[rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell - -  syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell -  syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest,pythonSpaceError,@Spell - -  syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell -  syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell -  syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell +    syn region pythonRawString  start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawString  start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawString  start=+[rR]'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +    syn region pythonRawString  start=+[rR]"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell + +    syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +    syn region pythonRawFString   start=+\%([fF][rR]\|[rR][fF]\)"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest,pythonSpaceError,@Spell + +    syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell +    syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)'''+ skip=+\\'+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +    syn region pythonRawBytes  start=+\%([bB][rR]\|[rR][bB]\)"""+ skip=+\\"+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell  endif  syn match pythonRawEscape +\\['"]+ display contained  if s:Enabled('g:python_highlight_string_formatting') -  " % operator string formatting -  if s:Python2Syntax() -    syn match pythonStrFormatting '%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString,pythonBytesContent -    syn match pythonStrFormatting '%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString,pythonBytesContent -  else -    syn match pythonStrFormatting '%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonRawString,pythonBytesContent -    syn match pythonStrFormatting '%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonRawString,pythonBytesContent -  endif +    " % operator string formatting +    if s:Python2Syntax() +        syn match pythonStrFormatting '%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString,pythonBytesContent +        syn match pythonStrFormatting '%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString,pythonBytesContent +    else +        syn match pythonStrFormatting '%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonRawString,pythonBytesContent +        syn match pythonStrFormatting '%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]' contained containedin=pythonString,pythonRawString,pythonBytesContent +    endif  endif  if s:Enabled('g:python_highlight_string_format') -  " str.format syntax -  if s:Python2Syntax() -    syn match pythonStrFormat '{{\|}}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString -    syn match pythonStrFormat '{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString -  else -    syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString -    syn region pythonStrInterpRegion start="{"he=e+1,rs=e+1 end="\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}"hs=s-1,re=s-1 extend contained containedin=pythonFString,pythonRawFString contains=pythonStrInterpRegion,@pythonExpression -    syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString,pythonFString,pythonRawFString -  endif +    " str.format syntax +    if s:Python2Syntax() +        syn match pythonStrFormat '{{\|}}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString +        syn match pythonStrFormat '{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString +    else +        syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString +        syn region pythonStrInterpRegion start="{"he=e+1,rs=e+1 end="\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}"hs=s-1,re=s-1 extend contained containedin=pythonFString,pythonRawFString contains=pythonStrInterpRegion,@pythonExpression +        syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString,pythonFString,pythonRawFString +    endif  endif  if s:Enabled('g:python_highlight_string_templates') -  " string.Template format -  if s:Python2Syntax() -    syn match pythonStrTemplate '\$\$' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString -    syn match pythonStrTemplate '\${[a-zA-Z_][a-zA-Z0-9_]*}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString -    syn match pythonStrTemplate '\$[a-zA-Z_][a-zA-Z0-9_]*' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString -  else -    syn match pythonStrTemplate '\$\$' contained containedin=pythonString,pythonRawString -    syn match pythonStrTemplate '\${[a-zA-Z_][a-zA-Z0-9_]*}' contained containedin=pythonString,pythonRawString -    syn match pythonStrTemplate '\$[a-zA-Z_][a-zA-Z0-9_]*' contained containedin=pythonString,pythonRawString -  endif +    " string.Template format +    if s:Python2Syntax() +        syn match pythonStrTemplate '\$\$' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString +        syn match pythonStrTemplate '\${[a-zA-Z_][a-zA-Z0-9_]*}' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString +        syn match pythonStrTemplate '\$[a-zA-Z_][a-zA-Z0-9_]*' contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString +    else +        syn match pythonStrTemplate '\$\$' contained containedin=pythonString,pythonRawString +        syn match pythonStrTemplate '\${[a-zA-Z_][a-zA-Z0-9_]*}' contained containedin=pythonString,pythonRawString +        syn match pythonStrTemplate '\$[a-zA-Z_][a-zA-Z0-9_]*' contained containedin=pythonString,pythonRawString +    endif  endif  if s:Enabled('g:python_highlight_doctests') -  " DocTests -  syn region pythonDocTest   start='^\s*>>>' skip=+\\'+ end=+'''+he=s-1 end='^\s*$' contained -  syn region pythonDocTest2  start='^\s*>>>' skip=+\\"+ end=+"""+he=s-1 end='^\s*$' contained +    " DocTests +    syn region pythonDocTest   start='^\s*>>>' skip=+\\'+ end=+'''+he=s-1 end='^\s*$' contained +    syn region pythonDocTest2  start='^\s*>>>' skip=+\\"+ end=+"""+he=s-1 end='^\s*$' contained  endif  " @@ -285,51 +294,51 @@ endif  "  if s:Python2Syntax() -  syn match   pythonHexError    '\<0[xX]\x*[g-zG-Z]\+\x*[lL]\=\>' display -  syn match   pythonOctError    '\<0[oO]\=\o*\D\+\d*[lL]\=\>' display -  syn match   pythonBinError    '\<0[bB][01]*\D\+\d*[lL]\=\>' display +    syn match   pythonHexError    '\<0[xX]\x*[g-zG-Z]\+\x*[lL]\=\>' display +    syn match   pythonOctError    '\<0[oO]\=\o*\D\+\d*[lL]\=\>' display +    syn match   pythonBinError    '\<0[bB][01]*\D\+\d*[lL]\=\>' display -  syn match   pythonHexNumber   '\<0[xX]\x\+[lL]\=\>' display -  syn match   pythonOctNumber   '\<0[oO]\o\+[lL]\=\>' display -  syn match   pythonBinNumber   '\<0[bB][01]\+[lL]\=\>' display +    syn match   pythonHexNumber   '\<0[xX]\x\+[lL]\=\>' display +    syn match   pythonOctNumber   '\<0[oO]\o\+[lL]\=\>' display +    syn match   pythonBinNumber   '\<0[bB][01]\+[lL]\=\>' display -  syn match   pythonNumberError '\<\d\+\D[lL]\=\>' display -  syn match   pythonNumber      '\<\d[lL]\=\>' display -  syn match   pythonNumber      '\<[0-9]\d\+[lL]\=\>' display -  syn match   pythonNumber      '\<\d\+[lLjJ]\>' display +    syn match   pythonNumberError '\<\d\+\D[lL]\=\>' display +    syn match   pythonNumber      '\<\d[lL]\=\>' display +    syn match   pythonNumber      '\<[0-9]\d\+[lL]\=\>' display +    syn match   pythonNumber      '\<\d\+[lLjJ]\>' display -  syn match   pythonOctError    '\<0[oO]\=\o*[8-9]\d*[lL]\=\>' display -  syn match   pythonBinError    '\<0[bB][01]*[2-9]\d*[lL]\=\>' display +    syn match   pythonOctError    '\<0[oO]\=\o*[8-9]\d*[lL]\=\>' display +    syn match   pythonBinError    '\<0[bB][01]*[2-9]\d*[lL]\=\>' display -  syn match   pythonFloat       '\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>' display -  syn match   pythonFloat       '\<\d\+[eE][+-]\=\d\+[jJ]\=\>' display -  syn match   pythonFloat       '\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=' display +    syn match   pythonFloat       '\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>' display +    syn match   pythonFloat       '\<\d\+[eE][+-]\=\d\+[jJ]\=\>' display +    syn match   pythonFloat       '\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=' display  else -  syn match   pythonOctError    '\<0[oO]\=\o*\D\+\d*\>' display -  " pythonHexError comes after pythonOctError so that 0xffffl is pythonHexError -  syn match   pythonHexError    '\<0[xX]\x*[g-zG-Z]\x*\>' display -  syn match   pythonBinError    '\<0[bB][01]*\D\+\d*\>' display - -  syn match   pythonHexNumber   '\<0[xX][_0-9a-fA-F]*\x\>' display -  syn match   pythonOctNumber   '\<0[oO][_0-7]*\o\>' display -  syn match   pythonBinNumber   '\<0[bB][_01]*[01]\>' display - -  syn match   pythonNumberError '\<\d[_0-9]*\D\>' display -  syn match   pythonNumberError '\<0[_0-9]\+\>' display -  syn match   pythonNumberError '\<0_x\S*\>' display -  syn match   pythonNumberError '\<0[bBxXoO][_0-9a-fA-F]*_\>' display -  syn match   pythonNumberError '\<\d[_0-9]*_\>' display -  syn match   pythonNumber      '\<\d\>' display -  syn match   pythonNumber      '\<[1-9][_0-9]*\d\>' display -  syn match   pythonNumber      '\<\d[jJ]\>' display -  syn match   pythonNumber      '\<[1-9][_0-9]*\d[jJ]\>' display - -  syn match   pythonOctError    '\<0[oO]\=\o*[8-9]\d*\>' display -  syn match   pythonBinError    '\<0[bB][01]*[2-9]\d*\>' display - -  syn match   pythonFloat       '\.\d\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=\>' display -  syn match   pythonFloat       '\<\d\%([_0-9]*\d\)\=[eE][+-]\=\d\%([_0-9]*\d\)\=[jJ]\=\>' display -  syn match   pythonFloat       '\<\d\%([_0-9]*\d\)\=\.\d\=\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=' display +    syn match   pythonOctError    '\<0[oO]\=\o*\D\+\d*\>' display +    " pythonHexError comes after pythonOctError so that 0xffffl is pythonHexError +    syn match   pythonHexError    '\<0[xX]\x*[g-zG-Z]\x*\>' display +    syn match   pythonBinError    '\<0[bB][01]*\D\+\d*\>' display + +    syn match   pythonHexNumber   '\<0[xX][_0-9a-fA-F]*\x\>' display +    syn match   pythonOctNumber   '\<0[oO][_0-7]*\o\>' display +    syn match   pythonBinNumber   '\<0[bB][_01]*[01]\>' display + +    syn match   pythonNumberError '\<\d[_0-9]*\D\>' display +    syn match   pythonNumberError '\<0[_0-9]\+\>' display +    syn match   pythonNumberError '\<0_x\S*\>' display +    syn match   pythonNumberError '\<0[bBxXoO][_0-9a-fA-F]*_\>' display +    syn match   pythonNumberError '\<\d[_0-9]*_\>' display +    syn match   pythonNumber      '\<\d\>' display +    syn match   pythonNumber      '\<[1-9][_0-9]*\d\>' display +    syn match   pythonNumber      '\<\d[jJ]\>' display +    syn match   pythonNumber      '\<[1-9][_0-9]*\d[jJ]\>' display + +    syn match   pythonOctError    '\<0[oO]\=\o*[8-9]\d*\>' display +    syn match   pythonBinError    '\<0[bB][01]*[2-9]\d*\>' display + +    syn match   pythonFloat       '\.\d\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=\>' display +    syn match   pythonFloat       '\<\d\%([_0-9]*\d\)\=[eE][+-]\=\d\%([_0-9]*\d\)\=[jJ]\=\>' display +    syn match   pythonFloat       '\<\d\%([_0-9]*\d\)\=\.\d\=\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=' display  endif  " @@ -337,11 +346,11 @@ endif  "  if s:Enabled('g:python_highlight_builtin_objs') -  syn keyword pythonNone        None -  syn keyword pythonBoolean     True False -  syn keyword pythonSingleton   Ellipsis NotImplemented -  syn keyword pythonBuiltinObj  __debug__ __doc__ __file__ __name__ __package__ -  syn keyword pythonBuiltinObj  __loader__ __spec__ __path__ __cached__ +    syn keyword pythonNone        None +    syn keyword pythonBoolean     True False +    syn keyword pythonSingleton   Ellipsis NotImplemented +    syn keyword pythonBuiltinObj  __debug__ __doc__ __file__ __name__ __package__ +    syn keyword pythonBuiltinObj  __loader__ __spec__ __path__ __cached__  endif  " @@ -349,25 +358,25 @@ endif  "  if s:Enabled('g:python_highlight_builtin_funcs') -  let s:funcs_re = '__import__|abs|all|any|bin|callable|chr|classmethod|compile|complex|delattr|dir|divmod|enumerate|eval|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|locals|map|max|memoryview|min|next|oct|open|ord|pow|property|range|repr|reversed|round|setattr|slice|sorted|staticmethod|sum|super|type|vars|zip' - -  if s:Python2Syntax() -    let s:funcs_re .= '|apply|basestring|buffer|cmp|coerce|execfile|file|intern|long|raw_input|reduce|reload|unichr|unicode|xrange' -    if s:Enabled('g:python_print_as_function') -      let s:funcs_re .= '|print' +    let s:funcs_re = '__import__|abs|all|any|bin|callable|chr|classmethod|compile|complex|delattr|dir|divmod|enumerate|eval|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|locals|map|max|memoryview|min|next|oct|open|ord|pow|property|range|repr|reversed|round|setattr|slice|sorted|staticmethod|sum|super|type|vars|zip' + +    if s:Python2Syntax() +        let s:funcs_re .= '|apply|basestring|buffer|cmp|coerce|execfile|file|intern|long|raw_input|reduce|reload|unichr|unicode|xrange' +        if s:Enabled('g:python_print_as_function') +            let s:funcs_re .= '|print' +        endif +    else +        let s:funcs_re .= '|ascii|breakpoint|exec|print'      endif -  else -      let s:funcs_re .= '|ascii|breakpoint|exec|print' -  endif -  let s:funcs_re = 'syn match pythonBuiltinFunc ''\v\.@<!\zs<%(' . s:funcs_re . ')>' +    let s:funcs_re = 'syn match pythonBuiltinFunc ''\v\.@<!\zs<%(' . s:funcs_re . ')>' -  if !s:Enabled('g:python_highlight_builtin_funcs_kwarg') -      let s:funcs_re .= '\=@!' -  endif +    if !s:Enabled('g:python_highlight_builtin_funcs_kwarg') +        let s:funcs_re .= '\=@!' +    endif -  execute s:funcs_re . '''' -  unlet s:funcs_re +    execute s:funcs_re . '''' +    unlet s:funcs_re  endif  " @@ -375,7 +384,7 @@ endif  "  if s:Enabled('g:python_highlight_builtin_types') -  syn match pythonBuiltinType    '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>' +    syn match pythonBuiltinType    '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>'  endif @@ -386,110 +395,115 @@ endif  if s:Enabled('g:python_highlight_exceptions')      let s:exs_re = 'BaseException|Exception|ArithmeticError|LookupError|EnvironmentError|AssertionError|AttributeError|BufferError|EOFError|FloatingPointError|GeneratorExit|IOError|ImportError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|ReferenceError|RuntimeError|StopIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|VMSError|WindowsError|ZeroDivisionError|Warning|UserWarning|BytesWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning' -  if s:Python2Syntax() -      let s:exs_re .= '|StandardError' -  else -      let s:exs_re .= '|BlockingIOError|ChildProcessError|ConnectionError|BrokenPipeError|ConnectionAbortedError|ConnectionRefusedError|ConnectionResetError|FileExistsError|FileNotFoundError|InterruptedError|IsADirectoryError|NotADirectoryError|PermissionError|ProcessLookupError|TimeoutError|StopAsyncIteration|ResourceWarning' -  endif +    if s:Python2Syntax() +        let s:exs_re .= '|StandardError' +    else +        let s:exs_re .= '|BlockingIOError|ChildProcessError|ConnectionError|BrokenPipeError|ConnectionAbortedError|ConnectionRefusedError|ConnectionResetError|FileExistsError|FileNotFoundError|InterruptedError|IsADirectoryError|NotADirectoryError|PermissionError|ProcessLookupError|TimeoutError|StopAsyncIteration|ResourceWarning' +    endif -  execute 'syn match pythonExClass ''\v\.@<!\zs<%(' . s:exs_re . ')>''' -  unlet s:exs_re +    execute 'syn match pythonExClass ''\v\.@<!\zs<%(' . s:exs_re . ')>''' +    unlet s:exs_re  endif +" +" Misc +" +  if s:Enabled('g:python_slow_sync') -  syn sync minlines=2000 +    syn sync minlines=2000  else -  " This is fast but code inside triple quoted strings screws it up. It -  " is impossible to fix because the only way to know if you are inside a -  " triple quoted string is to start from the beginning of the file. -  syn sync match pythonSync grouphere NONE '):$' -  syn sync maxlines=200 +    " This is fast but code inside triple quoted strings screws it up. It +    " is impossible to fix because the only way to know if you are inside a +    " triple quoted string is to start from the beginning of the file. +    syn sync match pythonSync grouphere NONE '):$' +    syn sync maxlines=200  endif  if v:version >= 508 || !exists('did_python_syn_inits') -  if v:version <= 508 -    let did_python_syn_inits = 1 -    command -nargs=+ HiLink hi link <args> -  else -    command -nargs=+ HiLink hi def link <args> -  endif - -  HiLink pythonStatement        Statement -  HiLink pythonRaiseFromStatement   Statement -  HiLink pythonImport           Include -  HiLink pythonFunction         Function -  HiLink pythonConditional      Conditional -  HiLink pythonRepeat           Repeat -  HiLink pythonException        Exception -  HiLink pythonOperator         Operator - -  HiLink pythonDecorator        Define -  HiLink pythonDottedName       Function - -  HiLink pythonComment          Comment -  if !s:Enabled('g:python_highlight_file_headers_as_comments') -    HiLink pythonCoding           Special -    HiLink pythonRun              Special -  endif -  HiLink pythonTodo             Todo - -  HiLink pythonError            Error -  HiLink pythonIndentError      Error -  HiLink pythonSpaceError       Error - -  HiLink pythonString           String -  HiLink pythonRawString        String -  HiLink pythonRawEscape        Special - -  HiLink pythonUniEscape        Special -  HiLink pythonUniEscapeError   Error - -  if s:Python2Syntax() -    HiLink pythonUniString          String -    HiLink pythonUniRawString       String -    HiLink pythonUniRawEscape       Special -    HiLink pythonUniRawEscapeError  Error -  else -    HiLink pythonBytes              String -    HiLink pythonRawBytes           String -    HiLink pythonBytesContent       String -    HiLink pythonBytesError         Error -    HiLink pythonBytesEscape        Special -    HiLink pythonBytesEscapeError   Error -    HiLink pythonFString            String -    HiLink pythonRawFString         String -    HiLink pythonStrInterpRegion    Special -  endif - -  HiLink pythonStrFormatting    Special -  HiLink pythonStrFormat        Special -  HiLink pythonStrTemplate      Special - -  HiLink pythonDocTest          Special -  HiLink pythonDocTest2         Special - -  HiLink pythonNumber           Number -  HiLink pythonHexNumber        Number -  HiLink pythonOctNumber        Number -  HiLink pythonBinNumber        Number -  HiLink pythonFloat            Float -  HiLink pythonNumberError      Error -  HiLink pythonOctError         Error -  HiLink pythonHexError         Error -  HiLink pythonBinError         Error - -  HiLink pythonBoolean          Boolean -  HiLink pythonNone             Constant -  HiLink pythonSingleton        Constant - -  HiLink pythonBuiltinObj       Identifier -  HiLink pythonBuiltinFunc      Function -  HiLink pythonBuiltinType      Structure - -  HiLink pythonExClass          Structure -  HiLink pythonClassVar         Identifier - -  delcommand HiLink +    if v:version <= 508 +        let did_python_syn_inits = 1 +        command -nargs=+ HiLink hi link <args> +    else +        command -nargs=+ HiLink hi def link <args> +    endif + +    HiLink pythonStatement        Statement +    HiLink pythonRaiseFromStatement   Statement +    HiLink pythonImport           Include +    HiLink pythonFunction         Function +    HiLink pythonFunctionCall     Function +    HiLink pythonConditional      Conditional +    HiLink pythonRepeat           Repeat +    HiLink pythonException        Exception +    HiLink pythonOperator         Operator + +    HiLink pythonDecorator        Define +    HiLink pythonDottedName       Function + +    HiLink pythonComment          Comment +    if !s:Enabled('g:python_highlight_file_headers_as_comments') +        HiLink pythonCoding           Special +        HiLink pythonRun              Special +    endif +    HiLink pythonTodo             Todo + +    HiLink pythonError            Error +    HiLink pythonIndentError      Error +    HiLink pythonSpaceError       Error + +    HiLink pythonString           String +    HiLink pythonRawString        String +    HiLink pythonRawEscape        Special + +    HiLink pythonUniEscape        Special +    HiLink pythonUniEscapeError   Error + +    if s:Python2Syntax() +        HiLink pythonUniString          String +        HiLink pythonUniRawString       String +        HiLink pythonUniRawEscape       Special +        HiLink pythonUniRawEscapeError  Error +    else +        HiLink pythonBytes              String +        HiLink pythonRawBytes           String +        HiLink pythonBytesContent       String +        HiLink pythonBytesError         Error +        HiLink pythonBytesEscape        Special +        HiLink pythonBytesEscapeError   Error +        HiLink pythonFString            String +        HiLink pythonRawFString         String +        HiLink pythonStrInterpRegion    Special +    endif + +    HiLink pythonStrFormatting    Special +    HiLink pythonStrFormat        Special +    HiLink pythonStrTemplate      Special + +    HiLink pythonDocTest          Special +    HiLink pythonDocTest2         Special + +    HiLink pythonNumber           Number +    HiLink pythonHexNumber        Number +    HiLink pythonOctNumber        Number +    HiLink pythonBinNumber        Number +    HiLink pythonFloat            Float +    HiLink pythonNumberError      Error +    HiLink pythonOctError         Error +    HiLink pythonHexError         Error +    HiLink pythonBinError         Error + +    HiLink pythonBoolean          Boolean +    HiLink pythonNone             Constant +    HiLink pythonSingleton        Constant + +    HiLink pythonBuiltinObj       Identifier +    HiLink pythonBuiltinFunc      Function +    HiLink pythonBuiltinType      Structure + +    HiLink pythonExClass          Structure +    HiLink pythonClassVar         Identifier + +    delcommand HiLink  endif  let b:current_syntax = 'python' diff --git a/syntax/reason.vim b/syntax/reason.vim index 19e8590b..f7188c68 100644 --- a/syntax/reason.vim +++ b/syntax/reason.vim @@ -16,154 +16,154 @@ endif  " Syntax definitions {{{1  " Basic keywords {{{2 -syn keyword   rustConditional switch match if else for in when fun -syn keyword   rustOperator    as - -syn match     rustAssert      "\<assert\(\w\)*!" contained -syn match     rustPanic       "\<panic\(\w\)*!" contained -syn keyword   rustKeyword     box nextgroup=rustBoxPlacement skipwhite skipempty -syn keyword   rustKeyword     extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite skipempty -" syn keyword   rustKeyword     fun nextgroup=rustFuncName skipwhite skipempty -syn keyword   rustKeyword     unsafe where while lazy -syn keyword   rustStorage     and class constraint exception external include inherit let method module nonrec open private rec type val with +syn keyword   reasonConditional switch match if else for in when fun +syn keyword   reasonOperator    as + +syn match     reasonAssert      "\<assert\(\w\)*!" contained +syn match     reasonPanic       "\<panic\(\w\)*!" contained +syn keyword   reasonKeyword     box nextgroup=reasonBoxPlacement skipwhite skipempty +syn keyword   reasonKeyword     extern nextgroup=reasonExternCrate,reasonObsoleteExternMod skipwhite skipempty +" syn keyword   reasonKeyword     fun nextgroup=reasonFuncName skipwhite skipempty +syn keyword   reasonKeyword     unsafe where while lazy +syn keyword   reasonStorage     and class constraint exception external include inherit let method module nonrec open private rec type val with  " FIXME: Scoped impl's name is also fallen in this category -" syn keyword   rustStorageIdent   let and module type nextgroup=rustIdentifier skipwhite skipempty +" syn keyword   reasonStorageIdent   let and module type nextgroup=reasonIdentifier skipwhite skipempty -syn keyword   rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty +syn keyword   reasonExternCrate crate contained nextgroup=reasonIdentifier,reasonExternCrateString skipwhite skipempty  " This is to get the `bar` part of `extern crate "foo" as bar;` highlighting. -syn match   rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator -syn keyword   rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty +syn match   reasonExternCrateString /".*"\_s*as/ contained nextgroup=reasonIdentifier skipwhite transparent skipempty contains=reasonString,reasonOperator +syn keyword   reasonObsoleteExternMod mod contained nextgroup=reasonIdentifier skipwhite skipempty -syn match     rustIdentifier  contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained -syn match     rustFuncName    "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained +syn match     reasonIdentifier  contains=reasonIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained +syn match     reasonFuncName    "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained  "  syn match labelArgument "\(\l\|_\)\(\w\|'\)*::\(?\)\?"lc=0   "Allows any space between label name and ::  syn match labelArgumentPunned "::\(?\)\?\(\l\|_\)\(\w\|'\)*"lc=0   "Allows any space between label name and :: -syn match    rustEnumVariant  "\<\u\(\w\|'\)*\>[^\.]"me=e-1 +syn match    reasonEnumVariant  "\<\u\(\w\|'\)*\>[^\.]"me=e-1  " Polymorphic variants -syn match    rustEnumVariant  "`\w\(\w\|'\)*\>" +syn match    reasonEnumVariant  "`\w\(\w\|'\)*\>" -syn match    rustModPath  "\<\u\w*\." +syn match    reasonModPath  "\<\u\w*\." -syn region    rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained +syn region    reasonBoxPlacement matchgroup=reasonBoxPlacementParens start="(" end=")" contains=TOP contained  " Ideally we'd have syntax rules set up to match arbitrary expressions. Since  " we don't, we'll just define temporary contained rules to handle balancing  " delimiters. -syn region    rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent -syn region    rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent -" {} are handled by rustFoldBraces +syn region    reasonBoxPlacementBalance start="(" end=")" containedin=reasonBoxPlacement transparent +syn region    reasonBoxPlacementBalance start="\[" end="\]" containedin=reasonBoxPlacement transparent +" {} are handled by reasonFoldBraces -syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount -syn match rustMacroRepeatCount ".\?[*+]" contained -syn match rustMacroVariable "$\w\+" +syn region reasonMacroRepeat matchgroup=reasonMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=reasonMacroRepeatCount +syn match reasonMacroRepeatCount ".\?[*+]" contained +syn match reasonMacroVariable "$\w\+"  " Reserved (but not yet used) keywords {{{2 -syn keyword   rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro +syn keyword   reasonReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro  " Built-in types {{{2 -syn keyword   rustType        int float option list array unit ref bool string +syn keyword   reasonType        int float option list array unit ref bool string  " Things from the libstd v1 prelude (src/libstd/prelude/v1.rs) {{{2  " This section is just straight transformation of the contents of the prelude,  " to make it easy to update.  " Reexported core operators {{{3 -syn keyword   rustTrait       Copy Send Sized Sync -syn keyword   rustTrait       Drop Fn FnMut FnOnce +syn keyword   reasonTrait       Copy Send Sized Sync +syn keyword   reasonTrait       Drop Fn FnMut FnOnce  " Reexported functions {{{3  " There’s no point in highlighting these; when one writes drop( or drop::< it  " gets the same highlighting anyway, and if someone writes `let drop = …;` we  " don’t really want *that* drop to be highlighted. -"syn keyword rustFunction drop +"syn keyword reasonFunction drop  " Reexported types and traits {{{3 -syn keyword rustTrait Box -syn keyword rustTrait ToOwned -syn keyword rustTrait Clone -syn keyword rustTrait PartialEq PartialOrd Eq Ord -syn keyword rustTrait AsRef AsMut Into From -syn keyword rustTrait Default -syn keyword rustTrait Iterator Extend IntoIterator -syn keyword rustTrait DoubleEndedIterator ExactSizeIterator -syn keyword rustEnum Option -syn keyword rustEnumVariant Some None -syn keyword rustEnum Result -syn keyword rustEnumVariant Ok Err -syn keyword rustTrait SliceConcatExt -syn keyword rustTrait String ToString -syn keyword rustTrait Vec +syn keyword reasonTrait Box +syn keyword reasonTrait ToOwned +syn keyword reasonTrait Clone +syn keyword reasonTrait PartialEq PartialOrd Eq Ord +syn keyword reasonTrait AsRef AsMut Into From +syn keyword reasonTrait Default +syn keyword reasonTrait Iterator Extend IntoIterator +syn keyword reasonTrait DoubleEndedIterator ExactSizeIterator +syn keyword reasonEnum Option +syn keyword reasonEnumVariant Some None +syn keyword reasonEnum Result +syn keyword reasonEnumVariant Ok Err +syn keyword reasonTrait SliceConcatExt +syn keyword reasonTrait String ToString +syn keyword reasonTrait Vec  " Other syntax {{{2 -syn keyword   rustSelf        self -syn keyword   rustBoolean     true false +syn keyword   reasonSelf        self +syn keyword   reasonBoolean     true false  " This is merely a convention; note also the use of [A-Z], restricting it to  " latin identifiers rather than the full Unicode uppercase. I have not used  " [:upper:] as it depends upon 'noignorecase' -"syn match     rustCapsIdent    display "[A-Z]\w\(\w\)*" +"syn match     reasonCapsIdent    display "[A-Z]\w\(\w\)*" -syn match     rustOperator     display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?" +syn match     reasonOperator     display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?"  " This one isn't *quite* right, as we could have binary-& with a reference  " This isn't actually correct; a closure with no arguments can be `|| { }`.  " Last, because the & in && isn't a sigil -syn match     rustOperator     display "&&\|||" -" This is rustArrowCharacter rather than rustArrow for the sake of matchparen, +syn match     reasonOperator     display "&&\|||" +" This is reasonArrowCharacter rather than reasonArrow for the sake of matchparen,  " so it skips the ->; see http://stackoverflow.com/a/30309949 for details. -syn match     rustArrowCharacter display "=>" - -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='{j|' end='|j}' contains=rustMacroVariable,@Spell -syn region    rustString      start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation -syn region    rustString      start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell -syn region    rustString      start='b\?r\z(#*\)"' end='"\z1' contains=@Spell - -syn region    rustAttribute   start="#!\?\[" end="\]" contains=rustString,rustDerive -syn region    rustDerive      start="derive(" end=")" contained contains=rustDeriveTrait +syn match     reasonArrowCharacter display "=>" + +syn match     reasonEscapeError   display contained /\\./ +syn match     reasonEscape        display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ +syn match     reasonEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{8}\)/ +syn match     reasonEscapeUnicode display contained /\\u{\x\{1,6}}/ +syn match     reasonStringContinuation display contained /\\\n\s*/ +syn region    reasonString      start='{j|' end='|j}' contains=reasonMacroVariable,@Spell +syn region    reasonString      start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=reasonEscape,reasonEscapeError,reasonStringContinuation +syn region    reasonString      start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=reasonEscape,reasonEscapeUnicode,reasonEscapeError,reasonStringContinuation,@Spell +syn region    reasonString      start='b\?r\z(#*\)"' end='"\z1' contains=@Spell + +syn region    reasonAttribute   start="#!\?\[" end="\]" contains=reasonString,reasonDerive +syn region    reasonDerive      start="derive(" end=")" contained contains=reasonDeriveTrait  " This list comes from src/libsyntax/ext/deriving/mod.rs  " Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show). -syn keyword   rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy +syn keyword   reasonDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy  " Number literals -syn match     rustDecNumber   display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\)\)\=" -syn match     rustHexNumber   display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" -syn match     rustOctNumber   display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" -syn match     rustBinNumber   display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" +syn match     reasonDecNumber   display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\)\)\=" +syn match     reasonHexNumber   display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" +syn match     reasonOctNumber   display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\=" +syn match     reasonBinNumber   display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\="  " Special case for numbers of the form "1." which are float literals, unless followed by  " an identifier, which makes them integer literals with a method call or field access,  " or by another ".", which makes them integer literals followed by the ".." token.  " (This must go first so the others take precedence.) -syn match     rustFloat       display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!" +syn match     reasonFloat       display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!"  " To mark a number as a normal float, it must have at least one of the three things integral values don't have:  " a decimal point and more numbers; an exponent; and a type suffix. -syn match     rustFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" -syn match     rustFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" -syn match     rustFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" +syn match     reasonFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" +syn match     reasonFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" +syn match     reasonFloat       display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)"  " For the benefit of delimitMate -syn match   rustCharacterInvalid   display contained /b\?'\zs[\n\r\t']\ze'/ +syn match   reasonCharacterInvalid   display contained /b\?'\zs[\n\r\t']\ze'/  " The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII). -syn match   rustCharacterInvalidUnicode   display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ -syn match   rustCharacter   /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode -syn match   rustCharacter   /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid - -syn match rustShebang /\%^#![^[].*/ -syn region rustCommentLine                                        start="//"                      end="$"   contains=rustTodo,@Spell -syn region rustCommentLineDoc                                     start="//\%(//\@!\|!\)"         end="$"   contains=rustTodo,@Spell -syn region rustCommentBlock    matchgroup=rustCommentBlock        start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell -syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc     start="/\*\%(!\|\*[*/]\@!\)"    end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell -syn region rustCommentBlockNest matchgroup=rustCommentBlock       start="/\*"                     end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent -syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*"                     end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent +syn match   reasonCharacterInvalidUnicode   display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ +syn match   reasonCharacter   /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=reasonEscape,reasonEscapeError,reasonCharacterInvalid,reasonCharacterInvalidUnicode +syn match   reasonCharacter   /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\|u{\x\{1,6}}\)\)'/ contains=reasonEscape,reasonEscapeUnicode,reasonEscapeError,reasonCharacterInvalid + +syn match reasonShebang /\%^#![^[].*/ +syn region reasonCommentLine                                        start="//"                      end="$"   contains=reasonTodo,@Spell +syn region reasonCommentLineDoc                                     start="//\%(//\@!\|!\)"         end="$"   contains=reasonTodo,@Spell +syn region reasonCommentBlock    matchgroup=reasonCommentBlock        start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=reasonTodo,reasonCommentBlockNest,@Spell +syn region reasonCommentBlockDoc matchgroup=reasonCommentBlockDoc     start="/\*\%(!\|\*[*/]\@!\)"    end="\*/" contains=reasonTodo,reasonCommentBlockDocNest,@Spell +syn region reasonCommentBlockNest matchgroup=reasonCommentBlock       start="/\*"                     end="\*/" contains=reasonTodo,reasonCommentBlockNest,@Spell contained transparent +syn region reasonCommentBlockDocNest matchgroup=reasonCommentBlockDoc start="/\*"                     end="\*/" contains=reasonTodo,reasonCommentBlockDocNest,@Spell contained transparent  " FIXME: this is a really ugly and not fully correct implementation. Most  " importantly, a case like ``/* */*`` should have the final ``*`` not being in  " a comment, but in practice at present it leaves comments open two levels @@ -176,79 +176,79 @@ syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*"  " then you must deal with cases like ``/*/**/*/``. And don't try making it  " worse with ``\%(/\@<!\*\)\@<!``, either... -syn keyword rustTodo contained TODO FIXME XXX NB NOTE +syn keyword reasonTodo contained TODO FIXME XXX NB NOTE  " Folding rules {{{2  " Trivial folding rules to begin with.  " FIXME: use the AST to make really good folding -syn region rustFoldBraces start="{" end="}" transparent fold +syn region reasonFoldBraces start="{" end="}" transparent fold  " Default highlighting {{{1  hi def link labelArgument       Special  hi def link labelArgumentPunned Special -hi def link rustDecNumber       rustNumber -hi def link rustHexNumber       rustNumber -hi def link rustOctNumber       rustNumber -hi def link rustBinNumber       rustNumber -hi def link rustIdentifierPrime rustIdentifier -hi def link rustTrait           rustType -hi def link rustDeriveTrait     rustTrait - -hi def link rustMacroRepeatCount   rustMacroRepeatDelimiters -hi def link rustMacroRepeatDelimiters   Macro -hi def link rustMacroVariable Define -hi def link rustEscape        Special -hi def link rustEscapeUnicode rustEscape -hi def link rustEscapeError   Error -hi def link rustStringContinuation Special -hi def link rustString        String -hi def link rustCharacterInvalid Error -hi def link rustCharacterInvalidUnicode rustCharacterInvalid -hi def link rustCharacter     Character -hi def link rustNumber        Number -hi def link rustBoolean       Boolean -hi def link rustEnum          rustType -hi def link rustEnumVariant   Function -hi def link rustModPath       Macro -hi def link rustConstant      Constant -hi def link rustSelf          Constant -hi def link rustFloat         Float -hi def link rustArrowCharacter rustOperator -hi def link rustOperator      Keyword -hi def link rustKeyword       Keyword -hi def link rustReservedKeyword Error -hi def link rustConditional   StorageClass -hi def link rustIdentifier    Identifier -hi def link rustCapsIdent     rustIdentifier -hi def link rustFunction      Function -hi def link rustFuncName      Function -hi def link rustShebang       Comment -hi def link rustCommentLine   Comment -hi def link rustCommentLineDoc Comment -hi def link rustCommentBlock  rustCommentLine -hi def link rustCommentBlockDoc rustCommentLineDoc -hi def link rustAssert        PreCondit -hi def link rustPanic         PreCondit -hi def link rustType          Type -hi def link rustTodo          Todo -hi def link rustAttribute     PreProc -hi def link rustDerive        PreProc -hi def link rustStorage       Conditional -hi def link rustStorageIdent StorageClass -hi def link rustObsoleteStorage Error -hi def link rustExternCrate   rustKeyword -hi def link rustObsoleteExternMod Error -hi def link rustBoxPlacementParens Delimiter +hi def link reasonDecNumber       reasonNumber +hi def link reasonHexNumber       reasonNumber +hi def link reasonOctNumber       reasonNumber +hi def link reasonBinNumber       reasonNumber +hi def link reasonIdentifierPrime reasonIdentifier +hi def link reasonTrait           reasonType +hi def link reasonDeriveTrait     reasonTrait + +hi def link reasonMacroRepeatCount   reasonMacroRepeatDelimiters +hi def link reasonMacroRepeatDelimiters   Macro +hi def link reasonMacroVariable Define +hi def link reasonEscape        Special +hi def link reasonEscapeUnicode reasonEscape +hi def link reasonEscapeError   Error +hi def link reasonStringContinuation Special +hi def link reasonString        String +hi def link reasonCharacterInvalid Error +hi def link reasonCharacterInvalidUnicode reasonCharacterInvalid +hi def link reasonCharacter     Character +hi def link reasonNumber        Number +hi def link reasonBoolean       Boolean +hi def link reasonEnum          reasonType +hi def link reasonEnumVariant   Function +hi def link reasonModPath       Macro +hi def link reasonConstant      Constant +hi def link reasonSelf          Constant +hi def link reasonFloat         Float +hi def link reasonArrowCharacter reasonOperator +hi def link reasonOperator      Keyword +hi def link reasonKeyword       Keyword +hi def link reasonReservedKeyword Error +hi def link reasonConditional   StorageClass +hi def link reasonIdentifier    Identifier +hi def link reasonCapsIdent     reasonIdentifier +hi def link reasonFunction      Function +hi def link reasonFuncName      Function +hi def link reasonShebang       Comment +hi def link reasonCommentLine   Comment +hi def link reasonCommentLineDoc Comment +hi def link reasonCommentBlock  reasonCommentLine +hi def link reasonCommentBlockDoc reasonCommentLineDoc +hi def link reasonAssert        PreCondit +hi def link reasonPanic         PreCondit +hi def link reasonType          Type +hi def link reasonTodo          Todo +hi def link reasonAttribute     PreProc +hi def link reasonDerive        PreProc +hi def link reasonStorage       Conditional +hi def link reasonStorageIdent StorageClass +hi def link reasonObsoleteStorage Error +hi def link reasonExternCrate   reasonKeyword +hi def link reasonObsoleteExternMod Error +hi def link reasonBoxPlacementParens Delimiter  " Other Suggestions: -" hi rustAttribute ctermfg=cyan -" hi rustDerive ctermfg=cyan -" hi rustAssert ctermfg=yellow -" hi rustPanic ctermfg=red +" hi reasonAttribute ctermfg=cyan +" hi reasonDerive ctermfg=cyan +" hi reasonAssert ctermfg=yellow +" hi reasonPanic ctermfg=red  syn sync minlines=200  syn sync maxlines=500 -let b:current_syntax = "rust" +let b:current_syntax = "reason"  endif diff --git a/syntax/ruby.vim b/syntax/ruby.vim index 90f1ceba..5821749c 100644 --- a/syntax/ruby.vim +++ b/syntax/ruby.vim @@ -93,7 +93,7 @@ if exists("ruby_operators") || exists("ruby_pseudo_operators")    syn match rubyBooleanOperator    "\%(\w\|[^\x00-\x7F]\)\@1<!!\|&&\|||"    syn match rubyRangeOperator	   "\.\.\.\="    syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^=" -  syn match rubyAssignmentOperator "=>\@!" containedin=rubyBlockParameterList " TODO: this is inelegant +  syn match rubyAssignmentOperator "=>\@!" contained containedin=rubyBlockParameterList " TODO: this is inelegant    syn match rubyEqualityOperator   "===\|==\|!=\|!\~\|=\~"    syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<=\[" end="]" contains=ALLBUT,@rubyNotTop @@ -194,7 +194,7 @@ SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':  syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@=" -syn region rubyParentheses	  start="("				 end=")" contains=ALLBUT,@rubyNotTop containedin=rubyBlockParameterList +syn region rubyParentheses	  start="("				 end=")" contains=ALLBUT,@rubyNotTop contained containedin=rubyBlockParameterList  syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" contains=ALLBUT,@rubyNotTop,@rubyProperOperator  if exists('ruby_global_variable_error') diff --git a/syntax/terraform.vim b/syntax/terraform.vim index 03b20c2c..d72c7857 100644 --- a/syntax/terraform.vim +++ b/syntax/terraform.vim @@ -75,10 +75,13 @@ syn keyword terraDataTypeBI            \ alicloud_actiontrails            \ alicloud_alikafka_consumer_groups            \ alicloud_alikafka_instances +          \ alicloud_alikafka_sasl_acls +          \ alicloud_alikafka_sasl_users            \ alicloud_alikafka_topics            \ alicloud_api_gateway_apis            \ alicloud_api_gateway_apps            \ alicloud_api_gateway_groups +          \ alicloud_caller_identity            \ alicloud_cas_certificates            \ alicloud_cen_bandwidth_limits            \ alicloud_cen_bandwidth_packages @@ -119,15 +122,20 @@ syn keyword terraDataTypeBI            \ alicloud_file_crc64_checksum            \ alicloud_forward_entries            \ alicloud_gpdb_instances +          \ alicloud_hbase_instances            \ alicloud_images            \ alicloud_instance_type_families            \ alicloud_instance_types            \ alicloud_instances            \ alicloud_key_pairs +          \ alicloud_kms_ciphertext            \ alicloud_kms_keys +          \ alicloud_kms_plaintext            \ alicloud_kvstore_instance_classes            \ alicloud_kvstore_instance_engines            \ alicloud_kvstore_instances +          \ alicloud_market_product +          \ alicloud_market_products            \ alicloud_mns_queues            \ alicloud_mns_topic_subscriptions            \ alicloud_mns_topics @@ -148,6 +156,10 @@ syn keyword terraDataTypeBI            \ alicloud_ots_instance_attachments            \ alicloud_ots_instances            \ alicloud_ots_tables +          \ alicloud_polardb_accounts +          \ alicloud_polardb_clusters +          \ alicloud_polardb_databases +          \ alicloud_polardb_endpoints            \ alicloud_pvtz_zone_records            \ alicloud_pvtz_zones            \ alicloud_ram_account_alias @@ -183,9 +195,10 @@ syn keyword terraDataTypeBI            \ alicloud_vpn_customer_gateways            \ alicloud_vpn_gateways            \ alicloud_vswitches +          \ alicloud_yundun_bastionhost_instances +          \ alicloud_yundun_dbaudit_instance            \ alicloud_zones            \ archive_file -          \ atlas_artifact            \ avi_actiongroupconfig            \ avi_alertconfig            \ avi_alertemailconfig @@ -229,6 +242,7 @@ syn keyword terraDataTypeBI            \ avi_networkprofile            \ avi_networksecuritypolicy            \ avi_networkservice +          \ avi_objectaccesspolicy            \ avi_pingaccessagent            \ avi_pkiprofile            \ avi_pool @@ -270,8 +284,11 @@ syn keyword terraDataTypeBI            \ avi_webhook            \ aviatrix_account            \ aviatrix_caller_identity +          \ aviatrix_firenet            \ aviatrix_firenet_vendor_integration            \ aviatrix_gateway +          \ aviatrix_spoke_gateway +          \ aviatrix_transit_gateway            \ aws_acm_certificate            \ aws_acmpca_certificate_authority            \ aws_alb @@ -307,6 +324,7 @@ syn keyword terraDataTypeBI            \ aws_db_event_categories            \ aws_db_instance            \ aws_db_snapshot +          \ aws_directory_service_directory            \ aws_dx_gateway            \ aws_dynamodb_table            \ aws_ebs_default_kms_key @@ -340,6 +358,7 @@ syn keyword terraDataTypeBI            \ aws_elb_hosted_zone_id            \ aws_elb_service_account            \ aws_glue_script +          \ aws_guardduty_detector            \ aws_iam_account_alias            \ aws_iam_group            \ aws_iam_instance_profile @@ -376,6 +395,7 @@ syn keyword terraDataTypeBI            \ aws_network_interface            \ aws_network_interfaces            \ aws_organizations_organization +          \ aws_organizations_organizational_units            \ aws_partition            \ aws_prefix_list            \ aws_pricing_product @@ -405,6 +425,7 @@ syn keyword terraDataTypeBI            \ aws_sqs_queue            \ aws_ssm_document            \ aws_ssm_parameter +          \ aws_ssm_patch_baseline            \ aws_storagegateway_local_disk            \ aws_subnet            \ aws_subnet_ids @@ -427,6 +448,7 @@ syn keyword terraDataTypeBI            \ aws_workspaces_bundle            \ azurerm_api_management            \ azurerm_api_management_api +          \ azurerm_api_management_api_version_set            \ azurerm_api_management_group            \ azurerm_api_management_product            \ azurerm_api_management_user @@ -443,7 +465,6 @@ syn keyword terraDataTypeBI            \ azurerm_automation_variable_string            \ azurerm_availability_set            \ azurerm_azuread_application -          \ azurerm_azuread_service_principal            \ azurerm_batch_account            \ azurerm_batch_certificate            \ azurerm_batch_pool @@ -453,16 +474,21 @@ syn keyword terraDataTypeBI            \ azurerm_container_registry            \ azurerm_cosmosdb_account            \ azurerm_data_factory -          \ azurerm_data_lake_store +          \ azurerm_dedicated_host +          \ azurerm_dedicated_host_group            \ azurerm_dev_test_lab -          \ azurerm_dev_test_virtual_network +          \ azurerm_disk_encryption_set            \ azurerm_dns_zone +          \ azurerm_eventgrid_topic            \ azurerm_eventhub_namespace +          \ azurerm_eventhub_namespace_authorization_rule            \ azurerm_express_route_circuit            \ azurerm_firewall            \ azurerm_hdinsight_cluster            \ azurerm_healthcare_service            \ azurerm_image +          \ azurerm_iothub_dps +          \ azurerm_iothub_shared_access_policy            \ azurerm_key_vault            \ azurerm_key_vault_access_policy            \ azurerm_key_vault_key @@ -471,15 +497,18 @@ syn keyword terraDataTypeBI            \ azurerm_kubernetes_service_versions            \ azurerm_lb            \ azurerm_lb_backend_address_pool -          \ azurerm_log_analytics_workspace            \ azurerm_logic_app_workflow            \ azurerm_managed_disk            \ azurerm_management_group            \ azurerm_maps_account +          \ azurerm_mariadb_server            \ azurerm_monitor_action_group            \ azurerm_monitor_diagnostic_categories -          \ azurerm_monitor_log_profile            \ azurerm_mssql_elasticpool +          \ azurerm_nat_gateway +          \ azurerm_netapp_account +          \ azurerm_netapp_pool +          \ azurerm_netapp_volume            \ azurerm_network_ddos_protection_plan            \ azurerm_network_interface            \ azurerm_network_security_group @@ -489,6 +518,10 @@ syn keyword terraDataTypeBI            \ azurerm_platform_image            \ azurerm_policy_definition            \ azurerm_postgresql_server +          \ azurerm_private_endpoint_connection +          \ azurerm_private_link_endpoint_connection +          \ azurerm_private_link_service +          \ azurerm_private_link_service_endpoint_connections            \ azurerm_proximity_placement_group            \ azurerm_public_ip            \ azurerm_public_ip_prefix @@ -506,12 +539,14 @@ syn keyword terraDataTypeBI            \ azurerm_shared_image            \ azurerm_shared_image_gallery            \ azurerm_shared_image_version +          \ azurerm_signalr_service            \ azurerm_snapshot            \ azurerm_sql_database            \ azurerm_sql_server            \ azurerm_storage_account            \ azurerm_storage_account_blob_container_sas            \ azurerm_storage_account_sas +          \ azurerm_storage_container            \ azurerm_storage_management_policy            \ azurerm_stream_analytics_job            \ azurerm_subnet @@ -519,6 +554,7 @@ syn keyword terraDataTypeBI            \ azurerm_subscriptions            \ azurerm_traffic_manager_geographical_location            \ azurerm_user_assigned_identity +          \ azurerm_virtual_hub            \ azurerm_virtual_machine            \ azurerm_virtual_network            \ azurerm_virtual_network_gateway @@ -572,6 +608,7 @@ syn keyword terraDataTypeBI            \ digitalocean_floating_ip            \ digitalocean_image            \ digitalocean_kubernetes_cluster +          \ digitalocean_kubernetes_versions            \ digitalocean_loadbalancer            \ digitalocean_record            \ digitalocean_sizes @@ -589,7 +626,11 @@ syn keyword terraDataTypeBI            \ dns_txt_record_set            \ docker_network            \ docker_registry_image +          \ exoscale_compute +          \ exoscale_compute_ipaddress            \ exoscale_compute_template +          \ exoscale_domain +          \ exoscale_domain_record            \ external            \ fastly_ip_ranges            \ filter @@ -612,6 +653,7 @@ syn keyword terraDataTypeBI            \ flexibleengine_images_image_v2            \ flexibleengine_kms_data_key_v1            \ flexibleengine_kms_key_v1 +          \ flexibleengine_lb_certificate_v2            \ flexibleengine_networking_network_v2            \ flexibleengine_networking_secgroup_v2            \ flexibleengine_rds_flavors_v1 @@ -620,6 +662,7 @@ syn keyword terraDataTypeBI            \ flexibleengine_rts_stack_resource_v1            \ flexibleengine_rts_stack_v1            \ flexibleengine_s3_bucket_object +          \ flexibleengine_sdrs_domain_v1            \ flexibleengine_sfs_file_system_v2            \ flexibleengine_vbs_backup_policy_v2            \ flexibleengine_vbs_backup_v2 @@ -640,6 +683,7 @@ syn keyword terraDataTypeBI            \ gitlab_user            \ gitlab_users            \ google_active_folder +          \ google_bigquery_default_service_account            \ google_billing_account            \ google_client_config            \ google_client_openid_userinfo @@ -660,6 +704,7 @@ syn keyword terraDataTypeBI            \ google_compute_region_instance_group            \ google_compute_regions            \ google_compute_resource_policy +          \ google_compute_router            \ google_compute_ssl_certificate            \ google_compute_ssl_policy            \ google_compute_subnetwork @@ -679,25 +724,37 @@ syn keyword terraDataTypeBI            \ google_kms_key_ring            \ google_kms_secret            \ google_kms_secret_ciphertext +          \ google_monitoring_notification_channel            \ google_netblock_ip_ranges            \ google_organization            \ google_project            \ google_project_organization_policy            \ google_project_services            \ google_projects +          \ google_secret_manager_secret_version            \ google_service_account            \ google_service_account_access_token            \ google_service_account_key +          \ google_sql_ca_certs            \ google_storage_bucket_object            \ google_storage_object_signed_url            \ google_storage_project_service_account            \ google_storage_transfer_project_service_account            \ google_tpu_tensorflow_versions            \ grafana_data_source +          \ gridscale_firewall            \ gridscale_ipv4            \ gridscale_ipv6 +          \ gridscale_isoimage            \ gridscale_loadbalancer            \ gridscale_network +          \ gridscale_object_storage_accesskey +          \ gridscale_paas +          \ gridscale_paas_securityzone +          \ gridscale_public_network +          \ gridscale_server +          \ gridscale_snapshot +          \ gridscale_snapshotschedule            \ gridscale_sshkey            \ gridscale_storage            \ gridscale_template @@ -722,6 +779,7 @@ syn keyword terraDataTypeBI            \ huaweicloud_cce_cluster_v3            \ huaweicloud_cce_node_v3            \ huaweicloud_cdm_flavors_v1 +          \ huaweicloud_compute_availability_zones_v2            \ huaweicloud_csbs_backup_policy_v1            \ huaweicloud_csbs_backup_v1            \ huaweicloud_cts_tracker_v1 @@ -742,6 +800,7 @@ syn keyword terraDataTypeBI            \ huaweicloud_networking_secgroup_v2            \ huaweicloud_networking_subnet_v2            \ huaweicloud_rds_flavors_v1 +          \ huaweicloud_rds_flavors_v3            \ huaweicloud_rts_software_config_v1            \ huaweicloud_rts_stack_resource_v1            \ huaweicloud_rts_stack_v1 @@ -749,12 +808,18 @@ syn keyword terraDataTypeBI            \ huaweicloud_sfs_file_system_v2            \ huaweicloud_vbs_backup_policy_v2            \ huaweicloud_vbs_backup_v2 +          \ huaweicloud_vpc_ids_v1            \ huaweicloud_vpc_peering_connection_v2            \ huaweicloud_vpc_route_ids_v2            \ huaweicloud_vpc_route_v2            \ huaweicloud_vpc_subnet_ids_v1            \ huaweicloud_vpc_subnet_v1            \ huaweicloud_vpc_v1 +          \ huaweicloudstack_images_image_v2 +          \ huaweicloudstack_networking_network_v2 +          \ huaweicloudstack_networking_port_v2 +          \ huaweicloudstack_networking_secgroup_v2 +          \ huaweicloudstack_networking_subnet_v2            \ ignition_config            \ ignition_directory            \ ignition_disk @@ -780,24 +845,39 @@ syn keyword terraDataTypeBI            \ linode_region            \ linode_sshkey            \ linode_user +          \ linode_volume            \ local_file            \ logentries_logset            \ logicmonitor_collectors +          \ logicmonitor_dashboard +          \ logicmonitor_dashboard_group            \ logicmonitor_device_group +          \ metalcloud_volume_template +          \ mongodbatlas_alert_configuration +          \ mongodbatlas_auditing            \ mongodbatlas_cloud_provider_snapshot            \ mongodbatlas_cloud_provider_snapshot_restore_job            \ mongodbatlas_cloud_provider_snapshot_restore_jobs            \ mongodbatlas_cloud_provider_snapshots            \ mongodbatlas_cluster            \ mongodbatlas_clusters +          \ mongodbatlas_custom_db_role +          \ mongodbatlas_custom_db_roles            \ mongodbatlas_database_user            \ mongodbatlas_database_users +          \ mongodbatlas_global_cluster_config +          \ mongodbatlas_maintenance_window            \ mongodbatlas_network_container            \ mongodbatlas_network_containers            \ mongodbatlas_network_peering            \ mongodbatlas_network_peerings +          \ mongodbatlas_private_endpoint +          \ mongodbatlas_private_endpoint_interface_link            \ mongodbatlas_project            \ mongodbatlas_projects +          \ mongodbatlas_team +          \ mongodbatlas_teams +          \ mongodbatlas_x509_authentication_database_user            \ ncloud_access_control_group            \ ncloud_access_control_groups            \ ncloud_access_control_rule @@ -820,6 +900,8 @@ syn keyword terraDataTypeBI            \ newrelic_alert_policy            \ newrelic_application            \ newrelic_key_transaction +          \ newrelic_plugin +          \ newrelic_plugin_component            \ newrelic_synthetics_monitor            \ nomad_acl_policy            \ nomad_acl_token @@ -832,12 +914,35 @@ syn keyword terraDataTypeBI            \ ns1_zone            \ nsxt_certificate            \ nsxt_edge_cluster +          \ nsxt_firewall_section            \ nsxt_ip_pool            \ nsxt_logical_tier0_router            \ nsxt_logical_tier1_router            \ nsxt_mac_pool            \ nsxt_ns_group            \ nsxt_ns_service +          \ nsxt_policy_certificate +          \ nsxt_policy_edge_cluster +          \ nsxt_policy_edge_node +          \ nsxt_policy_ip_discovery_profile +          \ nsxt_policy_ipv6_dad_profile +          \ nsxt_policy_ipv6_ndra_profile +          \ nsxt_policy_lb_app_profile +          \ nsxt_policy_lb_client_ssl_profile +          \ nsxt_policy_lb_monitor +          \ nsxt_policy_lb_persistence_profile +          \ nsxt_policy_lb_server_ssl_profile +          \ nsxt_policy_mac_discovery_profile +          \ nsxt_policy_qos_profile +          \ nsxt_policy_realization_info +          \ nsxt_policy_segment_security_profile +          \ nsxt_policy_service +          \ nsxt_policy_spoofguard_profile +          \ nsxt_policy_tier0_gateway +          \ nsxt_policy_tier1_gateway +          \ nsxt_policy_transport_zone +          \ nsxt_policy_vm +          \ nsxt_policy_vni_pool            \ nsxt_switching_profile            \ nsxt_transport_zone            \ null_data_source @@ -850,6 +955,12 @@ syn keyword terraDataTypeBI            \ nutanix_virtual_machine            \ nutanix_volume_group            \ nutanix_volume_groups +          \ oci_analytics_analytics_instance +          \ oci_analytics_analytics_instances +          \ oci_apigateway_deployment +          \ oci_apigateway_deployments +          \ oci_apigateway_gateway +          \ oci_apigateway_gateways            \ oci_audit_configuration            \ oci_audit_events            \ oci_autoscaling_auto_scaling_configuration @@ -975,6 +1086,7 @@ syn keyword terraDataTypeBI            \ oci_database_autonomous_databases            \ oci_database_autonomous_db_preview_versions            \ oci_database_autonomous_exadata_infrastructure +          \ oci_database_autonomous_exadata_infrastructure_ocpu            \ oci_database_autonomous_exadata_infrastructure_shapes            \ oci_database_autonomous_exadata_infrastructures            \ oci_database_backup_destination @@ -1008,11 +1120,35 @@ syn keyword terraDataTypeBI            \ oci_database_vm_cluster_networks            \ oci_database_vm_cluster_recommended_network            \ oci_database_vm_clusters +          \ oci_datacatalog_catalog +          \ oci_datacatalog_catalog_type +          \ oci_datacatalog_catalog_types +          \ oci_datacatalog_catalogs +          \ oci_datacatalog_connection +          \ oci_datacatalog_connections +          \ oci_datacatalog_data_asset +          \ oci_datacatalog_data_assets +          \ oci_dataflow_application +          \ oci_dataflow_applications +          \ oci_dataflow_invoke_run +          \ oci_dataflow_invoke_runs +          \ oci_dataflow_run_log +          \ oci_dataflow_run_logs +          \ oci_datascience_model +          \ oci_datascience_model_provenance +          \ oci_datascience_models +          \ oci_datascience_notebook_session +          \ oci_datascience_notebook_session_shapes +          \ oci_datascience_notebook_sessions +          \ oci_datascience_project +          \ oci_datascience_projects            \ oci_dns_records            \ oci_dns_steering_policies            \ oci_dns_steering_policy            \ oci_dns_steering_policy_attachment            \ oci_dns_steering_policy_attachments +          \ oci_dns_tsig_key +          \ oci_dns_tsig_keys            \ oci_dns_zones            \ oci_email_sender            \ oci_email_senders @@ -1067,6 +1203,8 @@ syn keyword terraDataTypeBI            \ oci_identity_user            \ oci_identity_user_group_memberships            \ oci_identity_users +          \ oci_integration_integration_instance +          \ oci_integration_integration_instances            \ oci_kms_decrypted_data            \ oci_kms_encrypted_data            \ oci_kms_key @@ -1098,6 +1236,15 @@ syn keyword terraDataTypeBI            \ oci_load_balancer_rule_sets            \ oci_load_balancer_shapes            \ oci_load_balancers +          \ oci_marketplace_accepted_agreement +          \ oci_marketplace_accepted_agreements +          \ oci_marketplace_categories +          \ oci_marketplace_listing +          \ oci_marketplace_listing_package +          \ oci_marketplace_listing_package_agreements +          \ oci_marketplace_listing_packages +          \ oci_marketplace_listings +          \ oci_marketplace_publishers            \ oci_monitoring_alarm            \ oci_monitoring_alarm_history_collection            \ oci_monitoring_alarm_statuses @@ -1122,8 +1269,21 @@ syn keyword terraDataTypeBI            \ oci_ons_notification_topics            \ oci_ons_subscription            \ oci_ons_subscriptions +          \ oci_osmanagement_managed_instance +          \ oci_osmanagement_managed_instance_group +          \ oci_osmanagement_managed_instance_groups +          \ oci_osmanagement_managed_instances +          \ oci_osmanagement_software_source +          \ oci_osmanagement_software_sources +          \ oci_resourcemanager_stack +          \ oci_resourcemanager_stack_tf_state +          \ oci_resourcemanager_stacks +          \ oci_streaming_connect_harness +          \ oci_streaming_connect_harnesses            \ oci_streaming_stream            \ oci_streaming_stream_archiver +          \ oci_streaming_stream_pool +          \ oci_streaming_stream_pools            \ oci_streaming_streams            \ oci_waas_address_list            \ oci_waas_address_lists @@ -1159,6 +1319,8 @@ syn keyword terraDataTypeBI            \ openstack_blockstorage_availability_zones_v3            \ openstack_blockstorage_snapshot_v2            \ openstack_blockstorage_snapshot_v3 +          \ openstack_blockstorage_volume_v2 +          \ openstack_blockstorage_volume_v3            \ openstack_compute_availability_zones_v2            \ openstack_compute_flavor_v2            \ openstack_compute_keypair_v2 @@ -1245,12 +1407,23 @@ syn keyword terraDataTypeBI            \ oraclepaas_database_service_instance            \ ovh_cloud_region            \ ovh_cloud_regions +          \ ovh_dedicated_installation_templates +          \ ovh_dedicated_server +          \ ovh_dedicated_server_boots +          \ ovh_dedicated_servers            \ ovh_domain_zone            \ ovh_iploadbalancing +          \ ovh_iploadbalancing_vrack_network +          \ ovh_iploadbalancing_vrack_networks +          \ ovh_me_installation_template +          \ ovh_me_installation_templates            \ ovh_me_paymentmean_bankaccount            \ ovh_me_paymentmean_creditcard +          \ ovh_me_ssh_key +          \ ovh_me_ssh_keys            \ ovh_publiccloud_region            \ ovh_publiccloud_regions +          \ ovh_vracks            \ packet_device            \ packet_ip_block_ranges            \ packet_operating_system @@ -1342,8 +1515,14 @@ syn keyword terraDataTypeBI            \ runscope_integrations            \ scaffolding_data_source            \ scaleway_account_ssh_key +          \ scaleway_baremetal_offer_beta            \ scaleway_bootscript            \ scaleway_image +          \ scaleway_instance_image +          \ scaleway_instance_security_group +          \ scaleway_instance_server +          \ scaleway_instance_volume +          \ scaleway_marketplace_image_beta            \ scaleway_security_group            \ scaleway_volume            \ skytap_project @@ -1384,6 +1563,7 @@ syn keyword terraDataTypeBI            \ tencentcloud_cam_saml_providers            \ tencentcloud_cam_user_policy_attachments            \ tencentcloud_cam_users +          \ tencentcloud_cbs_snapshot_policies            \ tencentcloud_cbs_snapshots            \ tencentcloud_cbs_storages            \ tencentcloud_ccn_bandwidth_limits @@ -1400,6 +1580,13 @@ syn keyword terraDataTypeBI            \ tencentcloud_container_clusters            \ tencentcloud_cos_bucket_object            \ tencentcloud_cos_buckets +          \ tencentcloud_dayu_cc_http_policies +          \ tencentcloud_dayu_cc_https_policies +          \ tencentcloud_dayu_ddos_policies +          \ tencentcloud_dayu_ddos_policy_attachments +          \ tencentcloud_dayu_ddos_policy_cases +          \ tencentcloud_dayu_l4_rules +          \ tencentcloud_dayu_l7_rules            \ tencentcloud_dc_gateway_ccn_routes            \ tencentcloud_dc_gateway_instances            \ tencentcloud_dc_instances @@ -1409,6 +1596,7 @@ syn keyword terraDataTypeBI            \ tencentcloud_eips            \ tencentcloud_enis            \ tencentcloud_gaap_certificates +          \ tencentcloud_gaap_domain_error_pages            \ tencentcloud_gaap_http_domains            \ tencentcloud_gaap_http_rules            \ tencentcloud_gaap_layer4_listeners @@ -1417,7 +1605,10 @@ syn keyword terraDataTypeBI            \ tencentcloud_gaap_realservers            \ tencentcloud_gaap_security_policies            \ tencentcloud_gaap_security_rules +          \ tencentcloud_ha_vip_eip_attachments +          \ tencentcloud_ha_vips            \ tencentcloud_image +          \ tencentcloud_images            \ tencentcloud_instance_types            \ tencentcloud_instances            \ tencentcloud_key_pairs @@ -1443,11 +1634,20 @@ syn keyword terraDataTypeBI            \ tencentcloud_security_groups            \ tencentcloud_ssl_certificates            \ tencentcloud_subnet +          \ tencentcloud_tcaplus_applications +          \ tencentcloud_tcaplus_idls +          \ tencentcloud_tcaplus_tables +          \ tencentcloud_tcaplus_zones            \ tencentcloud_vpc            \ tencentcloud_vpc_instances            \ tencentcloud_vpc_route_tables            \ tencentcloud_vpc_subnets +          \ tencentcloud_vpn_connections +          \ tencentcloud_vpn_customer_gateways +          \ tencentcloud_vpn_gateways            \ terraform_remote_state +          \ test_data_source +          \ test_provider_label            \ tfe_ssh_key            \ tfe_team            \ tfe_team_access @@ -1486,6 +1686,7 @@ syn keyword terraDataTypeBI            \ vsphere_host            \ vsphere_network            \ vsphere_resource_pool +          \ vsphere_storage_policy            \ vsphere_tag            \ vsphere_tag_category            \ vsphere_vapp_container @@ -1518,6 +1719,7 @@ syn keyword terraDataTypeBI            \ yandex_compute_instance_group            \ yandex_compute_snapshot            \ yandex_container_registry +          \ yandex_dataproc_cluster            \ yandex_iam_policy            \ yandex_iam_role            \ yandex_iam_service_account @@ -1526,6 +1728,10 @@ syn keyword terraDataTypeBI            \ yandex_kubernetes_node_group            \ yandex_lb_network_load_balancer            \ yandex_lb_target_group +          \ yandex_mdb_clickhouse_cluster +          \ yandex_mdb_mongodb_cluster +          \ yandex_mdb_mysql_cluster +          \ yandex_mdb_postgresql_cluster            \ yandex_mdb_redis_cluster            \ yandex_resourcemanager_cloud            \ yandex_resourcemanager_folder @@ -1596,6 +1802,8 @@ syn keyword terraResourceTypeBI            \ alicloud_actiontrail            \ alicloud_alikafka_consumer_group            \ alicloud_alikafka_instance +          \ alicloud_alikafka_sasl_acl +          \ alicloud_alikafka_sasl_user            \ alicloud_alikafka_topic            \ alicloud_api_gateway_api            \ alicloud_api_gateway_app @@ -1614,14 +1822,18 @@ syn keyword terraResourceTypeBI            \ alicloud_cen_instance_grant            \ alicloud_cen_route_entry            \ alicloud_cloud_connect_network +          \ alicloud_cloud_connect_network_attachment +          \ alicloud_cloud_connect_network_grant            \ alicloud_cms_alarm            \ alicloud_common_bandwidth_package            \ alicloud_common_bandwidth_package_attachment            \ alicloud_container_cluster +          \ alicloud_copy_image            \ alicloud_cr_namespace            \ alicloud_cr_repo            \ alicloud_cs_application            \ alicloud_cs_kubernetes +          \ alicloud_cs_kubernetes_autoscaler            \ alicloud_cs_managed_kubernetes            \ alicloud_cs_serverless_kubernetes            \ alicloud_cs_swarm @@ -1666,10 +1878,18 @@ syn keyword terraResourceTypeBI            \ alicloud_gpdb_instance            \ alicloud_havip            \ alicloud_havip_attachment +          \ alicloud_hbase_instance +          \ alicloud_image +          \ alicloud_image_copy +          \ alicloud_image_export +          \ alicloud_image_import +          \ alicloud_image_share_permission            \ alicloud_instance            \ alicloud_key_pair            \ alicloud_key_pair_attachment +          \ alicloud_kms_ciphertext            \ alicloud_kms_key +          \ alicloud_kvstore_account            \ alicloud_kvstore_backup_policy            \ alicloud_kvstore_instance            \ alicloud_launch_template @@ -1679,6 +1899,7 @@ syn keyword terraResourceTypeBI            \ alicloud_log_store_index            \ alicloud_logtail_attachment            \ alicloud_logtail_config +          \ alicloud_market_order            \ alicloud_mns_queue            \ alicloud_mns_topic            \ alicloud_mns_topic_subscription @@ -1702,6 +1923,12 @@ syn keyword terraResourceTypeBI            \ alicloud_ots_instance            \ alicloud_ots_instance_attachment            \ alicloud_ots_table +          \ alicloud_polardb_account +          \ alicloud_polardb_account_privilege +          \ alicloud_polardb_backup_policy +          \ alicloud_polardb_cluster +          \ alicloud_polardb_database +          \ alicloud_polardb_endpoint_address            \ alicloud_pvtz_zone            \ alicloud_pvtz_zone_attachment            \ alicloud_pvtz_zone_record @@ -1719,6 +1946,7 @@ syn keyword terraResourceTypeBI            \ alicloud_ram_role_policy_attachment            \ alicloud_ram_user            \ alicloud_ram_user_policy_attachment +          \ alicloud_reserved_instance            \ alicloud_route_entry            \ alicloud_route_table            \ alicloud_route_table_attachment @@ -1726,6 +1954,8 @@ syn keyword terraResourceTypeBI            \ alicloud_router_interface_connection            \ alicloud_sag_acl            \ alicloud_sag_acl_rule +          \ alicloud_sag_client_user +          \ alicloud_sag_dnat_entry            \ alicloud_sag_qos            \ alicloud_sag_qos_car            \ alicloud_sag_qos_policy @@ -1755,8 +1985,10 @@ syn keyword terraResourceTypeBI            \ alicloud_vpn_gateway            \ alicloud_vpn_route_entry            \ alicloud_vswitch +          \ alicloud_yundun_bastionhost_instance +          \ alicloud_yundun_dbaudit_instance            \ arukas_container -          \ atlas_artifact +          \ auth0_resource_server            \ avi_actiongroupconfig            \ avi_alertconfig            \ avi_alertemailconfig @@ -1800,6 +2032,7 @@ syn keyword terraResourceTypeBI            \ avi_networkprofile            \ avi_networksecuritypolicy            \ avi_networkservice +          \ avi_objectaccesspolicy            \ avi_pingaccessagent            \ avi_pkiprofile            \ avi_pool @@ -1845,6 +2078,7 @@ syn keyword terraResourceTypeBI            \ aviatrix_arm_peer            \ aviatrix_aws_peer            \ aviatrix_aws_tgw +          \ aviatrix_aws_tgw_directconnect            \ aviatrix_aws_tgw_vpc_attachment            \ aviatrix_aws_tgw_vpn_conn            \ aviatrix_controller_config @@ -1854,6 +2088,9 @@ syn keyword terraResourceTypeBI            \ aviatrix_firewall_tag            \ aviatrix_fqdn            \ aviatrix_gateway +          \ aviatrix_gateway_dnat +          \ aviatrix_gateway_snat +          \ aviatrix_geo_vpn            \ aviatrix_saml_endpoint            \ aviatrix_site2cloud            \ aviatrix_spoke_gateway @@ -1868,6 +2105,7 @@ syn keyword terraResourceTypeBI            \ aviatrix_vpn_profile            \ aviatrix_vpn_user            \ aviatrix_vpn_user_accelerator +          \ aws_accessanalyzer_analyzer            \ aws_acm_certificate            \ aws_acm_certificate_validation            \ aws_acmpca_certificate_authority @@ -1989,6 +2227,7 @@ syn keyword terraResourceTypeBI            \ aws_datasync_location_efs            \ aws_datasync_location_nfs            \ aws_datasync_location_s3 +          \ aws_datasync_location_smb            \ aws_datasync_task            \ aws_dax_cluster            \ aws_dax_parameter_group @@ -2033,6 +2272,8 @@ syn keyword terraResourceTypeBI            \ aws_dx_hosted_private_virtual_interface_accepter            \ aws_dx_hosted_public_virtual_interface            \ aws_dx_hosted_public_virtual_interface_accepter +          \ aws_dx_hosted_transit_virtual_interface +          \ aws_dx_hosted_transit_virtual_interface_accepter            \ aws_dx_lag            \ aws_dx_private_virtual_interface            \ aws_dx_public_virtual_interface @@ -2059,6 +2300,7 @@ syn keyword terraResourceTypeBI            \ aws_ecr_lifecycle_policy            \ aws_ecr_repository            \ aws_ecr_repository_policy +          \ aws_ecs_capacity_provider            \ aws_ecs_cluster            \ aws_ecs_service            \ aws_ecs_task_definition @@ -2068,6 +2310,8 @@ syn keyword terraResourceTypeBI            \ aws_eip            \ aws_eip_association            \ aws_eks_cluster +          \ aws_eks_fargate_profile +          \ aws_eks_node_group            \ aws_elastic_beanstalk_application            \ aws_elastic_beanstalk_application_version            \ aws_elastic_beanstalk_configuration_template @@ -2107,6 +2351,7 @@ syn keyword terraResourceTypeBI            \ aws_glue_job            \ aws_glue_security_configuration            \ aws_glue_trigger +          \ aws_glue_workflow            \ aws_guardduty_detector            \ aws_guardduty_invite_accepter            \ aws_guardduty_ipset @@ -2160,8 +2405,10 @@ syn keyword terraResourceTypeBI            \ aws_lambda_alias            \ aws_lambda_event_source_mapping            \ aws_lambda_function +          \ aws_lambda_function_event_invoke_config            \ aws_lambda_layer_version            \ aws_lambda_permission +          \ aws_lambda_provisioned_concurrency_config            \ aws_launch_configuration            \ aws_launch_template            \ aws_lb @@ -2185,6 +2432,7 @@ syn keyword terraResourceTypeBI            \ aws_macie_member_account_association            \ aws_macie_s3_bucket_association            \ aws_main_route_table_association +          \ aws_media_convert_queue            \ aws_media_package_channel            \ aws_media_store_container            \ aws_media_store_container_policy @@ -2395,6 +2643,8 @@ syn keyword terraResourceTypeBI            \ aws_wafregional_xss_match_set            \ aws_worklink_fleet            \ aws_worklink_website_certificate_authority_association +          \ aws_workspaces_directory +          \ aws_workspaces_ip_group            \ aws_xray_sampling_rule            \ azure_affinity_group            \ azure_data_disk @@ -2419,6 +2669,7 @@ syn keyword terraResourceTypeBI            \ azuread_service_principal            \ azuread_service_principal_password            \ azuread_user +          \ azurerm_advanced_threat_protection            \ azurerm_analysis_services_server            \ azurerm_api_management            \ azurerm_api_management_api @@ -2430,8 +2681,14 @@ syn keyword terraResourceTypeBI            \ azurerm_api_management_authorization_server            \ azurerm_api_management_backend            \ azurerm_api_management_certificate +          \ azurerm_api_management_diagnostic            \ azurerm_api_management_group            \ azurerm_api_management_group_user +          \ azurerm_api_management_identity_provider_aad +          \ azurerm_api_management_identity_provider_facebook +          \ azurerm_api_management_identity_provider_google +          \ azurerm_api_management_identity_provider_microsoft +          \ azurerm_api_management_identity_provider_twitter            \ azurerm_api_management_logger            \ azurerm_api_management_openid_connect_provider            \ azurerm_api_management_product @@ -2441,6 +2698,7 @@ syn keyword terraResourceTypeBI            \ azurerm_api_management_property            \ azurerm_api_management_subscription            \ azurerm_api_management_user +          \ azurerm_app_configuration            \ azurerm_app_service            \ azurerm_app_service_active_slot            \ azurerm_app_service_certificate @@ -2449,6 +2707,7 @@ syn keyword terraResourceTypeBI            \ azurerm_app_service_plan            \ azurerm_app_service_slot            \ azurerm_app_service_source_control_token +          \ azurerm_app_service_virtual_network_swift_connection            \ azurerm_application_gateway            \ azurerm_application_insights            \ azurerm_application_insights_analytics_item @@ -2456,6 +2715,7 @@ syn keyword terraResourceTypeBI            \ azurerm_application_insights_web_test            \ azurerm_application_security_group            \ azurerm_automation_account +          \ azurerm_automation_certificate            \ azurerm_automation_credential            \ azurerm_automation_dsc_configuration            \ azurerm_automation_dsc_nodeconfiguration @@ -2470,14 +2730,19 @@ syn keyword terraResourceTypeBI            \ azurerm_autoscale_setting            \ azurerm_availability_set            \ azurerm_azuread_application -          \ azurerm_azuread_service_principal            \ azurerm_azuread_service_principal_password +          \ azurerm_backup_container_storage_account +          \ azurerm_backup_policy_file_share +          \ azurerm_backup_policy_vm +          \ azurerm_backup_protected_file_share +          \ azurerm_backup_protected_vm            \ azurerm_bastion_host            \ azurerm_batch_account            \ azurerm_batch_application            \ azurerm_batch_certificate            \ azurerm_batch_pool            \ azurerm_bot_channel_email +          \ azurerm_bot_channel_ms_teams            \ azurerm_bot_channel_slack            \ azurerm_bot_channels_registration            \ azurerm_bot_connection @@ -2492,11 +2757,12 @@ syn keyword terraResourceTypeBI            \ azurerm_container_service            \ azurerm_cosmosdb_account            \ azurerm_cosmosdb_cassandra_keyspace +          \ azurerm_cosmosdb_gremlin_database +          \ azurerm_cosmosdb_gremlin_graph            \ azurerm_cosmosdb_mongo_collection            \ azurerm_cosmosdb_mongo_database            \ azurerm_cosmosdb_sql_container            \ azurerm_cosmosdb_sql_database -          \ azurerm_cosmosdb_table            \ azurerm_dashboard            \ azurerm_data_factory            \ azurerm_data_factory_dataset_mysql @@ -2508,20 +2774,22 @@ syn keyword terraResourceTypeBI            \ azurerm_data_factory_linked_service_postgresql            \ azurerm_data_factory_linked_service_sql_server            \ azurerm_data_factory_pipeline +          \ azurerm_data_factory_trigger_schedule            \ azurerm_data_lake_analytics_account            \ azurerm_data_lake_analytics_firewall_rule -          \ azurerm_data_lake_store            \ azurerm_data_lake_store_file            \ azurerm_data_lake_store_firewall_rule            \ azurerm_databricks_workspace            \ azurerm_ddos_protection_plan +          \ azurerm_dedicated_host +          \ azurerm_dedicated_host_group            \ azurerm_dev_test_lab            \ azurerm_dev_test_linux_virtual_machine            \ azurerm_dev_test_policy            \ azurerm_dev_test_schedule            \ azurerm_dev_test_virtual_network -          \ azurerm_dev_test_windows_virtual_machine            \ azurerm_devspace_controller +          \ azurerm_disk_encryption_set            \ azurerm_dns_a_record            \ azurerm_dns_aaaa_record            \ azurerm_dns_caa_record @@ -2531,11 +2799,9 @@ syn keyword terraResourceTypeBI            \ azurerm_dns_ptr_record            \ azurerm_dns_srv_record            \ azurerm_dns_txt_record -          \ azurerm_dns_zone            \ azurerm_eventgrid_domain            \ azurerm_eventgrid_event_subscription            \ azurerm_eventgrid_topic -          \ azurerm_eventhub            \ azurerm_eventhub_authorization_rule            \ azurerm_eventhub_consumer_group            \ azurerm_eventhub_namespace @@ -2549,7 +2815,6 @@ syn keyword terraResourceTypeBI            \ azurerm_firewall_nat_rule_collection            \ azurerm_firewall_network_rule_collection            \ azurerm_frontdoor -          \ azurerm_frontdoor_firewall_policy            \ azurerm_function_app            \ azurerm_hdinsight_hadoop_cluster            \ azurerm_hdinsight_hbase_cluster @@ -2558,22 +2823,31 @@ syn keyword terraResourceTypeBI            \ azurerm_hdinsight_ml_services_cluster            \ azurerm_hdinsight_rserver_cluster            \ azurerm_hdinsight_spark_cluster -          \ azurerm_hdinsight_storm_cluster            \ azurerm_healthcare_service            \ azurerm_image            \ azurerm_iot_dps            \ azurerm_iot_dps_certificate            \ azurerm_iothub            \ azurerm_iothub_consumer_group -          \ azurerm_iothub_shared_access_policy +          \ azurerm_iothub_dps +          \ azurerm_iothub_dps_certificate +          \ azurerm_iothub_dps_shared_access_policy +          \ azurerm_iothub_endpoint_eventhub +          \ azurerm_iothub_endpoint_servicebus_queue +          \ azurerm_iothub_endpoint_servicebus_topic +          \ azurerm_iothub_endpoint_storage_container +          \ azurerm_iothub_fallback_route +          \ azurerm_iothub_route            \ azurerm_key_vault            \ azurerm_key_vault_access_policy            \ azurerm_key_vault_certificate            \ azurerm_key_vault_key            \ azurerm_key_vault_secret            \ azurerm_kubernetes_cluster +          \ azurerm_kubernetes_cluster_node_pool            \ azurerm_kusto_cluster            \ azurerm_kusto_database +          \ azurerm_kusto_database_principal            \ azurerm_kusto_eventhub_data_connection            \ azurerm_lb            \ azurerm_lb_backend_address_pool @@ -2585,14 +2859,12 @@ syn keyword terraResourceTypeBI            \ azurerm_local_network_gateway            \ azurerm_log_analytics_linked_service            \ azurerm_log_analytics_solution -          \ azurerm_log_analytics_workspace            \ azurerm_log_analytics_workspace_linked_service            \ azurerm_logic_app_action_custom            \ azurerm_logic_app_action_http            \ azurerm_logic_app_trigger_custom            \ azurerm_logic_app_trigger_http_request            \ azurerm_logic_app_trigger_recurrence -          \ azurerm_logic_app_workflow            \ azurerm_managed_disk            \ azurerm_management_group            \ azurerm_management_lock @@ -2601,7 +2873,6 @@ syn keyword terraResourceTypeBI            \ azurerm_mariadb_database            \ azurerm_mariadb_firewall_rule            \ azurerm_mariadb_server -          \ azurerm_mariadb_virtual_network_rule            \ azurerm_marketplace_agreement            \ azurerm_media_services_account            \ azurerm_metric_alertrule @@ -2611,13 +2882,18 @@ syn keyword terraResourceTypeBI            \ azurerm_monitor_diagnostic_setting            \ azurerm_monitor_log_profile            \ azurerm_monitor_metric_alert -          \ azurerm_monitor_metric_alertrule +          \ azurerm_mssql_database_vulnerability_assessment_rule_baseline            \ azurerm_mssql_elasticpool +          \ azurerm_mssql_server_security_alert_policy +          \ azurerm_mssql_server_vulnerability_assessment            \ azurerm_mysql_configuration            \ azurerm_mysql_database            \ azurerm_mysql_firewall_rule            \ azurerm_mysql_server -          \ azurerm_mysql_virtual_network_rule +          \ azurerm_nat_gateway +          \ azurerm_netapp_account +          \ azurerm_netapp_pool +          \ azurerm_netapp_volume            \ azurerm_network_connection_monitor            \ azurerm_network_ddos_protection_plan            \ azurerm_network_interface @@ -2630,10 +2906,12 @@ syn keyword terraResourceTypeBI            \ azurerm_network_security_group            \ azurerm_network_security_rule            \ azurerm_network_watcher +          \ azurerm_network_watcher_flow_log            \ azurerm_notification_hub            \ azurerm_notification_hub_authorization_rule            \ azurerm_notification_hub_namespace            \ azurerm_packet_capture +          \ azurerm_point_to_site_vpn_gateway            \ azurerm_policy_assignment            \ azurerm_policy_definition            \ azurerm_policy_set_definition @@ -2643,10 +2921,16 @@ syn keyword terraResourceTypeBI            \ azurerm_postgresql_server            \ azurerm_postgresql_virtual_network_rule            \ azurerm_private_dns_a_record +          \ azurerm_private_dns_aaaa_record            \ azurerm_private_dns_cname_record +          \ azurerm_private_dns_mx_record            \ azurerm_private_dns_ptr_record +          \ azurerm_private_dns_srv_record            \ azurerm_private_dns_zone            \ azurerm_private_dns_zone_virtual_network_link +          \ azurerm_private_endpoint +          \ azurerm_private_link_endpoint +          \ azurerm_private_link_service            \ azurerm_proximity_placement_group            \ azurerm_public_ip            \ azurerm_public_ip_prefix @@ -2661,6 +2945,7 @@ syn keyword terraResourceTypeBI            \ azurerm_recovery_services_vault            \ azurerm_redis_cache            \ azurerm_redis_firewall_rule +          \ azurerm_relay_hybrid_connection            \ azurerm_relay_namespace            \ azurerm_resource_group            \ azurerm_resources @@ -2687,6 +2972,12 @@ syn keyword terraResourceTypeBI            \ azurerm_shared_image_gallery            \ azurerm_shared_image_version            \ azurerm_signalr_service +          \ azurerm_site_recovery_fabric +          \ azurerm_site_recovery_network_mapping +          \ azurerm_site_recovery_protection_container +          \ azurerm_site_recovery_protection_container_mapping +          \ azurerm_site_recovery_replicated_vm +          \ azurerm_site_recovery_replication_policy            \ azurerm_snapshot            \ azurerm_sql_active_directory_administrator            \ azurerm_sql_database @@ -2696,6 +2987,7 @@ syn keyword terraResourceTypeBI            \ azurerm_sql_server            \ azurerm_sql_virtual_network_rule            \ azurerm_storage_account +          \ azurerm_storage_account_network_rules            \ azurerm_storage_blob            \ azurerm_storage_container            \ azurerm_storage_data_lake_gen2_filesystem @@ -2712,16 +3004,19 @@ syn keyword terraResourceTypeBI            \ azurerm_stream_analytics_output_mssql            \ azurerm_stream_analytics_output_servicebus_queue            \ azurerm_stream_analytics_output_servicebus_topic +          \ azurerm_stream_analytics_reference_input_blob            \ azurerm_stream_analytics_stream_input_blob            \ azurerm_stream_analytics_stream_input_eventhub            \ azurerm_stream_analytics_stream_input_iothub            \ azurerm_subnet +          \ azurerm_subnet_nat_gateway_association            \ azurerm_subnet_network_security_group_association            \ azurerm_subnet_route_table_association            \ azurerm_template_deployment            \ azurerm_traffic_manager_endpoint            \ azurerm_traffic_manager_profile            \ azurerm_user_assigned_identity +          \ azurerm_virtual_hub            \ azurerm_virtual_machine            \ azurerm_virtual_machine_data_disk_attachment            \ azurerm_virtual_machine_extension @@ -2731,6 +3026,8 @@ syn keyword terraResourceTypeBI            \ azurerm_virtual_network_gateway_connection            \ azurerm_virtual_network_peering            \ azurerm_virtual_wan +          \ azurerm_vpn_gateway +          \ azurerm_vpn_server_configuration            \ azurerm_web_application_firewall_policy            \ azurestack_availability_set            \ azurestack_dns_a_record @@ -2764,6 +3061,7 @@ syn keyword terraResourceTypeBI            \ bigip_as3            \ bigip_cm_device            \ bigip_cm_devicegroup +          \ bigip_do            \ bigip_ltm_datagroup            \ bigip_ltm_irule            \ bigip_ltm_monitor @@ -2800,9 +3098,12 @@ syn keyword terraResourceTypeBI            \ bigip_sys_provision            \ bigip_sys_snmp            \ bigip_sys_snmp_traps +          \ bitbucket_branch_restriction            \ bitbucket_default_reviewers            \ bitbucket_hook +          \ bitbucket_project            \ bitbucket_repository +          \ bitbucket_repository_variable            \ brightbox_api_client            \ brightbox_cloudip            \ brightbox_database_server @@ -2812,6 +3113,24 @@ syn keyword terraResourceTypeBI            \ brightbox_orbit_container            \ brightbox_server            \ brightbox_server_group +          \ checkpoint_hostname +          \ checkpoint_management_access_rule +          \ checkpoint_management_address_range +          \ checkpoint_management_group +          \ checkpoint_management_host +          \ checkpoint_management_install_policy +          \ checkpoint_management_login +          \ checkpoint_management_logout +          \ checkpoint_management_network +          \ checkpoint_management_package +          \ checkpoint_management_publish +          \ checkpoint_management_run_ips_update +          \ checkpoint_management_service_group +          \ checkpoint_management_service_tcp +          \ checkpoint_management_service_udp +          \ checkpoint_management_threat_indicator +          \ checkpoint_physical_interface +          \ checkpoint_put_file            \ chef_acl            \ chef_client            \ chef_cookbook @@ -2826,10 +3145,14 @@ syn keyword terraResourceTypeBI            \ cherryservers_ssh            \ circonus_check            \ circonus_contact_group +          \ circonus_dashboard            \ circonus_graph +          \ circonus_maintenance            \ circonus_metric            \ circonus_metric_cluster +          \ circonus_overlay_set            \ circonus_rule_set +          \ circonus_rule_set_group            \ circonus_worksheet            \ ciscoasa_access_in_rules            \ ciscoasa_access_out_rules @@ -2844,6 +3167,7 @@ syn keyword terraResourceTypeBI            \ clc_public_ip            \ clc_server            \ cloudflare_access_application +          \ cloudflare_access_group            \ cloudflare_access_policy            \ cloudflare_access_rule            \ cloudflare_access_service_token @@ -2857,6 +3181,7 @@ syn keyword terraResourceTypeBI            \ cloudflare_load_balancer_monitor            \ cloudflare_load_balancer_pool            \ cloudflare_logpush_job +          \ cloudflare_origin_ca_certificate            \ cloudflare_page_rule            \ cloudflare_rate_limit            \ cloudflare_record @@ -2866,10 +3191,12 @@ syn keyword terraResourceTypeBI            \ cloudflare_waf_rule            \ cloudflare_worker_route            \ cloudflare_worker_script +          \ cloudflare_workers_kv_namespace            \ cloudflare_zone            \ cloudflare_zone_lockdown            \ cloudflare_zone_settings_override            \ cloudscale_floating_ip +          \ cloudscale_network            \ cloudscale_server            \ cloudscale_server_group            \ cloudscale_volume @@ -2917,6 +3244,7 @@ syn keyword terraResourceTypeBI            \ consul_intention            \ consul_key_prefix            \ consul_keys +          \ consul_license            \ consul_node            \ consul_prepared_query            \ consul_service @@ -2942,7 +3270,9 @@ syn keyword terraResourceTypeBI            \ digitalocean_cdn            \ digitalocean_certificate            \ digitalocean_database_cluster +          \ digitalocean_database_connection_pool            \ digitalocean_database_db +          \ digitalocean_database_firewall            \ digitalocean_database_replica            \ digitalocean_database_user            \ digitalocean_domain @@ -2984,6 +3314,7 @@ syn keyword terraResourceTypeBI            \ exoscale_compute            \ exoscale_domain            \ exoscale_domain_record +          \ exoscale_instance_pool            \ exoscale_ipaddress            \ exoscale_network            \ exoscale_nic @@ -3067,6 +3398,11 @@ syn keyword terraResourceTypeBI            \ flexibleengine_s3_bucket            \ flexibleengine_s3_bucket_object            \ flexibleengine_s3_bucket_policy +          \ flexibleengine_sdrs_drill_v1 +          \ flexibleengine_sdrs_protectedinstance_v1 +          \ flexibleengine_sdrs_protectiongroup_v1 +          \ flexibleengine_sdrs_replication_attach_v1 +          \ flexibleengine_sdrs_replication_pair_v1            \ flexibleengine_sfs_file_system_v2            \ flexibleengine_smn_subscription_v2            \ flexibleengine_smn_topic_v2 @@ -3127,11 +3463,13 @@ syn keyword terraResourceTypeBI            \ gitlab_deploy_key            \ gitlab_deploy_key_enable            \ gitlab_group +          \ gitlab_group_cluster            \ gitlab_group_label            \ gitlab_group_membership            \ gitlab_group_variable            \ gitlab_label            \ gitlab_pipeline_schedule +          \ gitlab_pipeline_schedule_variable            \ gitlab_pipeline_trigger            \ gitlab_project            \ gitlab_project_cluster @@ -3147,6 +3485,7 @@ syn keyword terraResourceTypeBI            \ google_access_context_manager_access_level            \ google_access_context_manager_access_policy            \ google_access_context_manager_service_perimeter +          \ google_access_context_manager_service_perimeter_resource            \ google_app_engine_application            \ google_app_engine_application_url_dispatch_rules            \ google_app_engine_domain_mapping @@ -3165,6 +3504,7 @@ syn keyword terraResourceTypeBI            \ google_billing_account_iam_binding            \ google_billing_account_iam_member            \ google_billing_account_iam_policy +          \ google_billing_budget            \ google_binary_authorization_attestor            \ google_binary_authorization_attestor_iam_binding            \ google_binary_authorization_attestor_iam_member @@ -3172,7 +3512,11 @@ syn keyword terraResourceTypeBI            \ google_binary_authorization_policy            \ google_cloud_run_domain_mapping            \ google_cloud_run_service +          \ google_cloud_run_service_iam_binding +          \ google_cloud_run_service_iam_member +          \ google_cloud_run_service_iam_policy            \ google_cloud_scheduler_job +          \ google_cloud_tasks_queue            \ google_cloudbuild_trigger            \ google_cloudfunctions_function            \ google_cloudfunctions_function_iam_binding @@ -3213,6 +3557,7 @@ syn keyword terraResourceTypeBI            \ google_compute_network_endpoint            \ google_compute_network_endpoint_group            \ google_compute_network_peering +          \ google_compute_network_peering_routes_config            \ google_compute_node_group            \ google_compute_node_template            \ google_compute_project_default_network_tier @@ -3256,6 +3601,8 @@ syn keyword terraResourceTypeBI            \ google_container_analysis_note            \ google_container_cluster            \ google_container_node_pool +          \ google_container_registry +          \ google_data_fusion_instance            \ google_dataflow_job            \ google_dataproc_autoscaling_policy            \ google_dataproc_cluster @@ -3266,6 +3613,8 @@ syn keyword terraResourceTypeBI            \ google_dataproc_job_iam_binding            \ google_dataproc_job_iam_member            \ google_dataproc_job_iam_policy +          \ google_deployment_manager_deployment +          \ google_dialogflow_agent            \ google_dns_managed_zone            \ google_dns_policy            \ google_dns_record_set @@ -3314,13 +3663,22 @@ syn keyword terraResourceTypeBI            \ google_iap_web_type_compute_iam_binding            \ google_iap_web_type_compute_iam_member            \ google_iap_web_type_compute_iam_policy +          \ google_identity_platform_default_supported_idp_config +          \ google_identity_platform_inbound_saml_config +          \ google_identity_platform_oauth_idp_config +          \ google_identity_platform_tenant +          \ google_identity_platform_tenant_default_supported_idp_config +          \ google_identity_platform_tenant_inbound_saml_config +          \ google_identity_platform_tenant_oauth_idp_config            \ google_kms_crypto_key            \ google_kms_crypto_key_iam_binding            \ google_kms_crypto_key_iam_member +          \ google_kms_crypto_key_iam_policy            \ google_kms_key_ring            \ google_kms_key_ring_iam_binding            \ google_kms_key_ring_iam_member            \ google_kms_key_ring_iam_policy +          \ google_kms_secret_ciphertext            \ google_logging_billing_account_exclusion            \ google_logging_billing_account_sink            \ google_logging_folder_exclusion @@ -3335,6 +3693,7 @@ syn keyword terraResourceTypeBI            \ google_monitoring_group            \ google_monitoring_notification_channel            \ google_monitoring_uptime_check_config +          \ google_organization_iam_audit_config            \ google_organization_iam_binding            \ google_organization_iam_custom_role            \ google_organization_iam_member @@ -3366,6 +3725,11 @@ syn keyword terraResourceTypeBI            \ google_runtimeconfig_config_iam_policy            \ google_runtimeconfig_variable            \ google_scc_source +          \ google_secret_manager_secret +          \ google_secret_manager_secret_iam_binding +          \ google_secret_manager_secret_iam_member +          \ google_secret_manager_secret_iam_policy +          \ google_secret_manager_secret_version            \ google_security_scanner_scan_config            \ google_service_account            \ google_service_account_iam_binding @@ -3409,13 +3773,21 @@ syn keyword terraResourceTypeBI            \ grafana_data_source            \ grafana_folder            \ grafana_organization +          \ gridscale_firewall            \ gridscale_ipv4            \ gridscale_ipv6 +          \ gridscale_isoimage            \ gridscale_loadbalancer            \ gridscale_network +          \ gridscale_object_storage_accesskey +          \ gridscale_paas +          \ gridscale_paas_securityzone            \ gridscale_server +          \ gridscale_snapshot +          \ gridscale_snapshotschedule            \ gridscale_sshkey            \ gridscale_storage +          \ gridscale_template            \ hcloud_floating_ip            \ hcloud_floating_ip_assignment            \ hcloud_network @@ -3517,10 +3889,12 @@ syn keyword terraResourceTypeBI            \ huaweicloud_lb_member_v2            \ huaweicloud_lb_monitor_v2            \ huaweicloud_lb_pool_v2 +          \ huaweicloud_lb_whitelist_v2            \ huaweicloud_maas_task_v1            \ huaweicloud_mls_instance            \ huaweicloud_mrs_cluster_v1            \ huaweicloud_mrs_job_v1 +          \ huaweicloud_nat_dnat_rule_v2            \ huaweicloud_nat_gateway_v2            \ huaweicloud_nat_snat_rule_v2            \ huaweicloud_networking_floatingip_associate_v2 @@ -3536,6 +3910,8 @@ syn keyword terraResourceTypeBI            \ huaweicloud_networking_vip_associate_v2            \ huaweicloud_networking_vip_v2            \ huaweicloud_rds_instance_v1 +          \ huaweicloud_rds_instance_v3 +          \ huaweicloud_rds_parametergroup_v3            \ huaweicloud_rts_software_config_v1            \ huaweicloud_rts_stack_resource_v1            \ huaweicloud_rts_stack_v1 @@ -3559,12 +3935,51 @@ syn keyword terraResourceTypeBI            \ huaweicloud_vpnaas_ipsec_policy_v2            \ huaweicloud_vpnaas_service_v2            \ huaweicloud_vpnaas_site_connection_v2 +          \ huaweicloudstack_as_configuration_v1 +          \ huaweicloudstack_as_group_v1 +          \ huaweicloudstack_as_policy_v1 +          \ huaweicloudstack_blockstorage_volume_v2 +          \ huaweicloudstack_compute_floatingip_associate_v2 +          \ huaweicloudstack_compute_instance_v2 +          \ huaweicloudstack_compute_interface_attach_v2 +          \ huaweicloudstack_compute_keypair_v2 +          \ huaweicloudstack_compute_servergroup_v2 +          \ huaweicloudstack_compute_volume_attach_v2 +          \ huaweicloudstack_lb_certificate_v2 +          \ huaweicloudstack_lb_l7policy_v2 +          \ huaweicloudstack_lb_l7rule_v2 +          \ huaweicloudstack_lb_listener_v2 +          \ huaweicloudstack_lb_loadbalancer_v2 +          \ huaweicloudstack_lb_member_v2 +          \ huaweicloudstack_lb_monitor_v2 +          \ huaweicloudstack_lb_pool_v2 +          \ huaweicloudstack_lb_whitelist_v2 +          \ huaweicloudstack_networking_floatingip_associate_v2 +          \ huaweicloudstack_networking_floatingip_v2 +          \ huaweicloudstack_networking_network_v2 +          \ huaweicloudstack_networking_port_v2 +          \ huaweicloudstack_networking_router_interface_v2 +          \ huaweicloudstack_networking_router_route_v2 +          \ huaweicloudstack_networking_router_v2 +          \ huaweicloudstack_networking_secgroup_rule_v2 +          \ huaweicloudstack_networking_secgroup_v2 +          \ huaweicloudstack_networking_subnet_v2 +          \ huaweicloudstack_networking_vip_associate_v2 +          \ huaweicloudstack_networking_vip_v2            \ icinga2_checkcommand            \ icinga2_host            \ icinga2_hostgroup            \ icinga2_notification            \ icinga2_service            \ icinga2_user +          \ incapsula_acl_security_rule +          \ incapsula_custom_certificate +          \ incapsula_data_center +          \ incapsula_data_center_server +          \ incapsula_incap_rule +          \ incapsula_security_rule_exception +          \ incapsula_site +          \ incapsula_waf_security_rule            \ influxdb_continuous_query            \ influxdb_database            \ influxdb_user @@ -3610,6 +4025,7 @@ syn keyword terraResourceTypeBI            \ kubernetes_persistent_volume            \ kubernetes_persistent_volume_claim            \ kubernetes_pod +          \ kubernetes_pod_disruption_budget            \ kubernetes_priority_class            \ kubernetes_replication_controller            \ kubernetes_resource_quota @@ -3652,20 +4068,33 @@ syn keyword terraResourceTypeBI            \ logentries_logset            \ logicmonitor_collector            \ logicmonitor_collector_group +          \ logicmonitor_dashboard +          \ logicmonitor_dashboard_group            \ logicmonitor_device            \ logicmonitor_device_group            \ mailgun_domain            \ mailgun_route +          \ metalcloud_infrastructure +          \ mongodbatlas_alert_configuration +          \ mongodbatlas_auditing            \ mongodbatlas_cloud_provider_snapshot            \ mongodbatlas_cloud_provider_snapshot_restore_job            \ mongodbatlas_cluster +          \ mongodbatlas_custom_db_role            \ mongodbatlas_database_user            \ mongodbatlas_encryption_at_rest +          \ mongodbatlas_global_cluster_config +          \ mongodbatlas_maintenance_window            \ mongodbatlas_network_container            \ mongodbatlas_network_peering +          \ mongodbatlas_private_endpoint +          \ mongodbatlas_private_endpoint_interface_link            \ mongodbatlas_private_ip_mode            \ mongodbatlas_project            \ mongodbatlas_project_ip_whitelist +          \ mongodbatlas_team +          \ mongodbatlas_teams +          \ mongodbatlas_x509_authentication_database_user            \ mysql_database            \ mysql_grant            \ mysql_role @@ -3690,7 +4119,9 @@ syn keyword terraResourceTypeBI            \ newrelic_alert_policy_channel            \ newrelic_dashboard            \ newrelic_infra_alert_condition +          \ newrelic_insights_event            \ newrelic_nrql_alert_condition +          \ newrelic_plugins_alert_condition            \ newrelic_synthetics_alert_condition            \ newrelic_synthetics_monitor            \ newrelic_synthetics_monitor_script @@ -3761,6 +4192,30 @@ syn keyword terraResourceTypeBI            \ nsxt_nat_rule            \ nsxt_ns_group            \ nsxt_ns_service_group +          \ nsxt_policy_bgp_neighbor +          \ nsxt_policy_dhcp_relay +          \ nsxt_policy_dhcp_server +          \ nsxt_policy_gateway_policy +          \ nsxt_policy_group +          \ nsxt_policy_ip_address_allocation +          \ nsxt_policy_ip_block +          \ nsxt_policy_ip_pool +          \ nsxt_policy_ip_pool_block_subnet +          \ nsxt_policy_ip_pool_static_subnet +          \ nsxt_policy_lb_pool +          \ nsxt_policy_lb_service +          \ nsxt_policy_lb_virtual_server +          \ nsxt_policy_nat_rule +          \ nsxt_policy_security_policy +          \ nsxt_policy_segment +          \ nsxt_policy_service +          \ nsxt_policy_static_route +          \ nsxt_policy_tier0_gateway +          \ nsxt_policy_tier0_gateway_interface +          \ nsxt_policy_tier1_gateway +          \ nsxt_policy_tier1_gateway_interface +          \ nsxt_policy_vlan_segment +          \ nsxt_policy_vm_tags            \ nsxt_qos_switching_profile            \ nsxt_spoofguard_switching_profile            \ nsxt_static_route @@ -3775,6 +4230,9 @@ syn keyword terraResourceTypeBI            \ nutanix_subnet            \ nutanix_virtual_machine            \ nutanix_volume_group +          \ oci_analytics_analytics_instance +          \ oci_apigateway_deployment +          \ oci_apigateway_gateway            \ oci_audit_configuration            \ oci_autoscaling_auto_scaling_configuration            \ oci_budget_alert_rule @@ -3844,6 +4302,7 @@ syn keyword terraResourceTypeBI            \ oci_database_backup            \ oci_database_backup_destination            \ oci_database_data_guard_association +          \ oci_database_database            \ oci_database_db_home            \ oci_database_db_system            \ oci_database_exadata_infrastructure @@ -3851,9 +4310,19 @@ syn keyword terraResourceTypeBI            \ oci_database_maintenance_run            \ oci_database_vm_cluster            \ oci_database_vm_cluster_network +          \ oci_datacatalog_catalog +          \ oci_datacatalog_connection +          \ oci_datacatalog_data_asset +          \ oci_dataflow_application +          \ oci_dataflow_invoke_run +          \ oci_datascience_model +          \ oci_datascience_model_provenance +          \ oci_datascience_notebook_session +          \ oci_datascience_project            \ oci_dns_record            \ oci_dns_steering_policy            \ oci_dns_steering_policy_attachment +          \ oci_dns_tsig_key            \ oci_dns_zone            \ oci_email_sender            \ oci_email_suppression @@ -3889,6 +4358,7 @@ syn keyword terraResourceTypeBI            \ oci_identity_user            \ oci_identity_user_capabilities_management            \ oci_identity_user_group_membership +          \ oci_integration_integration_instance            \ oci_kms_encrypted_data            \ oci_kms_generated_key            \ oci_kms_key @@ -3906,6 +4376,8 @@ syn keyword terraResourceTypeBI            \ oci_load_balancer_load_balancer            \ oci_load_balancer_path_route_set            \ oci_load_balancer_rule_set +          \ oci_marketplace_accepted_agreement +          \ oci_marketplace_listing_package_agreement            \ oci_monitoring_alarm            \ oci_objectstorage_bucket            \ oci_objectstorage_namespace_metadata @@ -3916,8 +4388,17 @@ syn keyword terraResourceTypeBI            \ oci_oda_oda_instance            \ oci_ons_notification_topic            \ oci_ons_subscription +          \ oci_osmanagement_managed_instance_group +          \ oci_osmanagement_managed_instance_management +          \ oci_osmanagement_software_source +          \ oci_osmanagement_software_sources +          \ oci_resourcemanager_stack +          \ oci_resourcemanager_stack_tf_state +          \ oci_resourcemanager_stacks +          \ oci_streaming_connect_harness            \ oci_streaming_stream            \ oci_streaming_stream_archiver +          \ oci_streaming_stream_pool            \ oci_waas_address_list            \ oci_waas_certificate            \ oci_waas_custom_protection_rule @@ -3989,6 +4470,14 @@ syn keyword terraResourceTypeBI            \ opc_lbaas_server_pool            \ opc_storage_container            \ opc_storage_object +          \ opennebula_group +          \ opennebula_image +          \ opennebula_security_group +          \ opennebula_template +          \ opennebula_virtual_data_center +          \ opennebula_virtual_machine +          \ opennebula_virtual_machine_group +          \ opennebula_virtual_network            \ openstack_blockstorage_quotaset_v2            \ openstack_blockstorage_quotaset_v3            \ openstack_blockstorage_volume_attach_v2 @@ -4065,6 +4554,7 @@ syn keyword terraResourceTypeBI            \ openstack_objectstorage_container_v1            \ openstack_objectstorage_object_v1            \ openstack_objectstorage_tempurl_v1 +          \ openstack_orchestration_stack_v1            \ openstack_sharedfilesystem_securityservice_v2            \ openstack_sharedfilesystem_share_access_v2            \ openstack_sharedfilesystem_share_v2 @@ -4121,12 +4611,17 @@ syn keyword terraResourceTypeBI            \ opentelekomcloud_ims_data_image_v2            \ opentelekomcloud_ims_image_v2            \ opentelekomcloud_kms_key_v1 +          \ opentelekomcloud_lb_certificate_v2 +          \ opentelekomcloud_lb_l7policy_v2 +          \ opentelekomcloud_lb_l7rule_v2            \ opentelekomcloud_lb_listener_v2            \ opentelekomcloud_lb_loadbalancer_v2            \ opentelekomcloud_lb_member_v2            \ opentelekomcloud_lb_monitor_v2            \ opentelekomcloud_lb_pool_v2            \ opentelekomcloud_lb_whitelist_v2 +          \ opentelekomcloud_logtank_group_v2 +          \ opentelekomcloud_logtank_topic_v2            \ opentelekomcloud_maas_task_v1            \ opentelekomcloud_mrs_cluster_v1            \ opentelekomcloud_mrs_job_v1 @@ -4162,11 +4657,17 @@ syn keyword terraResourceTypeBI            \ opentelekomcloud_vbs_backup_share_v2            \ opentelekomcloud_vbs_backup_v2            \ opentelekomcloud_vpc_eip_v1 +          \ opentelekomcloud_vpc_flow_log_v1            \ opentelekomcloud_vpc_peering_connection_accepter_v2            \ opentelekomcloud_vpc_peering_connection_v2            \ opentelekomcloud_vpc_route_v2            \ opentelekomcloud_vpc_subnet_v1            \ opentelekomcloud_vpc_v1 +          \ opentelekomcloud_vpnaas_endpoint_group_v2 +          \ opentelekomcloud_vpnaas_ike_policy_v2 +          \ opentelekomcloud_vpnaas_ipsec_policy_v2 +          \ opentelekomcloud_vpnaas_service_v2 +          \ opentelekomcloud_vpnaas_site_connection_v2            \ opentelekomcloud_waf_ccattackprotection_rule_v1            \ opentelekomcloud_waf_certificate_v1            \ opentelekomcloud_waf_datamasking_rule_v1 @@ -4181,9 +4682,11 @@ syn keyword terraResourceTypeBI            \ opsgenie_escalation            \ opsgenie_heartbeat            \ opsgenie_maintenance +          \ opsgenie_notification_policy            \ opsgenie_schedule            \ opsgenie_schedule_rotation            \ opsgenie_team +          \ opsgenie_team_routing_rule            \ opsgenie_user            \ opsgenie_user_contact            \ oraclepaas_application_container @@ -4196,22 +4699,36 @@ syn keyword terraResourceTypeBI            \ ovh_cloud_network_private            \ ovh_cloud_network_private_subnet            \ ovh_cloud_user +          \ ovh_dedicated_server_install_task +          \ ovh_dedicated_server_reboot_task +          \ ovh_dedicated_server_update            \ ovh_domain_zone_record            \ ovh_domain_zone_redirection            \ ovh_ip_reverse +          \ ovh_iploadbalancing_http_farm +          \ ovh_iploadbalancing_http_farm_server +          \ ovh_iploadbalancing_http_frontend            \ ovh_iploadbalancing_http_route            \ ovh_iploadbalancing_http_route_rule            \ ovh_iploadbalancing_refresh            \ ovh_iploadbalancing_tcp_farm            \ ovh_iploadbalancing_tcp_farm_server            \ ovh_iploadbalancing_tcp_frontend +          \ ovh_iploadbalancing_vrack_network +          \ ovh_me_installation_template +          \ ovh_me_installation_template_partition_scheme +          \ ovh_me_installation_template_partition_scheme_hardware_raid +          \ ovh_me_installation_template_partition_scheme_partition +          \ ovh_me_ssh_key            \ ovh_publiccloud_private_network            \ ovh_publiccloud_private_network_subnet            \ ovh_publiccloud_user            \ ovh_vrack_cloudproject +          \ ovh_vrack_dedicated_server +          \ ovh_vrack_dedicated_server_interface +          \ ovh_vrack_iploadbalancing            \ ovh_vrack_publiccloud_attachment            \ packet_bgp_session -          \ packet_connect            \ packet_device            \ packet_ip_attachment            \ packet_organization @@ -4403,6 +4920,7 @@ syn keyword terraResourceTypeBI            \ rabbitmq_permissions            \ rabbitmq_policy            \ rabbitmq_queue +          \ rabbitmq_topic_permissions            \ rabbitmq_user            \ rabbitmq_vhost            \ rancher2_app @@ -4444,6 +4962,7 @@ syn keyword terraResourceTypeBI            \ rancher2_role_template            \ rancher2_secret            \ rancher2_setting +          \ rancher2_token            \ rancher2_user            \ rancher_certificate            \ rancher_environment @@ -4491,6 +5010,7 @@ syn keyword terraResourceTypeBI            \ scaleway_baremetal_server_beta            \ scaleway_bucket            \ scaleway_instance_ip +          \ scaleway_instance_ip_reverse_dns            \ scaleway_instance_placement_group            \ scaleway_instance_security_group            \ scaleway_instance_server @@ -4503,6 +5023,8 @@ syn keyword terraResourceTypeBI            \ scaleway_lb_beta            \ scaleway_lb_frontend_beta            \ scaleway_object_bucket +          \ scaleway_rdb_instance_beta +          \ scaleway_registry_namespace_beta            \ scaleway_security_group            \ scaleway_security_group_rule            \ scaleway_server @@ -4521,12 +5043,14 @@ syn keyword terraResourceTypeBI            \ selectel_vpc_token_v2            \ selectel_vpc_user_v2            \ selectel_vpc_vrrp_subnet_v2 +          \ signalfx_alert_muting_rule            \ signalfx_aws_external_integration            \ signalfx_aws_integration            \ signalfx_aws_token_integration            \ signalfx_azure_integration            \ signalfx_dashboard            \ signalfx_dashboard_group +          \ signalfx_data_link            \ signalfx_detector            \ signalfx_event_feed_chart            \ signalfx_gcp_integration @@ -4543,11 +5067,15 @@ syn keyword terraResourceTypeBI            \ signalfx_time_chart            \ signalfx_victor_ops_integration            \ skytap_environment +          \ skytap_icnr_tunnel +          \ skytap_label_category            \ skytap_network            \ skytap_project            \ skytap_vm            \ softlayer_ssh_key            \ softlayer_virtual_guest +          \ stackpath_compute_network_policy +          \ stackpath_compute_workload            \ statuscake_test            \ telefonicaopencloud_antiddos_v1            \ telefonicaopencloud_as_configuration_v1 @@ -4627,6 +5155,7 @@ syn keyword terraResourceTypeBI            \ tencentcloud_cam_user_policy_attachment            \ tencentcloud_cbs_snapshot            \ tencentcloud_cbs_snapshot_policy +          \ tencentcloud_cbs_snapshot_policy_attachment            \ tencentcloud_cbs_storage            \ tencentcloud_cbs_storage_attachment            \ tencentcloud_ccn @@ -4644,6 +5173,13 @@ syn keyword terraResourceTypeBI            \ tencentcloud_container_cluster_instance            \ tencentcloud_cos_bucket            \ tencentcloud_cos_bucket_object +          \ tencentcloud_dayu_cc_http_policy +          \ tencentcloud_dayu_cc_https_policy +          \ tencentcloud_dayu_ddos_policy +          \ tencentcloud_dayu_ddos_policy_attachment +          \ tencentcloud_dayu_ddos_policy_case +          \ tencentcloud_dayu_l4_rule +          \ tencentcloud_dayu_l7_rule            \ tencentcloud_dc_gateway            \ tencentcloud_dc_gateway_ccn_route            \ tencentcloud_dcx @@ -4653,6 +5189,7 @@ syn keyword terraResourceTypeBI            \ tencentcloud_eni            \ tencentcloud_eni_attachment            \ tencentcloud_gaap_certificate +          \ tencentcloud_gaap_domain_error_page            \ tencentcloud_gaap_http_domain            \ tencentcloud_gaap_http_rule            \ tencentcloud_gaap_layer4_listener @@ -4661,8 +5198,11 @@ syn keyword terraResourceTypeBI            \ tencentcloud_gaap_realserver            \ tencentcloud_gaap_security_policy            \ tencentcloud_gaap_security_rule +          \ tencentcloud_ha_vip +          \ tencentcloud_ha_vip_eip_attachment            \ tencentcloud_instance            \ tencentcloud_key_pair +          \ tencentcloud_kubernetes_as_scaling_group            \ tencentcloud_kubernetes_cluster            \ tencentcloud_kubernetes_scale_worker            \ tencentcloud_lb @@ -4672,6 +5212,7 @@ syn keyword terraResourceTypeBI            \ tencentcloud_mysql_account_privilege            \ tencentcloud_mysql_backup_policy            \ tencentcloud_mysql_instance +          \ tencentcloud_mysql_privilege            \ tencentcloud_mysql_readonly_instance            \ tencentcloud_nat_gateway            \ tencentcloud_placement_group @@ -4688,7 +5229,34 @@ syn keyword terraResourceTypeBI            \ tencentcloud_security_group_rule            \ tencentcloud_ssl_certificate            \ tencentcloud_subnet +          \ tencentcloud_tcaplus_application +          \ tencentcloud_tcaplus_idl +          \ tencentcloud_tcaplus_table +          \ tencentcloud_tcaplus_zone            \ tencentcloud_vpc +          \ tencentcloud_vpn_connection +          \ tencentcloud_vpn_customer_gateway +          \ tencentcloud_vpn_gateway +          \ test_resource +          \ test_resource_computed_set +          \ test_resource_config_mode +          \ test_resource_defaults +          \ test_resource_deprecated +          \ test_resource_diff_suppress +          \ test_resource_force_new +          \ test_resource_gh12183 +          \ test_resource_import_other +          \ test_resource_import_removed +          \ test_resource_list +          \ test_resource_list_set +          \ test_resource_map +          \ test_resource_nested +          \ test_resource_nested_id +          \ test_resource_nested_set +          \ test_resource_state_func +          \ test_resource_timeout +          \ test_resource_with_custom_diff +          \ test_undeleteable            \ tfe_notification_configuration            \ tfe_oauth_client            \ tfe_organization @@ -4782,6 +5350,12 @@ syn keyword terraResourceTypeBI            \ vsphere_virtual_machine            \ vsphere_virtual_machine_snapshot            \ vsphere_vmfs_datastore +          \ vsphere_vnic +          \ vthunder_ethernet +          \ vthunder_rib_route +          \ vthunder_server +          \ vthunder_service_group +          \ vthunder_virtual_server            \ vultr_bare_metal_server            \ vultr_block_storage            \ vultr_dns_domain @@ -4803,6 +5377,7 @@ syn keyword terraResourceTypeBI            \ yandex_compute_instance_group            \ yandex_compute_snapshot            \ yandex_container_registry +          \ yandex_dataproc_cluster            \ yandex_iam_service_account            \ yandex_iam_service_account_api_key            \ yandex_iam_service_account_iam_binding @@ -4810,10 +5385,15 @@ syn keyword terraResourceTypeBI            \ yandex_iam_service_account_iam_policy            \ yandex_iam_service_account_key            \ yandex_iam_service_account_static_access_key +          \ yandex_kms_symmetric_key            \ yandex_kubernetes_cluster            \ yandex_kubernetes_node_group            \ yandex_lb_network_load_balancer            \ yandex_lb_target_group +          \ yandex_mdb_clickhouse_cluster +          \ yandex_mdb_mongodb_cluster +          \ yandex_mdb_mysql_cluster +          \ yandex_mdb_postgresql_cluster            \ yandex_mdb_redis_cluster            \ yandex_resourcemanager_cloud            \ yandex_resourcemanager_cloud_iam_binding diff --git a/syntax/vala.vim b/syntax/vala.vim index 8ad21785..1cf68e0a 100644 --- a/syntax/vala.vim +++ b/syntax/vala.vim @@ -48,7 +48,9 @@ syn keyword valaConstant		false null true  " Exceptions  syn keyword valaException		try catch finally throw  " Unspecified Statements -syn keyword valaUnspecifiedStatement	as base construct delete get in is lock new out params ref sizeof set this throws typeof using value var yield +syn keyword valaUnspecifiedStatement	as base construct delete get in is lock new out params ref sizeof set this throws typeof value var yield +" Includes +syn match valaInclude			"^\s*\zs\<using\>\ze\s\w"  " Arrays and Lists  syn match   valaArray			"\(\w\(\w\)*\(\s\+\)\?<\)\+\(\(\s\+\)\?\w\(\w\)*\(?\|\*\)\?\(\,\)\?\)\+>\+"  " Methods @@ -141,6 +143,10 @@ syn match   valaNumber			display "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fF  syn match   valaNumber			display "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"  syn match   valaNumber			display "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" +" Lambda definitions (ported from java.vim) +" needs to be defined after the parenthesis error catcher to work +syn match valaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*=>" +  " when wanted, highlight trailing white space  if exists("vala_space_errors")    if !exists("vala_no_trail_space_error") @@ -172,10 +178,12 @@ hi def link valaModifier		StorageClass  hi def link valaConstant		Constant  hi def link valaException		Exception  hi def link valaUnspecifiedStatement	Statement +hi def link valaInclude			Include  hi def link valaUnspecifiedKeyword	Keyword  hi def link valaContextualStatement	Statement  hi def link valaArray			StorageClass  hi def link valaMethod			Function +hi def link valaLambdaDef		Function  hi def link valaOperator		Operator  hi def link valaDelimiter		Delimiter  hi def link valaEnumField		Constant diff --git a/syntax/zig.vim b/syntax/zig.vim index bdb9ac27..2ee57a1b 100644 --- a/syntax/zig.vim +++ b/syntax/zig.vim @@ -36,8 +36,8 @@ syn match zigBuiltinFn "\v\@(compileLog|ctz|popCount|divExact|divFloor|divTrunc)  syn match zigBuiltinFn "\v\@(embedFile|export|tagName|TagType|errorName|call)>"  syn match zigBuiltinFn "\v\@(errorReturnTrace|fence|fieldParentPtr|field|unionInit)>"  syn match zigBuiltinFn "\v\@(frameAddress|import|newStackCall|asyncCall|intToPtr|IntType)>" -syn match zigBuiltinFn "\v\@(maxValue|memberCount|memberName|memberType|as)>" -syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow|splat)>" +syn match zigBuiltinFn "\v\@(memberCount|memberName|memberType|as)>" +syn match zigBuiltinFn "\v\@(memcpy|memset|mod|mulWithOverflow|splat)>"  syn match zigBuiltinFn "\v\@(bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>"  syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type|shuffle)>"  syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>" | 
