diff options
Diffstat (limited to 'syntax')
-rw-r--r-- | syntax/crystal.vim | 30 | ||||
-rw-r--r-- | syntax/dart.vim | 5 | ||||
-rw-r--r-- | syntax/elixir.vim | 181 | ||||
-rw-r--r-- | syntax/gitrebase.vim | 6 | ||||
-rw-r--r-- | syntax/go.vim | 74 | ||||
-rw-r--r-- | syntax/i3config.vim | 18 | ||||
-rw-r--r-- | syntax/javascript.vim | 6 | ||||
-rw-r--r-- | syntax/julia.vim | 54 | ||||
-rw-r--r-- | syntax/kotlin.vim | 19 | ||||
-rw-r--r-- | syntax/markdown.vim | 26 | ||||
-rw-r--r-- | syntax/mustache.vim | 2 | ||||
-rw-r--r-- | syntax/pug.vim | 13 | ||||
-rw-r--r-- | syntax/python.vim | 28 | ||||
-rw-r--r-- | syntax/racket.vim | 39 | ||||
-rw-r--r-- | syntax/rst.vim | 4 | ||||
-rw-r--r-- | syntax/ruby.vim | 635 | ||||
-rw-r--r-- | syntax/rust.vim | 4 | ||||
-rw-r--r-- | syntax/terraform.vim | 692 | ||||
-rw-r--r-- | syntax/vifm.vim | 12 |
19 files changed, 1319 insertions, 529 deletions
diff --git a/syntax/crystal.vim b/syntax/crystal.vim index 637e207e..d972d3c3 100644 --- a/syntax/crystal.vim +++ b/syntax/crystal.vim @@ -83,6 +83,12 @@ syn match crystalFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+ 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 @@ -176,15 +182,15 @@ end 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,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable -syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalConstant -syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalConstant -syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator -syn match crystalModuleDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator -syn match crystalStructDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator -syn match crystalLibDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator -syn match crystalMacroDeclaration "[^[:space:];#<\"]\+" contained contains=crystalConstant,crystalOperator -syn match crystalEnumDeclaration "[^[:space:];#<\"]\+" contained contains=crystalConstant +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 @@ -345,6 +351,12 @@ else 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 diff --git a/syntax/dart.vim b/syntax/dart.vim index f9571531..40dd0304 100644 --- a/syntax/dart.vim +++ b/syntax/dart.vim @@ -28,14 +28,15 @@ syntax keyword dartConstant null syntax keyword dartTypedef this super class typedef enum mixin syntax keyword dartOperator new is as in syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:" -syntax keyword dartType void var bool int double num dynamic covariant +syntax keyword dartType void var bool int double num dynamic syntax keyword dartStatement return syntax keyword dartStorageClass static abstract final const factory syntax keyword dartExceptions throw rethrow try on catch finally syntax keyword dartAssert assert syntax keyword dartClassDecl extends with implements syntax keyword dartBranch break continue nextgroup=dartUserLabelRef skipwhite -syntax keyword dartKeyword get set operator call external async await yield sync native +syntax keyword dartKeyword get set operator call external async await + \ yield sync native covariant syntax match dartUserLabelRef "\k\+" contained syntax region dartLabelRegion transparent matchgroup=dartLabel start="\<case\>" matchgroup=NONE end=":" diff --git a/syntax/elixir.vim b/syntax/elixir.vim index 53e55902..1fa114b1 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -13,7 +13,7 @@ syn sync minlines=2000 syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments,elixirBlockDefinition,elixirUnusedVariable,elixirStructDelimiter syn cluster elixirRegexSpecial contains=elixirRegexEscape,elixirRegexCharClass,elixirRegexQuantifier,elixirRegexEscapePunctuation syn cluster elixirStringContained contains=elixirInterpolation,elixirRegexEscape,elixirRegexCharClass -syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration +syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirPrivateFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirPrivateRecordDeclaration,elixirMacroDeclaration,elixirPrivateMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration syn match elixirComment '#.*' contains=elixirTodo,@Spell syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained @@ -84,7 +84,6 @@ syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)" syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold -syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction,elixirComment @@ -120,102 +119,110 @@ else syn region elixirDocTest start="^\s*\%(iex\|\.\.\.\)\%((\d*)\)\?>\s" end="^\s*$" contained endif -syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]{" end="}" skip="\\\\\|\\}" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]<" end=">" skip="\\\\\|\\>" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\[" end="\]" skip="\\\\\|\\\]" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss](" end=")" skip="\\\\\|\\)" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained keepend -syn region elixirDocString matchgroup=elixirStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("""\)+ end=+\z1+ contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z('''\)+ end=+\z1+ skip=+\\'+ contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z("""\)+ end=+\z1+ skip=+\\"+ contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]{" end="}" skip="\\\\\|\\}" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]<" end=">" skip="\\\\\|\\>" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss]\[" end="\]" skip="\\\\\|\\\]" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start="\%(@\w*doc\s\+\)\@<=\~[Ss](" end=")" skip="\\\\\|\\)" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained keepend +syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("""\)+ end=+\z1+ contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z('''\)+ end=+\z1+ skip=+\\'+ contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z("""\)+ end=+\z1+ skip=+\\"+ contains=@elixirDocStringContained fold keepend " Defines -syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl -syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl -syn match elixirGuard '\<defguard\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl -syn match elixirPrivateGuard '\<defguardp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl -syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl -syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl -syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl -syn match elixirRecordDefine '\<defrecord\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl -syn match elixirPrivateRecordDefine '\<defrecordp\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl -syn match elixirMacroDefine '\<defmacro\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl -syn match elixirPrivateMacroDefine '\<defmacrop\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl -syn match elixirDelegateDefine '\<defdelegate\>\(:\)\@!' nextgroup=elixirDelegateDeclaration skipwhite skipnl -syn match elixirOverridableDefine '\<defoverridable\>\(:\)\@!' nextgroup=elixirOverridableDeclaration skipwhite skipnl -syn match elixirExceptionDefine '\<defexception\>\(:\)\@!' nextgroup=elixirExceptionDeclaration skipwhite skipnl -syn match elixirCallbackDefine '\<defcallback\>\(:\)\@!' nextgroup=elixirCallbackDeclaration skipwhite skipnl +syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl +syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirPrivateFunctionDeclaration skipwhite skipnl +syn match elixirGuard '\<defguard\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl +syn match elixirPrivateGuard '\<defguardp\>\(:\)\@!' nextgroup=elixirPrivateFunctionDeclaration skipwhite skipnl +syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl +syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl +syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl +syn match elixirRecordDefine '\<defrecord\>\(:\)\@!' nextgroup=elixirRecordDeclaration skipwhite skipnl +syn match elixirPrivateRecordDefine '\<defrecordp\>\(:\)\@!' nextgroup=elixirPrivateRecordDeclaration skipwhite skipnl +syn match elixirMacroDefine '\<defmacro\>\(:\)\@!' nextgroup=elixirMacroDeclaration skipwhite skipnl +syn match elixirPrivateMacroDefine '\<defmacrop\>\(:\)\@!' nextgroup=elixirPrivateMacroDeclaration skipwhite skipnl +syn match elixirDelegateDefine '\<defdelegate\>\(:\)\@!' nextgroup=elixirDelegateDeclaration skipwhite skipnl +syn match elixirOverridableDefine '\<defoverridable\>\(:\)\@!' nextgroup=elixirOverridableDeclaration skipwhite skipnl +syn match elixirExceptionDefine '\<defexception\>\(:\)\@!' nextgroup=elixirExceptionDeclaration skipwhite skipnl +syn match elixirCallbackDefine '\<defcallback\>\(:\)\@!' nextgroup=elixirCallbackDeclaration skipwhite skipnl syn match elixirStructDefine '\<defstruct\>\(:\)\@!' skipwhite skipnl " Declarations -syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained nextgroup=elixirBlock skipwhite skipnl -syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl -syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl -syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl -syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl -syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl -syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl -syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl -syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl -syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl -syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl +syn match elixirModuleDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirBlock skipwhite skipnl +syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl +syn match elixirPrivateFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl +syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl +syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl +syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl +syn match elixirPrivateRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl +syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl +syn match elixirPrivateMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl +syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl +syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl +syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl +syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl +syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl " ExUnit syn match elixirExUnitMacro "\(^\s*\)\@<=\<\(test\|describe\|setup\|setup_all\|on_exit\|doctest\)\>" syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(assert\|assert_in_delta\|assert_raise\|assert_receive\|assert_received\|catch_error\)\>" syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(catch_exit\|catch_throw\|flunk\|refute\|refute_in_delta\|refute_receive\|refute_received\)\>" -hi def link elixirBlockDefinition Define -hi def link elixirDefine Define -hi def link elixirPrivateDefine Define -hi def link elixirGuard Define -hi def link elixirPrivateGuard Define -hi def link elixirModuleDefine Define -hi def link elixirProtocolDefine Define -hi def link elixirImplDefine Define -hi def link elixirRecordDefine Define -hi def link elixirPrivateRecordDefine Define -hi def link elixirMacroDefine Define -hi def link elixirPrivateMacroDefine Define -hi def link elixirDelegateDefine Define -hi def link elixirOverridableDefine Define -hi def link elixirExceptionDefine Define -hi def link elixirCallbackDefine Define -hi def link elixirStructDefine Define -hi def link elixirExUnitMacro Define -hi def link elixirModuleDeclaration Type -hi def link elixirFunctionDeclaration Function -hi def link elixirMacroDeclaration Macro -hi def link elixirInclude Include -hi def link elixirComment Comment -hi def link elixirTodo Todo -hi def link elixirKeyword Define -hi def link elixirExUnitAssert Keyword -hi def link elixirOperator Operator -hi def link elixirAtom Constant -hi def link elixirPseudoVariable Constant -hi def link elixirAlias Type -hi def link elixirBoolean Boolean -hi def link elixirVariable Identifier -hi def link elixirSelf Identifier -hi def link elixirUnusedVariable Comment -hi def link elixirNumber Number -hi def link elixirDocString Comment -hi def link elixirDocTest elixirKeyword -hi def link elixirAtomInterpolated elixirAtom -hi def link elixirRegex elixirString -hi def link elixirRegexEscape elixirSpecial -hi def link elixirRegexEscapePunctuation elixirSpecial -hi def link elixirRegexCharClass elixirSpecial -hi def link elixirRegexQuantifier elixirSpecial -hi def link elixirSpecial Special -hi def link elixirString String -hi def link elixirSigil String -hi def link elixirStringDelimiter Delimiter -hi def link elixirRegexDelimiter Delimiter -hi def link elixirInterpolationDelimiter Delimiter -hi def link elixirSigilDelimiter Delimiter +hi def link elixirBlockDefinition Define +hi def link elixirDefine Define +hi def link elixirPrivateDefine Define +hi def link elixirGuard Define +hi def link elixirPrivateGuard Define +hi def link elixirModuleDefine Define +hi def link elixirProtocolDefine Define +hi def link elixirImplDefine Define +hi def link elixirRecordDefine Define +hi def link elixirPrivateRecordDefine Define +hi def link elixirMacroDefine Define +hi def link elixirPrivateMacroDefine Define +hi def link elixirDelegateDefine Define +hi def link elixirOverridableDefine Define +hi def link elixirExceptionDefine Define +hi def link elixirCallbackDefine Define +hi def link elixirStructDefine Define +hi def link elixirExUnitMacro Define +hi def link elixirModuleDeclaration Type +hi def link elixirPrivateFunctionDeclaration elixirFunctionDeclaration +hi def link elixirFunctionDeclaration Function +hi def link elixirPrivateMacroDeclaration elixirMacroDeclaration +hi def link elixirMacroDeclaration Macro +hi def link elixirInclude Include +hi def link elixirComment Comment +hi def link elixirTodo Todo +hi def link elixirKeyword Define +hi def link elixirExUnitAssert Keyword +hi def link elixirOperator Operator +hi def link elixirAtom Constant +hi def link elixirPseudoVariable Constant +hi def link elixirAlias Type +hi def link elixirBoolean Boolean +hi def link elixirVariable Identifier +hi def link elixirSelf Identifier +hi def link elixirUnusedVariable Comment +hi def link elixirNumber Number +hi def link elixirDocString Comment +hi def link elixirDocTest elixirKeyword +hi def link elixirAtomInterpolated elixirAtom +hi def link elixirRegex elixirString +hi def link elixirRegexEscape elixirSpecial +hi def link elixirRegexEscapePunctuation elixirSpecial +hi def link elixirRegexCharClass elixirSpecial +hi def link elixirRegexQuantifier elixirSpecial +hi def link elixirSpecial Special +hi def link elixirString String +hi def link elixirSigil String +hi def link elixirDocStringDelimiter elixirStringDelimiter +hi def link elixirDocSigilDelimiter elixirSigilDelimiter +hi def link elixirStringDelimiter Delimiter +hi def link elixirRegexDelimiter Delimiter +hi def link elixirInterpolationDelimiter Delimiter +hi def link elixirSigilDelimiter Delimiter +hi def link elixirPrivateRecordDeclaration elixirRecordDeclaration let b:current_syntax = "elixir" diff --git a/syntax/gitrebase.vim b/syntax/gitrebase.vim index dad1605b..da1c4a21 100644 --- a/syntax/gitrebase.vim +++ b/syntax/gitrebase.vim @@ -20,8 +20,9 @@ syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite -syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseBreak "\v^b%(reak)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseNoop "\v^noop>" syn match gitrebaseSummary ".*" contains=gitrebaseHash contained syn match gitrebaseCommand ".*" contained syn match gitrebaseComment "^\s*#.*" contains=gitrebaseHash @@ -35,8 +36,9 @@ hi def link gitrebaseEdit PreProc hi def link gitrebaseSquash Type hi def link gitrebaseFixup Special hi def link gitrebaseExec Function -hi def link gitrebaseDrop Comment hi def link gitrebaseBreak Macro +hi def link gitrebaseDrop Comment +hi def link gitrebaseNoop Comment hi def link gitrebaseSummary String hi def link gitrebaseComment Comment hi def link gitrebaseSquashError Error diff --git a/syntax/go.vim b/syntax/go.vim index 51f1a60e..a06f62d2 100644 --- a/syntax/go.vim +++ b/syntax/go.vim @@ -74,7 +74,7 @@ hi def link goComment Comment hi def link goTodo Todo if go#config#HighlightGenerateTags() - syn match goGenerateVariables contained /\(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/ + syn match goGenerateVariables contained /\%(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/ syn region goGenerate start="^\s*//go:generate" end="$" contains=goGenerateVariables hi def link goGenerate PreProc hi def link goGenerateVariables Special @@ -115,7 +115,7 @@ if go#config#HighlightFormatStrings() " 5. Match [n] or nothing before a verb " 6. Match a formatting verb syn match goFormatSpecifier /\ - \([^%]\(%%\)*\)\ + \%([^%]\%(%%\)*\)\ \@<=%[-#0 +]*\ \%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\ \%(\.\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\)\=\ @@ -150,18 +150,18 @@ endif " var, const if go#config#FoldEnable('varconst') syn region goVar start='var (' end='^\s*)$' transparent fold - \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator syn region goConst start='const (' end='^\s*)$' transparent fold - \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator else syn region goVar start='var (' end='^\s*)$' transparent - \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator syn region goConst start='const (' end='^\s*)$' transparent - \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments,goPointerOperator + \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goParamName,goParamType,goSimpleParams,goPointerOperator endif " Single-line var, const, and import. -syn match goSingleDecl /\(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst +syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst " Integers syn match goDecimalInt "\<-\=\d\+\%([Ee][-+]\=\d\+\)\=\>" @@ -192,7 +192,7 @@ hi def link goImaginaryFloat Float " Spaces after "[]" if go#config#HighlightArrayWhitespaceError() - syn match goSpaceError display "\(\[\]\)\@<=\s\+" + syn match goSpaceError display "\%(\[\]\)\@<=\s\+" endif " Spacing errors around the 'chan' keyword @@ -201,24 +201,24 @@ if go#config#HighlightChanWhitespaceError() " " \(\<chan\>\)\@<!<- (only pick arrow when it doesn't come after a chan) " this prevents picking up 'chan<- chan<-' but not '<- chan' - syn match goSpaceError display "\(\(\<chan\>\)\@<!<-\)\@<=\s\+\(\<chan\>\)\@=" + syn match goSpaceError display "\%(\%(\<chan\>\)\@<!<-\)\@<=\s\+\%(\<chan\>\)\@=" " send-only annotation on chan type " " \(<-\)\@<!\<chan\> (only pick chan when it doesn't come after an arrow) " this prevents picking up '<-chan <-chan' but not 'chan <-' - syn match goSpaceError display "\(\(<-\)\@<!\<chan\>\)\@<=\s\+\(<-\)\@=" + syn match goSpaceError display "\%(\%(<-\)\@<!\<chan\>\)\@<=\s\+\%(<-\)\@=" " value-ignoring receives in a few contexts - syn match goSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+" + syn match goSpaceError display "\%(\%(^\|[={(,;]\)\s*<-\)\@<=\s\+" endif " Extra types commonly seen if go#config#HighlightExtraTypes() - syn match goExtraType /\<bytes\.\(Buffer\)\>/ - syn match goExtraType /\<context\.\(Context\)\>/ - syn match goExtraType /\<io\.\(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/ - syn match goExtraType /\<reflect\.\(Kind\|Type\|Value\)\>/ + syn match goExtraType /\<bytes\.\%(Buffer\)\>/ + syn match goExtraType /\<context\.\%(Context\)\>/ + syn match goExtraType /\<io\.\%(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/ + syn match goExtraType /\<reflect\.\%(Kind\|Type\|Value\)\>/ syn match goExtraType /\<unsafe\.Pointer\>/ endif @@ -265,21 +265,22 @@ endif hi def link goOperator Operator " Functions; -if go#config#HighlightFunctions() || go#config#HighlightFunctionArguments() - syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleArguments skipwhite skipnl - syn match goReceiverVar /\w\+\ze\s\+\(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained +if go#config#HighlightFunctions() || go#config#HighlightFunctionParameters() + syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleParams skipwhite skipnl + syn match goReceiverVar /\w\+\ze\s\+\%(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl - syn match goFunction /\w\+/ nextgroup=goSimpleArguments contained skipwhite skipnl + syn match goFunction /\w\+/ nextgroup=goSimpleParams contained skipwhite skipnl syn match goReceiverType /\w\+/ contained -if go#config#HighlightFunctionArguments() - syn match goSimpleArguments /(\(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goArgumentName nextgroup=goSimpleArguments skipwhite skipnl - syn match goArgumentName /\w\+\(\s*,\s*\w\+\)*\ze\s\+\(\w\|\.\|\*\|\[\)/ contained nextgroup=goArgumentType skipwhite skipnl - syn match goArgumentType /\([^,)]\|\_s\)\+,\?/ contained nextgroup=goArgumentName skipwhite skipnl - \ contains=goVarArgs,goType,goSignedInts,goUnsignedInts,goFloats,goComplexes,goDeclType,goBlock - hi def link goReceiverVar goArgumentName - hi def link goArgumentName Identifier -endif - syn match goReceiver /(\s*\w\+\(\s\+\*\?\s*\w\+\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverVar skipwhite skipnl + if go#config#HighlightFunctionParameters() + syn match goSimpleParams /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType nextgroup=goFunctionReturn skipwhite skipnl + syn match goFunctionReturn /(\%(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goParamName,goType skipwhite skipnl + syn match goParamName /\w\+\%(\s*,\s*\w\+\)*\ze\s\+\%(\w\|\.\|\*\|\[\)/ contained nextgroup=goParamType skipwhite skipnl + syn match goParamType /\%([^,)]\|\_s\)\+,\?/ contained nextgroup=goParamName skipwhite skipnl + \ contains=goVarArgs,goType,goSignedInts,goUnsignedInts,goFloats,goComplexes,goDeclType,goBlock + hi def link goReceiverVar goParamName + hi def link goParamName Identifier + endif + syn match goReceiver /(\s*\w\+\%(\s\+\*\?\s*\w\+\)\?\s*)\ze\s*\w/ contained nextgroup=goFunction contains=goReceiverVar skipwhite skipnl else syn keyword goDeclaration func endif @@ -293,7 +294,20 @@ hi def link goFunctionCall Type " Fields; if go#config#HighlightFields() - syn match goField /\.\w\+\([.\ \n\r\:\)\[,]\)\@=/hs=s+1 + " 1. Match a sequence of word characters coming after a '.' + " 2. Require the following but dont match it: ( \@= see :h E59) + " - The symbols: / - + * % OR + " - The symbols: [] {} <> ) OR + " - The symbols: \n \r space OR + " - The symbols: , : . + " 3. Have the start of highlight (hs) be the start of matched + " pattern (s) offsetted one to the right (+1) (see :h E401) + syn match goField /\.\w\+\ + \%(\%([\/\-\+*%]\)\|\ + \%([\[\]{}<\>\)]\)\|\ + \%([\!=\^|&]\)\|\ + \%([\n\r\ ]\)\|\ + \%([,\:.]\)\)\@=/hs=s+1 endif hi def link goField Identifier @@ -302,7 +316,7 @@ if go#config#HighlightTypes() syn match goTypeConstructor /\<\w\+{\@=/ syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl - syn match goDeclType /\<\(interface\|struct\)\>/ skipwhite skipnl + syn match goDeclType /\<\%(interface\|struct\)\>/ skipwhite skipnl hi def link goReceiverType Type else syn keyword goDeclType struct interface diff --git a/syntax/i3config.vim b/syntax/i3config.vim index 1d6367f2..4763ba43 100644 --- a/syntax/i3config.vim +++ b/syntax/i3config.vim @@ -55,8 +55,12 @@ syn keyword InitializeKeyword set contained syn match Initialize /^\s*set\s\+.*$/ contains=Variable,InitializeKeyword,Color,String " Gaps -syn keyword GapStyleKeyword inner outer current all set plus minus contained -syn match GapStyle /^\s*\(gaps\)\s\+\(inner\|outer\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\)\)\?\(\s\+\d\+\)$/ contains=GapStyleKeyword,number +syn keyword GapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle contained +syn match GapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(\d\+\|\$.*\)\)$/ contains=GapStyleKeyword,number,Variable +syn keyword SmartGapKeyword on inverse_outer contained +syn match SmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=SmartGapKeyword +syn keyword SmartBorderKeyword on no_gaps contained +syn match SmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=SmartBorderKeyword " Keyboard bindings syn keyword Action toggle fullscreen restart key import kill shrink grow contained @@ -87,8 +91,8 @@ syn keyword BorderStyleKeyword none normal pixel contained syn match BorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\)\s\?$/ contains=BorderStyleKeyword,number " Hide borders and edges -syn keyword EdgeKeyword none vertical horizontal both contained -syn match Edge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\)\s\?$/ contains=EdgeKeyword +syn keyword EdgeKeyword none vertical horizontal both smart smart_no_gaps contained +syn match Edge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|both\|smart\|smart_no_gaps\)\s\?$/ contains=EdgeKeyword " Arbitrary commands for specific windows (for_window) syn keyword CommandKeyword for_window contained @@ -187,6 +191,8 @@ hi! def link OrientationKeyword Type hi! def link MouseWarpingType Type hi! def link FocusFollowsMouseType Type hi! def link GapStyleKeyword Type +hi! def link SmartGapKeyword Type +hi! def link SmartBorderKeyword Type hi! def link LayoutKeyword Type hi! def link BorderStyleKeyword Type hi! def link EdgeKeyword Type @@ -215,6 +221,8 @@ hi! def link FontKeyword Identifier hi! def link BindKeyword Identifier hi! def link Orientation Identifier hi! def link GapStyle Identifier +hi! def link SmartGap Identifier +hi! def link SmartBorder Identifier hi! def link Layout Identifier hi! def link BorderStyle Identifier hi! def link Edge Identifier @@ -239,7 +247,7 @@ hi! def link FocusOnActivationKeyword Identifier hi! def link DrawingMarksKeyword Identifier hi! def link BlockKeyword Identifier hi! def link Variable Statement -hi! def link ArbitraryCommand Ignore +hi! def link ArbitraryCommand Type let b:current_syntax = "i3config" diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 7f127520..b0394caa 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -138,8 +138,8 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression,jsSpreadExpression extend fold syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsExpression extend fold nextgroup=jsFlowDefinition syntax region jsParenDecorator contained matchgroup=jsParensDecorator start=/(/ end=/)/ contains=@jsAll extend fold -syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentIfElse,jsIfElseBlock extend fold -syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentRepeat,jsRepeatBlock extend fold +syntax region jsParenIfElse contained matchgroup=jsParensIfElse start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentIfElse,jsIfElseBlock,jsReturn extend fold +syntax region jsParenRepeat contained matchgroup=jsParensRepeat start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsCommentRepeat,jsRepeatBlock,jsReturn extend fold syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold @@ -157,7 +157,7 @@ syntax region jsBlock matchgroup=jsBraces s syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment,jsFlowTypeKeyword skipwhite skipempty nextgroup=jsFrom fold syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/ -syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|}\@=\)/ contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression +syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?:\@!/ end=/\%(:\|}\@=\)/ contains=@jsExpression extend skipwhite skipempty nextgroup=@jsExpression syntax match jsOperator /?\.\ze\_D/ syntax match jsGenerator contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs,jsFlowFunctionGroup diff --git a/syntax/julia.vim b/syntax/julia.vim index e599647e..5f40db60 100644 --- a/syntax/julia.vim +++ b/syntax/julia.vim @@ -156,37 +156,41 @@ syntax region juliaParBlockInRange matchgroup=juliaParDelim contained start="(" syntax region juliaSqBraBlock matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeEnd,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS syntax region juliaCurBraBlock matchgroup=juliaParDelim start="{" end="}" contains=@juliaExpressions -syntax match juliaKeyword display "\<\%(return\|local\|global\|import\%(all\)\?\|export\|using\|const\|where\)\>" +" This is really ugly. It would be better to mask most keywords when a dot is +" found, introducing some kind of dot-environment +let s:nodot = '\%(\.\)\@'.s:d(1).'1<!' + +exec 'syntax match juliaKeyword display "'.s:nodot.'\<\%(return\|local\|global\|import\%(all\)\?\|export\|using\|const\|where\)\>"' syntax match juliaInfixKeyword display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!" -syntax match juliaRepKeyword display "\<\%(break\|continue\)\>" -syntax region juliaConditionalBlock matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold -syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock -syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions -syntax region juliaWhileBlock matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaForBlock matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold -syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold +exec 'syntax match juliaRepKeyword display "'.s:nodot.'\<\%(break\|continue\)\>"' +exec 'syntax region juliaConditionalBlock matchgroup=juliaConditional start="'.s:nodot.'\<if\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold' +exec 'syntax region juliaConditionalEIBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\<elseif\>" end="'.s:nodot.'\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock' +exec 'syntax region juliaConditionalEBlock matchgroup=juliaConditional transparent contained start="'.s:nodot.'\<else\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions' +exec 'syntax region juliaWhileBlock matchgroup=juliaRepeat start="'.s:nodot.'\<while\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' +exec 'syntax region juliaForBlock matchgroup=juliaRepeat start="'.s:nodot.'\<for\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaOuter fold' +exec 'syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<begin\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' +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 - syntax region juliaTypeBlock matchgroup=juliaBlKeyword06 start="\<type\>" end="\<end\>" contains=@juliaExpressions fold - syntax region juliaImmutableBlock matchgroup=juliaBlKeyword06 start="\<immutable\>" end="\<end\>" contains=@juliaExpressions fold + 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 -syntax region juliaStructBlock matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaMutableStructBlock matchgroup=juliaBlKeyword start="\<mutable struct\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaLetBlock matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold -syntax region juliaDoBlock matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold +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' +exec 'syntax region juliaDoBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<do\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold' exec 'syntax region juliaModuleBlock matchgroup=juliaBlKeyword start="\%(\%(\.\s*\)\@'.s:d(6).'<!\|\%(@\s*\.\s*\)\@'.s:d(6).'<=\)\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold' -syntax region juliaExceptionBlock matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold -syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock -syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions -syntax match juliaTypedef "\<\%(abstract\|typealias\|bitstype\)\>" +exec 'syntax region juliaExceptionBlock matchgroup=juliaException start="'.s:nodot.'\<try\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold' +exec 'syntax region juliaCatchBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\<catch\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock' +exec 'syntax region juliaFinallyBlock matchgroup=juliaException transparent contained start="'.s:nodot.'\<finally\>" end="'.s:nodot.'\<end\>"me=s-1 contains=@juliaExpressions' +exec 'syntax match juliaTypedef "'.s:nodot.'\<\%(abstract\|typealias\|bitstype\)\>"' " AbstractBlock needs to come after to take precedence -syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="\<abstract type\>" end="\<end\>" fold contains=@juliaExpressions -syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="\<primitive type\>" end="\<end\>" fold contains=@juliaExpressions +exec 'syntax region juliaAbstractBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<abstract type\>" end="'.s:nodot.'\<end\>" fold contains=@juliaExpressions' +exec 'syntax region juliaPrimitiveBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<primitive type\>" end="'.s:nodot.'\<end\>" fold contains=@juliaExpressions' exec 'syntax region juliaComprehensionFor matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor' -syntax match juliaComprehensionIf contained "\<if\>" +exec 'syntax match juliaComprehensionIf contained "'.s:nodot.'\<if\>"' exec 'syntax match juliaOuter contained "\<outer\ze\s\+' . s:idregex . '\>"' @@ -219,7 +223,7 @@ syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|St syntax match juliaBaseTypeRange06 display "\<Range\>" syntax match juliaBaseTypeRange1011 display "\<\(Abstract\|Lin\)Range\>" syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>" -syntax match juliaBaseTypeFact display "\<Factorization\>" +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\)\>" diff --git a/syntax/kotlin.vim b/syntax/kotlin.vim index 70803f5c..a4019e55 100644 --- a/syntax/kotlin.vim +++ b/syntax/kotlin.vim @@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'kotlin') == -1 " Vim syntax file " Language: Kotlin " Maintainer: Alexander Udalov -" Latest Revision: 23 November 2017 +" Latest Revision: 14 January 2019 if exists("b:current_syntax") finish @@ -36,6 +36,12 @@ syn match ktShebang "\v^#!.*$" syn match ktLineComment "\v//.*$" contains=ktTodo,@Spell syn region ktComment matchgroup=ktCommentMatchGroup start="/\*" end="\*/" contains=ktComment,ktTodo,@Spell +syn region ktDocComment start="/\*\*" end="\*/" contains=ktDocTag,ktTodo,@Spell +syn match ktDocTag "\v\@(author|constructor|receiver|return|since|suppress)>" contained +syn match ktDocTag "\v\@(exception|param|property|throws|see|sample)>\s*\S+" contains=ktDocTagParam contained +syn match ktDocTagParam "\v(\s|\[)\S+" contained +syn match ktComment "/\*\*/" + syn match ktSpecialCharError "\v\\." contained syn match ktSpecialChar "\v\\([tbnr'"$\\]|u\x{4})" contained syn region ktString start='"' skip='\\"' end='"' contains=ktSimpleInterpolation,ktComplexInterpolation,ktSpecialChar,ktSpecialCharError @@ -49,11 +55,11 @@ syn match ktAnnotation "\v(\w)@<!\@[[:alnum:]_.]*(:[[:alnum:]_.]*)?" syn match ktLabel "\v\w+\@" syn match ktSimpleInterpolation "\v\$\h\w*" contained -syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation +syn region ktComplexInterpolation matchgroup=ktComplexInterpolationBrace start="\v\$\{" end="\v\}" contains=ALLBUT,ktSimpleInterpolation,ktTodo,ktSpecialCharError,ktSpecialChar,ktDocTag,ktDocTagParam -syn match ktNumber "\v<\d+[_[:digit:]]*[LFf]?" -syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*L?" -syn match ktNumber "\v<0[Bb][01]+[_01]*L?" +syn match ktNumber "\v<\d+[_[:digit:]]*(uL?|UL?|[LFf])?" +syn match ktNumber "\v<0[Xx]\x+[_[:xdigit:]]*(uL?|UL?|L)?" +syn match ktNumber "\v<0[Bb][01]+[_01]*(uL?|UL?|L)?" syn match ktFloat "\v<\d*(\d[eE][-+]?\d+|\.\d+([eE][-+]?\d+)?)[Ff]?" syn match ktEscapedName "\v`.*`" @@ -86,6 +92,9 @@ hi link ktShebang Comment hi link ktLineComment Comment hi link ktComment Comment hi link ktCommentMatchGroup Comment +hi link ktDocComment Comment +hi link ktDocTag Special +hi link ktDocTagParam Identifier hi link ktSpecialChar SpecialChar hi link ktSpecialCharError Error diff --git a/syntax/markdown.vim b/syntax/markdown.vim index 95969bf2..e59ffcae 100644 --- a/syntax/markdown.vim +++ b/syntax/markdown.vim @@ -38,10 +38,14 @@ syn sync linebreaks=1 let s:conceal = '' let s:concealends = '' +let s:concealcode = '' if has('conceal') && get(g:, 'vim_markdown_conceal', 1) let s:conceal = ' conceal' let s:concealends = ' concealends' endif +if has('conceal') && get(g:, 'vim_markdown_conceal_code_blocks', 1) + let s:concealcode = ' concealends' +endif " additions to HTML groups if get(g:, 'vim_markdown_emphasis_multiline', 1) @@ -96,13 +100,13 @@ syn match htmlH2 /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell "define Markdown groups syn match mkdLineBreak / \+$/ syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLink,mkdInlineURL,mkdLineBreak,@Spell -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/\(\([^\\]\|^\)\\\)\@<!``/' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre[^>]*\\\@<!>" end="</pre>"' . s:concealends -execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code[^>]*\\\@<!>" end="</code>"' . s:concealends +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/`/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/ end=/\(\([^\\]\|^\)\\\)\@<!``/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/ end=/\(\([^\\]\|^\)\\\)\@<!\~\~/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre[^>]*\\\@<!>" end="</pre>"' . s:concealcode +execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code[^>]*\\\@<!>" end="</code>"' . s:concealcode syn region mkdFootnote start="\[^" end="\]" syn match mkdCode /^\s*\n\(\(\s\{8,}[^ ]\|\t\t\+[^\t]\).*\n\)\+/ syn match mkdCode /\%^\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/ @@ -147,7 +151,13 @@ if get(g:, 'vim_markdown_math', 0) syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend endif -syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath +" Strike through +if get(g:, 'vim_markdown_strikethrough', 0) + syn region mkdStrike matchgroup=mkdStrike start="\%(\~\~\)" end="\%(\~\~\)" + HtmlHiLink mkdStrike htmlStrike +endif + +syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,htmlStrike "highlighting for Markdown groups HtmlHiLink mkdString String diff --git a/syntax/mustache.vim b/syntax/mustache.vim index 50babe83..6f18be0b 100644 --- a/syntax/mustache.vim +++ b/syntax/mustache.vim @@ -44,7 +44,7 @@ endif syntax match mustacheError '}}}\?' syntax match mustacheInsideError '{{[{$#<>=!\/]\?' syntax region mustacheInside start=/{{[^!][$#^/]\?/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer -syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,mustacheParam,@htmlMustacheContainer +syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,mustacheParam syntax region mustacheHtmlValue start=/={{[^!][$#^/]\?/rs=s+1,hs=s+1 end=/}}/ oneline keepend contained containedin=htmlTag contains=mustacheInside syntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer syntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer diff --git a/syntax/pug.vim b/syntax/pug.vim index 31dcaec1..ba687390 100644 --- a/syntax/pug.vim +++ b/syntax/pug.vim @@ -32,16 +32,17 @@ syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~" syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText -syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent +syn match pugTag "+\?[[:alnum:]_-]\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName,pugJavascript nextgroup=@pugComponent syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText -syntax keyword pugCommentTodo contained TODO FIXME XXX TBD +syn keyword pugCommentTodo contained TODO FIXME XXX TBD syn match pugComment '\(\s\+\|^\)\/\/.*$' contains=pugCommentTodo,@Spell syn region pugCommentBlock start="\z(\s\+\|^\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" contains=pugCommentTodo,@Spell keepend syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->" contains=pugCommentTodo,@Spell syn region pugAngular2 start="(" end=")" contains=htmlEvent syn region pugJavascriptString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contained syn region pugJavascriptString start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contained -syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end=")" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent +syn region pugJavascriptString start=+`+ skip=+\\\(`\|$\)+ end=+`\|$+ contains=javascriptInterpolation contained +syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end="\(.\zs)\)\|)" contained contains=pugJavascriptString,pugHtmlArg,pugAngular2,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent syn match pugClassChar "\." containedin=htmlTagName nextgroup=pugClass syn match pugBlockExpansionChar ":\s\+" contained nextgroup=pugTag,pugClassChar,pugIdChar syn match pugIdChar "#[[{]\@!" contained nextgroup=pugId @@ -71,9 +72,10 @@ syn region pugPlainFilter matchgroup=pugFilter start="^\z(\s*\):\%(sass\|less\| syn match pugScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!" syn match pugScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!" syn region pugScriptLoopRegion start="^\s*\(for \)" end="$" contains=pugScriptLoopKeywords -syn keyword pugScriptLoopKeywords for in contained +syn keyword pugScriptLoopKeywords for in -syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend +syn region pugJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,pugJavascriptTag,pugCoffeescriptFilter keepend +syn region javascriptInterpolation start=/${/ end=/}/ contained syn region pugCoffeescriptFilter matchgroup=pugFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained syn region pugJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=pugBegin,pugTag @@ -104,6 +106,7 @@ hi def link pugComment Comment hi def link pugCommentBlock Comment hi def link pugHtmlConditionalComment pugComment hi def link pugJavascriptString String +hi def link javascriptInterpolation Delimiter let b:current_syntax = "pug" diff --git a/syntax/python.vim b/syntax/python.vim index e3ac9ca1..251b0f7d 100644 --- a/syntax/python.vim +++ b/syntax/python.vim @@ -46,6 +46,7 @@ if s:Enabled('g:python_highlight_all') 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') @@ -94,7 +95,7 @@ else 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,pythonBuiltinObj,pythonBuiltinFunc + syn cluster pythonExpression contains=pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonNone,pythonSingleton,pythonBuiltinObj,pythonBuiltinFunc,pythonBuiltinType endif @@ -328,18 +329,17 @@ else 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 pythonFloat '\<\d\%([_0-9]*\d\)\=\.\d\=\%([_0-9]*\d\)\=\%([eE][+-]\=\d\%([_0-9]*\d\)\=\)\=[jJ]\=' display endif " -" Builtin objects and types +" Builtin objects " if s:Enabled('g:python_highlight_builtin_objs') syn keyword pythonNone None syn keyword pythonBoolean True False - syn keyword pythonBuiltinObj Ellipsis NotImplemented - syn match pythonBuiltinObj '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>' + syn keyword pythonSingleton Ellipsis NotImplemented syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__ syn keyword pythonBuiltinObj __loader__ __spec__ __path__ __cached__ endif @@ -357,7 +357,7 @@ if s:Enabled('g:python_highlight_builtin_funcs') let s:funcs_re .= '|print' endif else - let s:funcs_re .= '|ascii|exec|print' + let s:funcs_re .= '|ascii|breakpoint|exec|print' endif let s:funcs_re = 'syn match pythonBuiltinFunc ''\v\.@<!\zs<%(' . s:funcs_re . ')>' @@ -371,11 +371,20 @@ if s:Enabled('g:python_highlight_builtin_funcs') endif " +" Builtin types +" + +if s:Enabled('g:python_highlight_builtin_types') + syn match pythonBuiltinType '\v\.@<!<%(object|bool|int|float|tuple|str|list|dict|set|frozenset|bytearray|bytes)>' +endif + + +" " Builtin exceptions and warnings " 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|PendingDepricationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning' + 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' @@ -416,7 +425,6 @@ if v:version >= 508 || !exists('did_python_syn_inits') HiLink pythonDecorator Define HiLink pythonDottedName Function - HiLink pythonDot Normal HiLink pythonComment Comment if !s:Enabled('g:python_highlight_file_headers_as_comments') @@ -472,9 +480,11 @@ if v:version >= 508 || !exists('did_python_syn_inits') HiLink pythonBoolean Boolean HiLink pythonNone Constant + HiLink pythonSingleton Constant - HiLink pythonBuiltinObj Structure + HiLink pythonBuiltinObj Identifier HiLink pythonBuiltinFunc Function + HiLink pythonBuiltinType Structure HiLink pythonExClass Structure HiLink pythonClassVar Identifier diff --git a/syntax/racket.vim b/syntax/racket.vim index 717e1df6..4ab9b63c 100644 --- a/syntax/racket.vim +++ b/syntax/racket.vim @@ -57,6 +57,14 @@ syn keyword racketSyntax define* define*-values define*-syntax define*-syntaxes syn keyword racketSyntax package? package-exported-identifiers package-original-identifiers syn keyword racketSyntax block #%stratified-body +" 8 Contracts +" 8.2 Function contracts +syn keyword racketSyntax -> ->* ->i ->d case-> dynamic->* unconstrained-domain-> + +" 8.6.1 Nested Contract Boundaries +syn keyword racketSyntax with-contract define/contract define-struct/contract +syn keyword racketSyntax invariant-assertion current-contract-region + " 9 Pattern Matching syn keyword racketSyntax match match* match/values define/match syn keyword racketSyntax match-lambda match-lambda* match-lambda** @@ -75,6 +83,9 @@ syn keyword racketSyntax reset-at shift-at prompt0 reset0 control0 shift0 syn keyword racketSyntax prompt0-at reset0-at control0-at shift0-at syn keyword racketSyntax set cupto +" 11.3.2 Parameters +syn keyword racketSyntax parameterize parameterize* + " 12.5 Writing syn keyword racketSyntax write display displayln print syn keyword racketSyntax fprintf printf eprintf format @@ -93,7 +104,8 @@ syn keyword racketSyntax make-custodian-box custodian-box-value " lambda sign syn match racketSyntax /\<[\u03bb]\>/ -" Functions + +" Functions ================================================================== syn keyword racketFunc boolean? not equal? eqv? eq? equal?/recur immutable? syn keyword racketFunc true false symbol=? boolean=? false? @@ -108,8 +120,8 @@ syn keyword racketFunc inexact->exact exact->inexact " 3.2.2.1 Arithmetic syn keyword racketFunc + - * / quotient remainder quotient/remainder modulo -syn keyword racketFunc add1 sub1 abs max min gcd lcm round floor ceiling -syn keyword racketFunc truncate numerator denominator rationalize +syn keyword racketFunc add1 sub1 abs max min gcd lcm round exact-round floor +syn keyword racketFunc ceiling truncate numerator denominator rationalize " 3.2.2.2 Number Comparison syn keyword racketFunc = < <= > >= @@ -374,6 +386,19 @@ syn keyword racketFunc class-field-accessor class-field-mutator "5.4.3 Generics syn keyword racketFunc generic send-generic make-generic +" 8.1 Data-strucure contracts +syn keyword racketFunc flat-contract-with-explanation flat-named-contract +" TODO where do any/c and none/c `value`s go? +syn keyword racketFunc or/c first-or/c and/c not/c =/c </c >/c <=/c >=/c +syn keyword racketFunc between/c real-in integer-in char-in natural-number/c +syn keyword racketFunc string-len/c printable/c one-of/c symbols vectorof +syn keyword racketFunc vector-immutableof vector/c box/c box-immutable/c listof +syn keyword racketFunc non-empty-listof list*of cons/c cons/dc list/c *list/c +syn keyword racketFunc syntax/c struct/c struct/dc parameter/c +syn keyword racketFunc procedure-arity-includes/c hash/c hash/dc channel/c +syn keyword racketFunc prompt-tag/c continuation-mark-key/c evt/c promise/c +syn keyword racketFunc flat-contract flat-contract-predicate suggest/c + " 9.1 Multiple Values syn keyword racketFunc values call-with-values @@ -420,6 +445,11 @@ syn keyword racketFunc continuation? continuation-prompt-tag dynamic-wind " 10.4.1 Additional Control Operators syn keyword racketFunc call/prompt abort/cc call/comp abort fcontrol spawn splitter new-prompt +" 11.3.2 Parameters +syn keyword racketFunc make-parameter make-derived-parameter parameter? +syn keyword racketFunc parameter-procedure=? current-parameterization +syn keyword racketFunc call-with-parameterization parameterization? + " 14.1.1 Manipulating Paths syn keyword racketFunc path? path-string? path-for-some-system? string->path path->string path->bytes syn keyword racketFunc string->path-element bytes->path-element path-element->string path-element->bytes @@ -434,6 +464,9 @@ syn keyword racketFunc path-replace-suffix path-add-suffix syn keyword racketFunc explode-path file-name-from-path filename-extension find-relative-path normalize-path syn keyword racketFunc path-element? path-only simple-form-path some-simple-path->string string->some-system-path +" 15.6 Time +syn keyword racketFunc current-seconds current-inexact-milliseconds +syn keyword racketFunc seconds->date current-milliseconds syn match racketDelimiter !\<\.\>! diff --git a/syntax/rst.vim b/syntax/rst.vim index 9df2283a..7d88963a 100644 --- a/syntax/rst.vim +++ b/syntax/rst.vim @@ -5,7 +5,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rst') == -1 " Maintainer: Marshall Ward <marshall.ward@gmail.com> " Previous Maintainer: Nikolai Weibull <now@bitwi.se> " Website: https://github.com/marshallward/vim-restructuredtext -" Latest Revision: 2018-07-23 +" Latest Revision: 2018-12-29 if exists("b:current_syntax") finish @@ -23,7 +23,7 @@ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference syn region rstLiteralBlock matchgroup=rstDelimiter - \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!' + \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!' \ contains=@NoSpell syn region rstQuotedLiteralBlock matchgroup=rstDelimiter diff --git a/syntax/ruby.vim b/syntax/ruby.vim index 9f269980..28c341b0 100644 --- a/syntax/ruby.vim +++ b/syntax/ruby.vim @@ -20,6 +20,11 @@ endif let s:cpo_sav = &cpo set cpo&vim +" eRuby Config {{{1 +if exists('main_syntax') && main_syntax == 'eruby' + let b:ruby_no_expensive = 1 +endif + " Folding Config {{{1 if has("folding") && exists("ruby_fold") setlocal foldmethod=syntax @@ -34,6 +39,10 @@ let s:foldable_groups = split( \ ) function! s:foldable(...) abort + if index(s:foldable_groups, 'NONE') > -1 + return 0 + endif + if index(s:foldable_groups, 'ALL') > -1 return 1 endif @@ -45,9 +54,21 @@ function! s:foldable(...) abort endfor return 0 -endfunction " }}} +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 -syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo,rubyModuleName,rubyClassName,rubySymbolDelimiter +com! -nargs=* SynFold call s:run_syntax_fold(<q-args>) + +" }}} + +syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter " Whitespace Errors {{{1 if exists("ruby_space_errors") @@ -61,373 +82,315 @@ endif " Operators {{{1 if exists("ruby_operators") - syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::" - syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" - syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop + syn match rubyDotOperator "\.\|&\." containedin=rubyKeywordAsMethod + syn match rubyTernaryOperator "[[:alnum:]]\@1<!?\|:" + syn match rubyArithmeticOperator "\*\*\|[*/%+]\|->\@!" + syn match rubyComparisonOperator "<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<<\@!\|>=\|[-=]\@1<!>" + syn match rubyBitwiseOperator "[~^|]\|&\.\@!\|\%(class\s*\)\@<!<<\|>>" + syn match rubyBooleanOperator "[[:alnum:]]\@1<!!\|&&\|||" + syn match rubyRangeOperator "\.\.\.\=" + syn match rubyAssignmentOperator "=>\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^=" + syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~" + syn match rubyScopeOperator "::" + syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop + + syn cluster rubyOperator contains=ruby.*Operator endif -" Expression Substitution and Backslash Notation {{{1 -syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display +" String Interpolation and Backslash Notation {{{1 +syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop +syn match rubyInterpolation "#\$\%(-\w\|[!$&"'*+,./0:;<>?@\`~_]\|\w\+\)" display contained contains=rubyInterpolationDelimiter,@rubyGlobalVariable +syn match rubyInterpolation "#@@\=\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable +syn match rubyInterpolationDelimiter "#\ze[$@]" display contained + +syn match rubyStringEscape "\\\_." contained display +syn match rubyStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display +syn match rubyStringEscape "\\u\%(\x\{4}\|{\x\{1,6}\%(\s\+\x\{1,6}\)*}\)" contained display syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display -syn match rubyQuoteEscape "\\[\\']" contained display -syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop -syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable -syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained -syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable -syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained -syn region rubyNoInterpolation start="\\#{" end="}" contained -syn match rubyNoInterpolation "\\#{" display contained -syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained -syn match rubyNoInterpolation "\\#\$\W" display contained +syn match rubyBackslashEscape "\\\\" contained display +syn match rubyQuoteEscape "\\'" contained display +syn match rubySpaceEscape "\\ " contained display -syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE +syn match rubyParenthesesEscape "\\[()]" contained display +syn match rubyCurlyBracesEscape "\\[{}]" contained display +syn match rubyAngleBracketsEscape "\\[<>]" contained display +syn match rubySquareBracketsEscape "\\[[\]]" contained display syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained +syn cluster rubySingleCharEscape contains=rubyBackslashEscape,rubyQuoteEscape,rubySpaceEscape,rubyParenthesesEscape,rubyCurlyBracesEscape,rubyAngleBracketsEscape,rubySquareBracketsEscape +syn cluster rubyNestedBrackets contains=rubyNested.\+ +syn cluster rubyStringSpecial contains=rubyInterpolation,rubyStringEscape +syn cluster rubyStringNotTop contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape + " Regular Expression Metacharacters {{{1 -" These are mostly Oniguruma ready -syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained -syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial -syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline -syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display -syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained -syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained -syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display -syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display -syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display -syn match rubyRegexpDot "\." contained display -syn match rubyRegexpSpecial "|" contained display -syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display -syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display -syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display -syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display -syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display - -syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape -syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets -syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment - -" Numbers and ASCII Codes {{{1 -syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display -syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display -syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display -syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display +syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\\\\|\\)" end=")" contained +syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)" end=")" contained transparent contains=@rubyRegexpSpecial +syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline +syn match rubyRegexpCharClass "\\[DdHhRSsWw]" contained display +syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained +syn match rubyRegexpCharClass "\\[pP]{^\=.\{-}}" contained display +syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained " see commit e477f10 +syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display +syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display +syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display +syn match rubyRegexpDot "\.\|\\X" contained display +syn match rubyRegexpIntersection "&&" contained display +syn match rubyRegexpSpecial "\\K" contained display +syn match rubyRegexpSpecial "|" contained display +syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display +syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display +syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display +syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display +syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display + +syn cluster rubyRegexpSpecial contains=@rubyStringSpecial,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment,rubyRegexpIntersection + +" Numbers {{{1 +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display +syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display +syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display +syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)i\=\>" display " Identifiers {{{1 -syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent +syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!]\=" contains=NONE display transparent syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent -syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained -syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained -syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" -syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display -syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display -syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" -syn match rubySymbolDelimiter ":" contained -syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter -syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter -syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter -syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter - -if s:foldable(':') - syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold -else - syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial -endif +syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained +syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" contained +syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" +syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display +syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display +syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" +syn match rubySymbolDelimiter ":" contained +syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter +syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter +syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contains=rubySymbolDelimiter +syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" contains=rubySymbolDelimiter + +SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,rubyBackslashEscape +SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial -syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@=" +syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@=" syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter -syn match rubyInvalidVariable "$[^ A-Za-z_-]" -syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# -syn match rubyPredefinedVariable "$\d\+" display -syn match rubyPredefinedVariable "$_\>" display -syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display -syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display -syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display +if exists('ruby_global_variable_error') + syn match rubyGlobalVariableError "$[^A-Za-z_]" display + syn match rubyGlobalVariableError "$-[^0FIKWadilpvw]" display +endif + +syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<>?@\`~]# +syn match rubyPredefinedVariable "$\d\+" display +syn match rubyPredefinedVariable "$_\>" display +syn match rubyPredefinedVariable "$-[0FIWadilpvw]\>" display +syn match rubyPredefinedVariable "$\%(stderr\|stdin\|stdout\)\>" display +syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!" syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!" -" Normal Regular Expression {{{1 -if s:foldable('/') - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold -else - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial -endif +" Deprecated/removed in 1.9 +syn match rubyPredefinedVariable "$=" +syn match rubyPredefinedVariable "$-K\>" display +syn match rubyPredefinedVariable "$\%(deferr\|defout\)\>" display +syn match rubyPredefinedVariable "$KCODE\>" display -" Generalized Regular Expression {{{1 -if s:foldable('%') - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold -else - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial - syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial -endif +syn cluster rubyGlobalVariable contains=rubyGlobalVariable,rubyPredefinedVariable,rubyGlobalVariableError + +" Normal Regular Expressions {{{1 +SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite +SynFold '/' syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite + +" Generalized Regular Expressions {{{1 +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial nextgroup=@rubyModifier skipwhite +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial +SynFold '%' syn region rubyRegexp matchgroup=rubyPercentRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial + +" Characters {{{1 +syn match rubyCharacter "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" +syn match rubyCharacter "\%(\w\|[]})\"'/]\)\@1<!?\\u\%(\x\{4}\|{\x\{1,6}}\)" -" Normal String {{{1 +" Normal Strings {{{1 let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : '' -exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' . - \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster -exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' . - \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster +let s:fold_arg = s:foldable('string') ? ' fold' : '' +exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial' . s:spell_cluster . s:fold_arg +exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" contains=rubyQuoteEscape,rubyBackslashEscape' . s:spell_cluster . s:fold_arg +unlet s:spell_cluster s:fold_arg " Shell Command Output {{{1 -if s:foldable('%') - syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold -else - syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial -endif +SynFold 'string' syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial -" Generalized Single Quoted String, Symbol and Array of Strings {{{1 -if s:foldable('%') - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold -else - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" -endif +" Generalized Single Quoted Strings, Symbols, Array of Strings and Array of Symbols {{{1 -" Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1 -" Note: %= is not matched here as the beginning of a double quoted string -if s:foldable('%') - syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold - syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold -else - syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape - syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial -endif +" Non-bracket punctuation delimiters {{{2 +let s:names = { '~': 'Tilde', '`': 'BackQuote', '!': 'Bang', '@': 'At', '#': 'Hash', '$': 'Dollar', '%': 'Percent', '^': 'Caret', + \ '&': 'Ampersand', '*': 'Asterix', '_': 'Underscore', '-': 'Dash', '+': 'Plus', '=': 'Equals', '|': 'Bar', + \ '\': 'Backslash', ':': 'Colon', ';': 'Semicolon', '"': 'DoubleQuote', "'": 'Quote', ',': 'Comma', '.': 'Period', + \ '?': 'QuestionMark', '/': 'ForwardSlash' } -" Array of Symbols {{{1 -if s:foldable('%') - " Array of Symbols - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape - - " Array of interpolated Symbols - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold -else - " Array of Symbols - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape - - " Array of interpolated Symbols - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape - syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape -endif +for s:delimiter in keys(s:names) + let s:group = 'ruby' . s:names[s:delimiter] . 'Escape' -" Here Document {{{1 -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop -syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop - -if s:foldable('<<') - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend - - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend -else - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend - - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend - syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend -endif + if s:delimiter =~ '[\"]' + let s:delimiter = '\' . s:delimiter + endif -" eRuby Config {{{1 -if exists('main_syntax') && main_syntax == 'eruby' - let b:ruby_no_expensive = 1 -endif + exe 'syn match ' . s:group . ' "\V\\' . s:delimiter . '" contained display' + exe 'syn cluster rubySingleCharEscape add=' . s:group + exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%q' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite' + exe 'SynFold ''%'' syn region rubyString matchgroup=rubyPercentStringDelimiter start="\V%w' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite' + exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%s' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite' + exe 'SynFold ''%'' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="\V%i' . s:delimiter . '" end="\V' . s:delimiter . '" skip="\V\\\\\|\\' . s:delimiter . '" contains=rubyBackslashEscape,rubySpaceEscape,' . s:group . ' nextgroup=@rubyModifier skipwhite' + exe 'hi def link ' . s:group . ' rubyStringEscape' +endfor + +unlet s:delimiter s:group s:names +" }}}2 + +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape + +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%w(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesesEscape,rubyNestedParentheses + +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubyParenthesesEscape,rubyNestedParentheses +SynFold '%' syn region rubyString matchgroup=rubyPercentSymbolDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=rubyBackslashEscape,rubySpaceEscape + +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyBackslashEscape,rubySpaceEscape,rubyCurlyBracesEscape,rubyNestedCurlyBraces +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyBackslashEscape,rubySpaceEscape,rubyAngleBracketsEscape,rubyNestedAngleBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyBackslashEscape,rubySpaceEscape,rubySquareBracketsEscape,rubyNestedSquareBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyBackslashEscape,rubySpaceEscape,rubyParenthesesEscape,rubyNestedParentheses + +" Generalized Double Quoted Strings, Symbols, Array of Strings, Array of Symbols and Shell Command Output {{{1 +" Note: %= is not matched here as the beginning of a double quoted string +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses +SynFold '%' syn region rubyString matchgroup=rubyPercentStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial + +" Array of interpolated Symbols +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial nextgroup=@rubyModifier skipwhite +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets +SynFold '%' syn region rubySymbol matchgroup=rubyPercentSymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses + +" Here Documents {{{1 +syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop +syn region rubyHeredocStart matchgroup=rubyHeredocDelimiter start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop + +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})"']\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyHeredocDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend + +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend +SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1<!\.\)\_s*\|\%([]})]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyHeredocDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend " Module, Class, Method and Alias Declarations {{{1 -syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite -syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable -syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable -syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyOperator -syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyOperator -syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration -syn match rubyFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 -syn match rubyFunction "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration +syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable nextgroup=rubyAliasDeclaration2 skipwhite +syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,@rubyGlobalVariable +syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable +syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyClassName,rubyOperator +syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyModuleName,rubyOperator + +syn match rubyMethodName "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration +syn match rubyMethodName "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 +syn match rubyMethodName "\%([[:space:].]\|^\)\@1<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration -syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter +syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName,rubyBlockParameter " Keywords {{{1 " Note: the following keywords have already been defined: " begin case class def do end for if module unless until while -syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" -syn match rubyOperator "\<defined?" display -syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" -syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" -syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise -syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" +syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|retry\|return\)\>[?!]\@!" +syn match rubyOperator "\<defined?" display +syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" +syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" +syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise +syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" " Expensive Mode {{{1 " Match 'end' with the appropriate opening keyword for syntax based folding " and special highlighting of module/class/method definitions if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") - syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl - syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl - syn match rubyDefine "\<undef\>" nextgroup=rubyFunction skipwhite skipnl - syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl - syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl - - if s:foldable('def') - syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop - endif + syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl + syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl + syn match rubyDefine "\<undef\>" nextgroup=rubyMethodName skipwhite skipnl + syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl + syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl - if s:foldable('class') - syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop - endif - - if s:foldable('module') - syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop - endif + SynFold 'def' syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop + SynFold 'class' syn region rubyClassBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop + SynFold 'module' syn region rubyModuleBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop " modifiers - syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl + syn match rubyLineContinuation "\\$" nextgroup=@rubyModifier skipwhite skipnl syn match rubyConditionalModifier "\<\%(if\|unless\)\>" syn match rubyRepeatModifier "\<\%(while\|until\)\>" + syn match rubyRescueModifier "\<rescue\>" - if s:foldable('do') - syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop - endif + syn cluster rubyModifier contains=rubyConditionalModifier,rubyRepeatModifier,rubyRescueModifier - " curly bracket block or hash literal - if s:foldable('{') - syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop - endif + SynFold 'do' syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop - if s:foldable('[') - syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold - endif + " curly bracket block or hash literal + SynFold '{' syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop + SynFold '[' syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop " statements without 'do' - if s:foldable('begin') - syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop - endif + SynFold 'begin' syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop + SynFold 'case' syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop - if s:foldable('case') - syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop - endif - - if s:foldable('if') - syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold - else - syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop - endif + SynFold 'if' syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\<then\s\|\%(\<\h\w*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression - syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression - syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock + syn match rubyExceptionHandler "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression,rubyDoBlock + syn match rubyExceptionHandler1 "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyModuleBlock,rubyClassBlock,rubyMethodBlock + syn cluster rubyExceptionHandler contains=rubyExceptionHandler,rubyExceptionHandler1 " statements with optional 'do' - syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop + syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\h\w*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\<do\>" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop - if s:foldable('for') - syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold - else - syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine - endif + SynFold 'for' syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\h\w*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine if !exists("ruby_minlines") let ruby_minlines = 500 endif - exec "syn sync minlines=" . ruby_minlines + exe "syn sync minlines=" . ruby_minlines else syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl - syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" + syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|rescue\|ensure\|then\|when\|end\)\>[?!]\@!" syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" endif @@ -449,53 +412,62 @@ if !exists("ruby_no_special_methods") endif " Comments and Documentation {{{1 -syn match rubySharpBang "\%^#!.*" display -syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained -syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell +syn match rubySharpBang "\%^#!.*" display +syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained +syn match rubyEncoding "[[:alnum:]-]\+" contained display +syn match rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):" contained nextgroup=rubyEncoding skipwhite +syn match rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean skipwhite +syn match rubyComment "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell + +syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment +syn cluster rubyCommentNotTop contains=@rubyCommentSpecial,rubyEncoding + if !exists("ruby_no_comment_fold") && s:foldable('#') syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend - syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold + syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold else - syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell + syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell endif +" {{{1 Useless line continuations +syn match rubyUselessLineContinuation "\%([.:,;{([<>~\*%&^|+=-]\|\w\@1<![?!]\)\s*\zs\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty +syn match rubyUselessLineContinuation "\\$" nextgroup=rubyUselessLineContinuation skipwhite skipempty contained + " Keyword Nobbling {{{1 " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE " More Symbols {{{1 -syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1 -syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1 -syn match rubySymbol "\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 -syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1 +syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 +syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1 +syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 +syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1 " __END__ Directive {{{1 -if s:foldable('__END__') - syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold -else - syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" -endif +SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" " Default Highlighting {{{1 hi def link rubyClass rubyDefine hi def link rubyModule rubyDefine -hi def link rubyMethodExceptional rubyDefine +hi def link rubyExceptionHandler1 rubyDefine hi def link rubyDefine Define hi def link rubyAccess rubyMacro hi def link rubyAttribute rubyMacro hi def link rubyMacro Macro +hi def link rubyMethodName rubyFunction hi def link rubyFunction Function hi def link rubyConditional Conditional hi def link rubyConditionalModifier rubyConditional -hi def link rubyExceptional rubyConditional +hi def link rubyExceptionHandler rubyConditional +hi def link rubyRescueModifier rubyExceptionHandler hi def link rubyRepeat Repeat hi def link rubyRepeatModifier rubyRepeat hi def link rubyOptionalDo rubyRepeat hi def link rubyControl Statement hi def link rubyInclude Include hi def link rubyInteger Number -hi def link rubyASCIICode Character +hi def link rubyCharacter Character hi def link rubyFloat Float hi def link rubyBoolean Boolean hi def link rubyException Exception @@ -515,39 +487,66 @@ hi def link rubyPredefinedConstant rubyPredefinedIdentifier hi def link rubyPredefinedVariable rubyPredefinedIdentifier hi def link rubySymbol Constant hi def link rubyKeyword Keyword + hi def link rubyOperator Operator +hi def link rubyDotOperator Operator +hi def link rubyTernaryOperator Operator +hi def link rubyArithmeticOperator Operator +hi def link rubyComparisonOperator Operator +hi def link rubyBitwiseOperator Operator +hi def link rubyBooleanOperator Operator +hi def link rubyRangeOperator Operator +hi def link rubyAssignmentOperator Operator +hi def link rubyEqualityOperator Operator +hi def link rubyScopeOperator Operator + hi def link rubyBeginEnd Statement hi def link rubyEval Statement hi def link rubyPseudoVariable Constant hi def link rubyCapitalizedMethod rubyLocalVariableOrMethod hi def link rubyComment Comment +hi def link rubyEncoding Constant +hi def link rubyMagicComment SpecialComment hi def link rubyData Comment hi def link rubyDataDirective Delimiter hi def link rubyDocumentation Comment hi def link rubyTodo Todo +hi def link rubyBackslashEscape rubyStringEscape hi def link rubyQuoteEscape rubyStringEscape +hi def link rubySpaceEscape rubyStringEscape +hi def link rubyParenthesesEscape rubyStringEscape +hi def link rubyCurlyBracesEscape rubyStringEscape +hi def link rubyAngleBracketsEscape rubyStringEscape +hi def link rubySquareBracketsEscape rubyStringEscape hi def link rubyStringEscape Special + hi def link rubyInterpolationDelimiter Delimiter -hi def link rubyNoInterpolation rubyString hi def link rubySharpBang PreProc +hi def link rubyStringDelimiter Delimiter +hi def link rubyHeredocDelimiter rubyStringDelimiter +hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter +hi def link rubyPercentStringDelimiter rubyStringDelimiter +hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter hi def link rubyRegexpDelimiter rubyStringDelimiter hi def link rubySymbolDelimiter rubySymbol -hi def link rubyStringDelimiter Delimiter -hi def link rubyHeredoc rubyString hi def link rubyString String hi def link rubyRegexpEscape rubyRegexpSpecial hi def link rubyRegexpQuantifier rubyRegexpSpecial hi def link rubyRegexpAnchor rubyRegexpSpecial hi def link rubyRegexpDot rubyRegexpCharClass hi def link rubyRegexpCharClass rubyRegexpSpecial +hi def link rubyRegexpIntersection rubyRegexpSpecial hi def link rubyRegexpSpecial Special hi def link rubyRegexpComment Comment hi def link rubyRegexp rubyString -hi def link rubyInvalidVariable Error hi def link rubyError Error +if exists("ruby_line_continuation_error") + hi def link rubyUselessLineContinuation rubyError +endif +hi def link rubyGlobalVariableError rubyError hi def link rubySpaceError rubyError " Postscript {{{1 @@ -556,6 +555,8 @@ let b:current_syntax = "ruby" let &cpo = s:cpo_sav unlet! s:cpo_sav +delc SynFold + " vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: endif diff --git a/syntax/rust.vim b/syntax/rust.vim index 3dc5fefa..6803eb01 100644 --- a/syntax/rust.vim +++ b/syntax/rust.vim @@ -244,8 +244,8 @@ if !exists("b:current_syntax_embed") " possible to trick it if you try hard, and indented code blocks aren’t " supported because Markdown is a menace to parse and only mad dogs and " Englishmen would try to handle that case correctly in this syntax file). - syn region rustCommentLinesDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\s*//[!/]\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentLineDocLeader - syn region rustCommentBlockDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\%(\s*\*\)\?\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentBlockDocStar + syn region rustCommentLinesDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\s*//[!/]\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\|edition201[58]\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentLineDocLeader + syn region rustCommentBlockDocRustCode matchgroup=rustCommentDocCodeFence start='^\z(\%(\s*\*\)\?\s*```\)[^A-Za-z0-9_-]*\%(\%(should_panic\|no_run\|ignore\|allow_fail\|rust\|test_harness\|compile_fail\|E\d\{4}\|edition201[58]\)\%([^A-Za-z0-9_-]\+\|$\)\)*$' end='^\z1$' keepend contains=@RustCodeInComment,rustCommentBlockDocStar " Strictly, this may or may not be correct; this code, for example, would " mishighlight: " diff --git a/syntax/terraform.vim b/syntax/terraform.vim index a0557515..d9e59025 100644 --- a/syntax/terraform.vim +++ b/syntax/terraform.vim @@ -35,6 +35,7 @@ syn keyword terraDataTypeBI \ alicloud_dns_groups \ alicloud_dns_records \ alicloud_eips + \ alicloud_elasticsearch_instances \ alicloud_fc_functions \ alicloud_fc_services \ alicloud_fc_triggers @@ -90,6 +91,7 @@ syn keyword terraDataTypeBI \ aws_api_gateway_resource \ aws_api_gateway_rest_api \ aws_api_gateway_vpc_link + \ aws_appsync_datasource \ aws_arn \ aws_autoscaling_group \ aws_autoscaling_groups @@ -107,6 +109,7 @@ syn keyword terraDataTypeBI \ aws_cloudwatch_log_group \ aws_codecommit_repository \ aws_cognito_user_pools + \ aws_cur_report_definition \ aws_db_cluster_snapshot \ aws_db_event_categories \ aws_db_instance @@ -128,6 +131,8 @@ syn keyword terraDataTypeBI \ aws_efs_mount_target \ aws_eip \ aws_eks_cluster + \ aws_eks_cluster_auth + \ aws_elastic_beanstalk_application \ aws_elastic_beanstalk_hosted_zone \ aws_elastic_beanstalk_solution_stack \ aws_elasticache_cluster @@ -201,13 +206,20 @@ syn keyword terraDataTypeBI \ aws_vpcs \ aws_vpn_gateway \ aws_workspaces_bundle + \ azuread_user \ azurerm_api_management + \ azurerm_api_management_group + \ azurerm_api_management_product + \ azurerm_api_management_user \ azurerm_app_service \ azurerm_app_service_plan + \ azurerm_application_insights \ azurerm_application_security_group + \ azurerm_availability_set \ azurerm_azuread_application \ azurerm_azuread_service_principal \ azurerm_batch_account + \ azurerm_batch_pool \ azurerm_builtin_role_definition \ azurerm_cdn_profile \ azurerm_client_config @@ -223,6 +235,8 @@ syn keyword terraDataTypeBI \ azurerm_key_vault_key \ azurerm_key_vault_secret \ azurerm_kubernetes_cluster + \ azurerm_lb + \ azurerm_lb_backend_address_pool \ azurerm_log_analytics_workspace \ azurerm_logic_app_workflow \ azurerm_managed_disk @@ -232,16 +246,20 @@ syn keyword terraDataTypeBI \ azurerm_monitor_log_profile \ azurerm_network_interface \ azurerm_network_security_group + \ azurerm_network_watcher \ azurerm_notification_hub \ azurerm_notification_hub_namespace \ azurerm_platform_image + \ azurerm_policy_definition \ azurerm_public_ip \ azurerm_public_ips + \ azurerm_recovery_services_protection_policy_vm \ azurerm_recovery_services_vault \ azurerm_resource_group \ azurerm_role_definition \ azurerm_route_table \ azurerm_scheduler_job_collection + \ azurerm_servicebus_namespace \ azurerm_shared_image \ azurerm_shared_image_gallery \ azurerm_shared_image_version @@ -271,9 +289,11 @@ syn keyword terraDataTypeBI \ circonus_account \ circonus_collector \ cloudflare_ip_ranges + \ cloudflare_zones \ cloudstack_template \ consul_agent_config \ consul_agent_self + \ consul_autopilot_health \ consul_catalog_nodes \ consul_catalog_service \ consul_catalog_services @@ -298,6 +318,7 @@ syn keyword terraDataTypeBI \ dns_a_record_set \ dns_aaaa_record_set \ dns_cname_record_set + \ dns_mx_record_set \ dns_ns_record_set \ dns_ptr_record_set \ dns_txt_record_set @@ -305,6 +326,8 @@ syn keyword terraDataTypeBI \ external \ fastly_ip_ranges \ filter + \ flexibleengine_cce_cluster_v3 + \ flexibleengine_cce_node_v3 \ flexibleengine_compute_bms_flavors_v2 \ flexibleengine_compute_bms_keypairs_v2 \ flexibleengine_compute_bms_nic_v2 @@ -339,9 +362,11 @@ syn keyword terraDataTypeBI \ github_user \ gitlab_project \ gitlab_user + \ gitlab_users \ google_active_folder \ google_billing_account \ google_client_config + \ google_client_openid_userinfo \ google_cloudfunctions_function \ google_compute_address \ google_compute_backend_service @@ -367,6 +392,8 @@ syn keyword terraDataTypeBI \ google_folder \ google_iam_policy \ google_iam_role + \ google_kms_crypto_key + \ google_kms_key_ring \ google_kms_secret \ google_netblock_ip_ranges \ google_organization @@ -378,12 +405,14 @@ syn keyword terraDataTypeBI \ google_storage_object_signed_url \ google_storage_project_service_account \ google_storage_transfer_project_service_account + \ grafana_data_source \ hcloud_datacenter \ hcloud_datacenters \ hcloud_floating_ip \ hcloud_image \ hcloud_location \ hcloud_locations + \ hcloud_server \ hcloud_ssh_key \ hcloud_volume \ heroku_addon @@ -397,10 +426,14 @@ syn keyword terraDataTypeBI \ huaweicloud_csbs_backup_policy_v1 \ huaweicloud_csbs_backup_v1 \ huaweicloud_cts_tracker_v1 + \ huaweicloud_dcs_az_v1 + \ huaweicloud_dcs_maintainwindow_v1 + \ huaweicloud_dcs_product_v1 \ huaweicloud_dms_az_v1 \ huaweicloud_dms_maintainwindow_v1 \ huaweicloud_dms_product_v1 \ huaweicloud_iam_role_v3 + \ huaweicloud_identity_role_v3 \ huaweicloud_images_image_v2 \ huaweicloud_kms_data_key_v1 \ huaweicloud_kms_key_v1 @@ -425,6 +458,7 @@ syn keyword terraDataTypeBI \ kubernetes_service \ kubernetes_storage_class \ linode_account + \ linode_domain \ linode_image \ linode_instance_type \ linode_profile @@ -436,6 +470,7 @@ syn keyword terraDataTypeBI \ logicmonitor_collectors \ logicmonitor_device_group \ newrelic_alert_channel + \ newrelic_alert_policy \ newrelic_application \ newrelic_key_transaction \ newrelic_synthetics_monitor @@ -444,6 +479,7 @@ syn keyword terraDataTypeBI \ nomad_namespaces \ nomad_regions \ ns1_datasource + \ ns1_zone \ nsxt_certificate \ nsxt_edge_cluster \ nsxt_logical_tier0_router @@ -462,6 +498,195 @@ syn keyword terraDataTypeBI \ nutanix_virtual_machine \ nutanix_volume_group \ nutanix_volume_groups + \ oci_audit_configuration + \ oci_audit_events + \ oci_containerengine_cluster_kube_config + \ oci_containerengine_cluster_option + \ oci_containerengine_clusters + \ oci_containerengine_node_pool + \ oci_containerengine_node_pool_option + \ oci_containerengine_node_pools + \ oci_containerengine_work_request_errors + \ oci_containerengine_work_request_log_entries + \ oci_containerengine_work_requests + \ oci_core_app_catalog_listing + \ oci_core_app_catalog_listing_resource_version + \ oci_core_app_catalog_listing_resource_versions + \ oci_core_app_catalog_listings + \ oci_core_app_catalog_subscriptions + \ oci_core_boot_volume + \ oci_core_boot_volume_attachments + \ oci_core_boot_volume_backup + \ oci_core_boot_volume_backups + \ oci_core_boot_volumes + \ oci_core_console_histories + \ oci_core_console_history_data + \ oci_core_cpes + \ oci_core_cross_connect + \ oci_core_cross_connect_group + \ oci_core_cross_connect_groups + \ oci_core_cross_connect_locations + \ oci_core_cross_connect_port_speed_shapes + \ oci_core_cross_connect_status + \ oci_core_cross_connects + \ oci_core_dhcp_options + \ oci_core_drg_attachments + \ oci_core_drgs + \ oci_core_fast_connect_provider_service + \ oci_core_fast_connect_provider_services + \ oci_core_images + \ oci_core_instance + \ oci_core_instance_configuration + \ oci_core_instance_configurations + \ oci_core_instance_console_connections + \ oci_core_instance_credentials + \ oci_core_instance_devices + \ oci_core_instance_pool + \ oci_core_instance_pool_instances + \ oci_core_instance_pools + \ oci_core_instances + \ oci_core_internet_gateways + \ oci_core_ipsec_config + \ oci_core_ipsec_connections + \ oci_core_ipsec_status + \ oci_core_letter_of_authority + \ oci_core_listing_resource_version + \ oci_core_listing_resource_versions + \ oci_core_local_peering_gateways + \ oci_core_nat_gateway + \ oci_core_nat_gateways + \ oci_core_peer_region_for_remote_peerings + \ oci_core_private_ips + \ oci_core_public_ip + \ oci_core_public_ips + \ oci_core_remote_peering_connections + \ oci_core_route_tables + \ oci_core_security_lists + \ oci_core_service_gateways + \ oci_core_services + \ oci_core_shape + \ oci_core_shapes + \ oci_core_subnet + \ oci_core_subnets + \ oci_core_vcns + \ oci_core_virtual_circuit + \ oci_core_virtual_circuit_bandwidth_shapes + \ oci_core_virtual_circuit_public_prefixes + \ oci_core_virtual_circuits + \ oci_core_vnic + \ oci_core_vnic_attachments + \ oci_core_volume + \ oci_core_volume_attachments + \ oci_core_volume_backup_policies + \ oci_core_volume_backup_policy_assignments + \ oci_core_volume_backups + \ oci_core_volume_group_backups + \ oci_core_volume_groups + \ oci_core_volumes + \ oci_database_autonomous_data_warehouse + \ oci_database_autonomous_data_warehouse_backup + \ oci_database_autonomous_data_warehouse_backups + \ oci_database_autonomous_data_warehouse_wallet + \ oci_database_autonomous_data_warehouses + \ oci_database_autonomous_database + \ oci_database_autonomous_database_backup + \ oci_database_autonomous_database_backups + \ oci_database_autonomous_database_wallet + \ oci_database_autonomous_databases + \ oci_database_backups + \ oci_database_database + \ oci_database_databases + \ oci_database_db_home + \ oci_database_db_home_patch_history_entries + \ oci_database_db_home_patches + \ oci_database_db_homes + \ oci_database_db_node + \ oci_database_db_nodes + \ oci_database_db_system_patch_history_entries + \ oci_database_db_system_patches + \ oci_database_db_system_shapes + \ oci_database_db_systems + \ oci_database_db_versions + \ oci_dns_records + \ oci_dns_steering_policies + \ oci_dns_steering_policy + \ oci_dns_steering_policy_attachment + \ oci_dns_steering_policy_attachments + \ oci_dns_zones + \ oci_email_sender + \ oci_email_senders + \ oci_email_suppression + \ oci_email_suppressions + \ oci_file_storage_export_sets + \ oci_file_storage_exports + \ oci_file_storage_file_systems + \ oci_file_storage_mount_targets + \ oci_file_storage_snapshots + \ oci_health_checks_http_monitor + \ oci_health_checks_http_monitors + \ oci_health_checks_http_probe_results + \ oci_health_checks_ping_monitor + \ oci_health_checks_ping_monitors + \ oci_health_checks_ping_probe_results + \ oci_health_checks_vantage_points + \ oci_identity_api_keys + \ oci_identity_auth_tokens + \ oci_identity_availability_domains + \ oci_identity_compartment + \ oci_identity_compartments + \ oci_identity_customer_secret_keys + \ oci_identity_dynamic_groups + \ oci_identity_fault_domains + \ oci_identity_groups + \ oci_identity_identity_provider_groups + \ oci_identity_identity_providers + \ oci_identity_idp_group_mappings + \ oci_identity_policies + \ oci_identity_region_subscriptions + \ oci_identity_regions + \ oci_identity_smtp_credentials + \ oci_identity_swift_passwords + \ oci_identity_tag_namespaces + \ oci_identity_tags + \ oci_identity_tenancy + \ oci_identity_user_group_memberships + \ oci_identity_users + \ oci_kms_decrypted_data + \ oci_kms_encrypted_data + \ oci_kms_key + \ oci_kms_key_version + \ oci_kms_key_versions + \ oci_kms_keys + \ oci_kms_vault + \ oci_kms_vaults + \ oci_load_balancer_backend_health + \ oci_load_balancer_backend_set_health + \ oci_load_balancer_backend_sets + \ oci_load_balancer_backends + \ oci_load_balancer_backendsets + \ oci_load_balancer_certificates + \ oci_load_balancer_health + \ oci_load_balancer_hostnames + \ oci_load_balancer_load_balancers + \ oci_load_balancer_path_route_sets + \ oci_load_balancer_policies + \ oci_load_balancer_protocols + \ oci_load_balancer_rule_set + \ oci_load_balancer_rule_sets + \ oci_load_balancer_shapes + \ oci_load_balancers + \ oci_objectstorage_bucket + \ oci_objectstorage_bucket_summaries + \ oci_objectstorage_namespace + \ oci_objectstorage_namespace_metadata + \ oci_objectstorage_object + \ oci_objectstorage_object_head + \ oci_objectstorage_object_lifecycle_policy + \ oci_objectstorage_objects + \ oci_objectstorage_preauthrequest + \ oci_objectstorage_preauthrequests + \ oci_streaming_stream + \ oci_streaming_streams \ oneandone_instance_size \ opc_compute_image_list_entry \ opc_compute_ip_address_reservation @@ -471,8 +696,10 @@ syn keyword terraDataTypeBI \ opc_compute_ssh_key \ opc_compute_storage_volume_snapshot \ opc_compute_vnic + \ openstack_blockstorage_availability_zones_v3 \ openstack_blockstorage_snapshot_v2 \ openstack_blockstorage_snapshot_v3 + \ openstack_compute_availability_zones_v2 \ openstack_compute_flavor_v2 \ openstack_compute_keypair_v2 \ openstack_containerinfra_cluster_v1 @@ -488,10 +715,16 @@ syn keyword terraDataTypeBI \ openstack_images_image_v2 \ openstack_networking_floatingip_v2 \ openstack_networking_network_v2 + \ openstack_networking_port_ids_v2 + \ openstack_networking_port_v2 \ openstack_networking_router_v2 \ openstack_networking_secgroup_v2 \ openstack_networking_subnet_v2 \ openstack_networking_subnetpool_v2 + \ openstack_sharedfilesystem_availability_zones_v2 + \ openstack_sharedfilesystem_share_v2 + \ openstack_sharedfilesystem_sharenetwork_v2 + \ openstack_sharedfilesystem_snapshot_v2 \ opentelekomcloud_antiddos_v1 \ opentelekomcloud_cce_cluster_v3 \ opentelekomcloud_cce_node_v3 @@ -507,6 +740,10 @@ syn keyword terraDataTypeBI \ opentelekomcloud_dcs_product_v1 \ opentelekomcloud_deh_host_v1 \ opentelekomcloud_deh_server_v1 + \ opentelekomcloud_identity_group_v3 + \ opentelekomcloud_identity_project_v3 + \ opentelekomcloud_identity_role_v3 + \ opentelekomcloud_identity_user_v3 \ opentelekomcloud_images_image_v2 \ opentelekomcloud_kms_data_key_v1 \ opentelekomcloud_kms_key_v1 @@ -587,6 +824,10 @@ syn keyword terraDataTypeBI \ skytap_template \ telefonicaopencloud_csbs_backup_policy_v1 \ telefonicaopencloud_csbs_backup_v1 + \ telefonicaopencloud_cts_tracker_v1 + \ telefonicaopencloud_dcs_az_v1 + \ telefonicaopencloud_dcs_maintainwindow_v1 + \ telefonicaopencloud_dcs_product_v1 \ telefonicaopencloud_dns_zone_v2 \ telefonicaopencloud_networking_network_v2 \ telefonicaopencloud_networking_secgroup_v2 @@ -597,6 +838,8 @@ syn keyword terraDataTypeBI \ telefonicaopencloud_rts_stack_v1 \ telefonicaopencloud_s3_bucket_object \ telefonicaopencloud_sfs_file_system_v2 + \ telefonicaopencloud_vbs_backup_policy_v2 + \ telefonicaopencloud_vbs_backup_v2 \ telefonicaopencloud_vpc_subnet_ids_v1 \ telefonicaopencloud_vpc_subnet_v1 \ telefonicaopencloud_vpc_v1 @@ -614,6 +857,11 @@ syn keyword terraDataTypeBI \ tencentcloud_subnet \ tencentcloud_vpc \ terraform_remote_state + \ tfe_ssh_key + \ tfe_team + \ tfe_team_access + \ tfe_workspace + \ tfe_workspace_ids \ tls_public_key \ triton_account \ triton_datacenter @@ -626,12 +874,19 @@ syn keyword terraDataTypeBI \ ucloud_images \ ucloud_projects \ ucloud_zones + \ vault_approle_auth_backend_role_id + \ vault_aws_access_credentials + \ vault_generic_secret + \ vault_kubernetes_auth_backend_config + \ vault_kubernetes_auth_backend_role + \ vault_policy_document \ vsphere_compute_cluster \ vsphere_custom_attribute \ vsphere_datacenter \ vsphere_datastore \ vsphere_datastore_cluster \ vsphere_distributed_virtual_switch + \ vsphere_folder \ vsphere_host \ vsphere_network \ vsphere_resource_pool @@ -640,6 +895,18 @@ syn keyword terraDataTypeBI \ vsphere_vapp_container \ vsphere_virtual_machine \ vsphere_vmfs_disks + \ yandex_compute_disk + \ yandex_compute_image + \ yandex_compute_instance + \ yandex_compute_snapshot + \ yandex_iam_policy + \ yandex_iam_role + \ yandex_iam_service_account + \ yandex_iam_user + \ yandex_resourcemanager_cloud + \ yandex_resourcemanager_folder + \ yandex_vpc_network + \ yandex_vpc_subnet """ end data sources """ resource @@ -675,6 +942,8 @@ syn keyword terraResourceTypeBI \ alicloud_db_connection \ alicloud_db_database \ alicloud_db_instance + \ alicloud_db_read_write_splitting_connection + \ alicloud_db_readonly_instance \ alicloud_disk \ alicloud_disk_attachment \ alicloud_dns @@ -683,6 +952,7 @@ syn keyword terraResourceTypeBI \ alicloud_drds_instance \ alicloud_eip \ alicloud_eip_association + \ alicloud_elasticsearch_instance \ alicloud_ess_alarm \ alicloud_ess_attachment \ alicloud_ess_lifecycle_hook @@ -706,6 +976,8 @@ syn keyword terraResourceTypeBI \ alicloud_log_project \ alicloud_log_store \ alicloud_log_store_index + \ alicloud_logtail_attachment + \ alicloud_logtail_config \ alicloud_mns_queue \ alicloud_mns_topic \ alicloud_mns_topic_subscription @@ -814,6 +1086,7 @@ syn keyword terraResourceTypeBI \ aws_autoscaling_notification \ aws_autoscaling_policy \ aws_autoscaling_schedule + \ aws_backup_vault \ aws_batch_compute_environment \ aws_batch_job_definition \ aws_batch_job_queue @@ -861,6 +1134,7 @@ syn keyword terraResourceTypeBI \ aws_config_configuration_recorder \ aws_config_configuration_recorder_status \ aws_config_delivery_channel + \ aws_cur_report_definition \ aws_customer_gateway \ aws_datasync_agent \ aws_datasync_location_efs @@ -893,6 +1167,11 @@ syn keyword terraResourceTypeBI \ aws_dms_replication_instance \ aws_dms_replication_subnet_group \ aws_dms_replication_task + \ aws_docdb_cluster + \ aws_docdb_cluster_instance + \ aws_docdb_cluster_parameter_group + \ aws_docdb_cluster_snapshot + \ aws_docdb_subnet_group \ aws_dx_bgp_peer \ aws_dx_connection \ aws_dx_connection_association @@ -912,6 +1191,8 @@ syn keyword terraResourceTypeBI \ aws_ebs_snapshot_copy \ aws_ebs_volume \ aws_ec2_capacity_reservation + \ aws_ec2_client_vpn_endpoint + \ aws_ec2_client_vpn_network_association \ aws_ec2_fleet \ aws_ec2_transit_gateway \ aws_ec2_transit_gateway_route @@ -956,6 +1237,7 @@ syn keyword terraResourceTypeBI \ aws_gamelift_game_session_queue \ aws_glacier_vault \ aws_glacier_vault_lock + \ aws_globalaccelerator_accelerator \ aws_glue_catalog_database \ aws_glue_catalog_table \ aws_glue_classifier @@ -999,6 +1281,7 @@ syn keyword terraResourceTypeBI \ aws_iot_certificate \ aws_iot_policy \ aws_iot_policy_attachment + \ aws_iot_role_alias \ aws_iot_thing \ aws_iot_thing_principal_attachment \ aws_iot_thing_type @@ -1013,6 +1296,7 @@ syn keyword terraResourceTypeBI \ aws_lambda_alias \ aws_lambda_event_source_mapping \ aws_lambda_function + \ aws_lambda_layer_version \ aws_lambda_permission \ aws_launch_configuration \ aws_launch_template @@ -1037,6 +1321,7 @@ syn keyword terraResourceTypeBI \ aws_macie_member_account_association \ aws_macie_s3_bucket_association \ aws_main_route_table_association + \ aws_media_package_channel \ aws_media_store_container \ aws_media_store_container_policy \ aws_mq_broker @@ -1087,6 +1372,9 @@ syn keyword terraResourceTypeBI \ aws_pinpoint_sms_channel \ aws_placement_group \ aws_proxy_protocol_policy + \ aws_ram_principal_association + \ aws_ram_resource_association + \ aws_ram_resource_share \ aws_rds_cluster \ aws_rds_cluster_endpoint \ aws_rds_cluster_instance @@ -1098,6 +1386,7 @@ syn keyword terraResourceTypeBI \ aws_redshift_security_group \ aws_redshift_snapshot_copy_grant \ aws_redshift_subnet_group + \ aws_resourcegroups_group \ aws_route \ aws_route53_delegation_set \ aws_route53_health_check @@ -1115,6 +1404,8 @@ syn keyword terraResourceTypeBI \ aws_s3_bucket_object \ aws_s3_bucket_policy \ aws_s3_bucket_public_access_block + \ aws_sagemaker_model + \ aws_sagemaker_notebook_instance \ aws_secretsmanager_secret \ aws_secretsmanager_secret_version \ aws_security_group @@ -1219,6 +1510,7 @@ syn keyword terraResourceTypeBI \ aws_wafregional_web_acl \ aws_wafregional_web_acl_association \ aws_wafregional_xss_match_set + \ aws_worklink_fleet \ azure_affinity_group \ azure_data_disk \ azure_dns_server @@ -1235,7 +1527,16 @@ syn keyword terraResourceTypeBI \ azure_storage_queue \ azure_storage_service \ azure_virtual_network + \ azuread_application + \ azuread_group + \ azuread_service_principal + \ azuread_service_principal_password + \ azuread_user \ azurerm_api_management + \ azurerm_api_management_group + \ azurerm_api_management_group_user + \ azurerm_api_management_product + \ azurerm_api_management_user \ azurerm_app_service \ azurerm_app_service_active_slot \ azurerm_app_service_custom_hostname_binding @@ -1243,6 +1544,7 @@ syn keyword terraResourceTypeBI \ azurerm_app_service_slot \ azurerm_application_gateway \ azurerm_application_insights + \ azurerm_application_insights_api_key \ azurerm_application_security_group \ azurerm_automation_account \ azurerm_automation_credential @@ -1257,9 +1559,11 @@ syn keyword terraResourceTypeBI \ azurerm_azuread_service_principal \ azurerm_azuread_service_principal_password \ azurerm_batch_account + \ azurerm_batch_pool \ azurerm_cdn_endpoint \ azurerm_cdn_profile \ azurerm_cognitive_account + \ azurerm_connection_monitor \ azurerm_container_group \ azurerm_container_registry \ azurerm_container_service @@ -1270,6 +1574,7 @@ syn keyword terraResourceTypeBI \ azurerm_data_lake_store_file \ azurerm_data_lake_store_firewall_rule \ azurerm_databricks_workspace + \ azurerm_ddos_protection_plan \ azurerm_dev_test_lab \ azurerm_dev_test_linux_virtual_machine \ azurerm_dev_test_policy @@ -1286,6 +1591,8 @@ syn keyword terraResourceTypeBI \ 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 @@ -1296,6 +1603,7 @@ syn keyword terraResourceTypeBI \ azurerm_express_route_circuit_authorization \ azurerm_express_route_circuit_peering \ azurerm_firewall + \ azurerm_firewall_application_rule_collection \ azurerm_firewall_network_rule_collection \ azurerm_function_app \ azurerm_image @@ -1311,9 +1619,11 @@ syn keyword terraResourceTypeBI \ azurerm_lb_backend_address_pool \ azurerm_lb_nat_pool \ azurerm_lb_nat_rule + \ azurerm_lb_outbound_rule \ azurerm_lb_probe \ azurerm_lb_rule \ azurerm_local_network_gateway + \ azurerm_log_analytics_linked_service \ azurerm_log_analytics_solution \ azurerm_log_analytics_workspace \ azurerm_log_analytics_workspace_linked_service @@ -1328,12 +1638,15 @@ syn keyword terraResourceTypeBI \ azurerm_management_lock \ azurerm_mariadb_database \ azurerm_mariadb_server + \ azurerm_media_services_account \ azurerm_metric_alertrule \ azurerm_monitor_action_group \ azurerm_monitor_activity_log_alert + \ azurerm_monitor_autoscale_setting \ azurerm_monitor_diagnostic_setting \ azurerm_monitor_log_profile \ azurerm_monitor_metric_alert + \ azurerm_monitor_metric_alertrule \ azurerm_mssql_elasticpool \ azurerm_mysql_configuration \ azurerm_mysql_database @@ -1342,6 +1655,7 @@ syn keyword terraResourceTypeBI \ azurerm_mysql_virtual_network_rule \ azurerm_network_interface \ azurerm_network_interface_application_gateway_backend_address_pool_association + \ azurerm_network_interface_application_security_group_association \ azurerm_network_interface_backend_address_pool_association \ azurerm_network_interface_nat_rule_association \ azurerm_network_security_group @@ -1505,6 +1819,13 @@ syn keyword terraResourceTypeBI \ circonus_metric_cluster \ circonus_rule_set \ circonus_worksheet + \ ciscoasa_access_in_rules + \ ciscoasa_access_out_rules + \ ciscoasa_acl + \ ciscoasa_network_object + \ ciscoasa_network_object_group + \ ciscoasa_network_service_group + \ ciscoasa_static_route \ clc_group \ clc_load_balancer \ clc_load_balancer_pool @@ -1523,6 +1844,7 @@ syn keyword terraResourceTypeBI \ cloudflare_page_rule \ cloudflare_rate_limit \ cloudflare_record + \ cloudflare_spectrum_application \ cloudflare_waf_rule \ cloudflare_worker_route \ cloudflare_worker_script @@ -1572,6 +1894,7 @@ syn keyword terraResourceTypeBI \ datadog_downtime \ datadog_integration_aws \ datadog_integration_gcp + \ datadog_integration_pagerduty \ datadog_metric_metadata \ datadog_monitor \ datadog_screenboard @@ -1588,6 +1911,7 @@ syn keyword terraResourceTypeBI \ digitalocean_kubernetes_node_pool \ digitalocean_loadbalancer \ digitalocean_record + \ digitalocean_spaces_bucket \ digitalocean_ssh_key \ digitalocean_tag \ digitalocean_volume @@ -1597,8 +1921,10 @@ syn keyword terraResourceTypeBI \ dns_a_record_set \ dns_aaaa_record_set \ dns_cname_record + \ dns_mx_record_set \ dns_ns_record_set \ dns_ptr_record + \ dns_txt_record_set \ dnsimple_record \ docker_config \ docker_container @@ -1614,6 +1940,8 @@ syn keyword terraResourceTypeBI \ flexibleengine_as_group_v1 \ flexibleengine_as_policy_v1 \ flexibleengine_blockstorage_volume_v2 + \ flexibleengine_cce_cluster_v3 + \ flexibleengine_cce_node_v3 \ flexibleengine_ces_alarmrule \ flexibleengine_compute_bms_server_v2 \ flexibleengine_compute_floatingip_associate_v2 @@ -1640,6 +1968,8 @@ syn keyword terraResourceTypeBI \ flexibleengine_fw_rule_v2 \ flexibleengine_images_image_v2 \ flexibleengine_lb_certificate_v2 + \ flexibleengine_lb_l7policy_v2 + \ flexibleengine_lb_l7rule_v2 \ flexibleengine_lb_listener_v2 \ flexibleengine_lb_loadbalancer_v2 \ flexibleengine_lb_member_v2 @@ -1664,6 +1994,7 @@ syn keyword terraResourceTypeBI \ flexibleengine_networking_vip_v2 \ flexibleengine_rds_instance_v1 \ flexibleengine_rts_software_config_v1 + \ flexibleengine_rts_stack_resource_v1 \ flexibleengine_rts_stack_v1 \ flexibleengine_s3_bucket \ flexibleengine_s3_bucket_object @@ -1701,7 +2032,9 @@ syn keyword terraResourceTypeBI \ gitlab_group_membership \ gitlab_group_variable \ gitlab_label + \ gitlab_pipeline_trigger \ gitlab_project + \ gitlab_project_cluster \ gitlab_project_hook \ gitlab_project_membership \ gitlab_project_variable @@ -1710,12 +2043,17 @@ syn keyword terraResourceTypeBI \ google_access_context_manager_access_policy \ google_access_context_manager_service_perimeter \ google_app_engine_application + \ google_app_engine_firewall_rule \ google_bigquery_dataset \ google_bigquery_table \ google_bigtable_instance \ google_bigtable_table + \ google_billing_account_iam_binding + \ google_billing_account_iam_member + \ google_billing_account_iam_policy \ google_binary_authorization_attestor \ google_binary_authorization_policy + \ google_cloud_scheduler_job \ google_cloudbuild_trigger \ google_cloudfunctions_function \ google_cloudiot_registry @@ -1740,6 +2078,7 @@ syn keyword terraResourceTypeBI \ google_compute_instance_group_manager \ google_compute_instance_template \ google_compute_interconnect_attachment + \ google_compute_managed_ssl_certificate \ google_compute_network \ google_compute_network_peering \ google_compute_project_metadata @@ -1760,6 +2099,9 @@ syn keyword terraResourceTypeBI \ google_compute_ssl_certificate \ google_compute_ssl_policy \ google_compute_subnetwork + \ google_compute_subnetwork_iam_binding + \ google_compute_subnetwork_iam_member + \ google_compute_subnetwork_iam_policy \ google_compute_target_http_proxy \ google_compute_target_https_proxy \ google_compute_target_pool @@ -1779,44 +2121,80 @@ syn keyword terraResourceTypeBI \ google_endpoints_service \ google_filestore_instance \ google_folder + \ google_folder_iam_binding + \ google_folder_iam_member + \ google_folder_iam_policy \ google_folder_organization_policy \ google_kms_crypto_key + \ google_kms_crypto_key_iam_binding + \ google_kms_crypto_key_iam_member \ google_kms_key_ring + \ google_kms_key_ring_iam_binding + \ google_kms_key_ring_iam_member + \ google_kms_key_ring_iam_policy + \ google_logging_billing_account_exclusion \ google_logging_billing_account_sink + \ google_logging_folder_exclusion \ google_logging_folder_sink + \ google_logging_organization_exclusion \ google_logging_organization_sink + \ google_logging_project_exclusion \ google_logging_project_sink \ google_monitoring_alert_policy \ google_monitoring_group \ google_monitoring_notification_channel \ google_monitoring_uptime_check_config + \ google_organization_iam_binding \ google_organization_iam_custom_role + \ google_organization_iam_member + \ google_organization_iam_policy \ google_organization_policy \ google_project + \ google_project_iam_audit_config + \ google_project_iam_binding \ google_project_iam_custom_role + \ google_project_iam_member \ google_project_iam_policy \ google_project_organization_policy \ google_project_service \ google_project_services \ google_project_usage_export_bucket \ google_pubsub_subscription + \ google_pubsub_subscription_iam_binding + \ google_pubsub_subscription_iam_member + \ google_pubsub_subscription_iam_policy \ google_pubsub_topic + \ google_pubsub_topic_iam_binding + \ google_pubsub_topic_iam_member + \ google_pubsub_topic_iam_policy \ google_redis_instance \ google_resource_manager_lien \ google_runtimeconfig_config \ google_runtimeconfig_variable \ google_service_account + \ google_service_account_iam_binding + \ google_service_account_iam_member + \ google_service_account_iam_policy \ google_service_account_key \ google_service_networking_connection \ google_sourcerepo_repository \ google_spanner_database + \ google_spanner_database_iam_binding + \ google_spanner_database_iam_member + \ google_spanner_database_iam_policy \ google_spanner_instance + \ google_spanner_instance_iam_binding + \ google_spanner_instance_iam_member + \ google_spanner_instance_iam_policy \ google_sql_database \ google_sql_database_instance \ google_sql_ssl_cert \ google_sql_user \ google_storage_bucket \ google_storage_bucket_acl + \ google_storage_bucket_iam_binding + \ google_storage_bucket_iam_member + \ google_storage_bucket_iam_policy \ google_storage_bucket_object \ google_storage_default_object_access_control \ google_storage_default_object_acl @@ -1824,6 +2202,11 @@ syn keyword terraResourceTypeBI \ google_storage_object_access_control \ google_storage_object_acl \ google_storage_transfer_job + \ grafana_alert_notification + \ grafana_dashboard + \ grafana_data_source + \ grafana_folder + \ grafana_organization \ hcloud_floating_ip \ hcloud_floating_ip_assignment \ hcloud_rdns @@ -1875,11 +2258,13 @@ syn keyword terraResourceTypeBI \ huaweicloud_csbs_backup_policy_v1 \ huaweicloud_csbs_backup_v1 \ huaweicloud_cts_tracker_v1 + \ huaweicloud_dcs_instance_v1 \ huaweicloud_dms_group_v1 \ huaweicloud_dms_instance_v1 \ huaweicloud_dms_queue_v1 \ huaweicloud_dns_recordset_v2 \ huaweicloud_dns_zone_v2 + \ huaweicloud_dws_cluster \ huaweicloud_elb_backendecs \ huaweicloud_elb_healthcheck \ huaweicloud_elb_listener @@ -1888,15 +2273,27 @@ syn keyword terraResourceTypeBI \ huaweicloud_fw_policy_v2 \ huaweicloud_fw_rule_v2 \ huaweicloud_iam_agency_v3 + \ huaweicloud_identity_group_membership_v3 + \ huaweicloud_identity_group_v3 + \ huaweicloud_identity_project_v3 + \ huaweicloud_identity_role_assignment_v3 + \ huaweicloud_identity_user_v3 \ huaweicloud_images_image_v2 \ huaweicloud_kms_key_v1 + \ huaweicloud_lb_l7policy_v2 + \ huaweicloud_lb_l7rule_v2 \ huaweicloud_lb_listener_v2 \ huaweicloud_lb_loadbalancer_v2 \ huaweicloud_lb_member_v2 \ huaweicloud_lb_monitor_v2 \ huaweicloud_lb_pool_v2 + \ huaweicloud_maas_task_v1 + \ huaweicloud_mls_instance + \ huaweicloud_mrs_cluster_v1 + \ huaweicloud_mrs_job_v1 \ huaweicloud_nat_gateway_v2 \ huaweicloud_nat_snat_rule_v2 + \ huaweicloud_networking_floatingip_associate_v2 \ huaweicloud_networking_floatingip_v2 \ huaweicloud_networking_network_v2 \ huaweicloud_networking_port_v2 @@ -1908,6 +2305,7 @@ syn keyword terraResourceTypeBI \ huaweicloud_networking_subnet_v2 \ huaweicloud_rds_instance_v1 \ huaweicloud_rts_software_config_v1 + \ huaweicloud_rts_stack_resource_v1 \ huaweicloud_rts_stack_v1 \ huaweicloud_s3_bucket \ huaweicloud_s3_bucket_object @@ -1943,17 +2341,22 @@ syn keyword terraResourceTypeBI \ influxdb_continuous_query \ influxdb_database \ influxdb_user + \ kubernetes_cluster_role \ kubernetes_cluster_role_binding \ kubernetes_config_map + \ kubernetes_daemonset \ kubernetes_deployment \ kubernetes_horizontal_pod_autoscaler \ kubernetes_limit_range \ kubernetes_namespace + \ kubernetes_network_policy \ kubernetes_persistent_volume \ kubernetes_persistent_volume_claim \ kubernetes_pod \ kubernetes_replication_controller \ kubernetes_resource_quota + \ kubernetes_role + \ kubernetes_role_binding \ kubernetes_secret \ kubernetes_service \ kubernetes_service_account @@ -2006,6 +2409,15 @@ syn keyword terraResourceTypeBI \ nomad_namespace \ nomad_quota_specification \ nomad_sentinel_policy + \ ns1_apikey + \ ns1_datafeed + \ ns1_datasource + \ ns1_monitoringjob + \ ns1_notifylist + \ ns1_record + \ ns1_team + \ ns1_user + \ ns1_zone \ nsxt_algorithm_type_ns_service \ nsxt_dhcp_relay_profile \ nsxt_dhcp_relay_service @@ -2061,6 +2473,7 @@ syn keyword terraResourceTypeBI \ nsxt_spoofguard_switching_profile \ nsxt_static_route \ nsxt_switch_security_switching_profile + \ nsxt_vlan_logical_switch \ nsxt_vm_tags \ null_resource \ nutanix_category_key @@ -2070,6 +2483,114 @@ syn keyword terraResourceTypeBI \ nutanix_subnet \ nutanix_virtual_machine \ nutanix_volume_group + \ oci_audit_configuration + \ oci_containerengine_cluster + \ oci_containerengine_node_pool + \ oci_core_app_catalog_listing_resource_version + \ oci_core_app_catalog_listing_resource_version_agreement + \ oci_core_app_catalog_listing_resource_versions + \ oci_core_app_catalog_subscription + \ oci_core_boot_volume + \ oci_core_boot_volume_backup + \ oci_core_console_history + \ oci_core_cpe + \ oci_core_cross_connect + \ oci_core_cross_connect_group + \ oci_core_default_dhcp_options + \ oci_core_default_route_table + \ oci_core_default_security_list + \ oci_core_dhcp_options + \ oci_core_drg + \ oci_core_drg_attachment + \ oci_core_image + \ oci_core_instance + \ oci_core_instance_configuration + \ oci_core_instance_console_connection + \ oci_core_instance_pool + \ oci_core_internet_gateway + \ oci_core_ipsec + \ oci_core_listing_resource_version + \ oci_core_listing_resource_version_agreement + \ oci_core_listing_resource_versions + \ oci_core_local_peering_gateway + \ oci_core_nat_gateway + \ oci_core_private_ip + \ oci_core_public_ip + \ oci_core_remote_peering_connection + \ oci_core_route_table + \ oci_core_route_table_attachment + \ oci_core_security_list + \ oci_core_service_gateway + \ oci_core_subnet + \ oci_core_vcn + \ oci_core_virtual_circuit + \ oci_core_vnic_attachment + \ oci_core_volume + \ oci_core_volume_attachment + \ oci_core_volume_backup + \ oci_core_volume_backup_policy_assignment + \ oci_core_volume_group + \ oci_core_volume_group_backup + \ oci_database_autonomous_data_warehouse + \ oci_database_autonomous_data_warehouse_backup + \ oci_database_autonomous_database + \ oci_database_autonomous_database_backup + \ oci_database_backup + \ oci_database_db_home + \ oci_database_db_system + \ oci_dns_record + \ oci_dns_steering_policy + \ oci_dns_steering_policy_attachment + \ oci_dns_zone + \ oci_email_sender + \ oci_email_suppression + \ oci_file_storage_export + \ oci_file_storage_export_set + \ oci_file_storage_file_system + \ oci_file_storage_mount_target + \ oci_file_storage_snapshot + \ oci_health_checks_http_monitor + \ oci_health_checks_http_probe + \ oci_health_checks_ping_monitor + \ oci_health_checks_ping_probe + \ oci_identity_api_key + \ oci_identity_auth_token + \ oci_identity_compartment + \ oci_identity_customer_secret_key + \ oci_identity_dynamic_group + \ oci_identity_group + \ oci_identity_identity_provider + \ oci_identity_idp_group_mapping + \ oci_identity_policy + \ oci_identity_smtp_credential + \ oci_identity_swift_password + \ oci_identity_tag + \ oci_identity_tag_namespace + \ oci_identity_ui_password + \ oci_identity_user + \ oci_identity_user_capabilities_management + \ oci_identity_user_group_membership + \ oci_kms_encrypted_data + \ oci_kms_generated_key + \ oci_kms_key + \ oci_kms_key_version + \ oci_kms_vault + \ oci_load_balancer + \ oci_load_balancer_backend + \ oci_load_balancer_backend_set + \ oci_load_balancer_backendset + \ oci_load_balancer_certificate + \ oci_load_balancer_hostname + \ oci_load_balancer_listener + \ oci_load_balancer_load_balancer + \ oci_load_balancer_path_route_set + \ oci_load_balancer_rule_set + \ oci_objectstorage_bucket + \ oci_objectstorage_namespace_metadata + \ oci_objectstorage_object + \ oci_objectstorage_object_lifecycle_policy + \ oci_objectstorage_preauthrequest + \ oci_streaming_stream \ oneandone_baremetal \ oneandone_block_storage \ oneandone_firewall_policy @@ -2143,6 +2664,7 @@ syn keyword terraResourceTypeBI \ openstack_fw_firewall_v1 \ openstack_fw_policy_v1 \ openstack_fw_rule_v1 + \ openstack_identity_application_credential_v3 \ openstack_identity_project_v3 \ openstack_identity_role_assignment_v3 \ openstack_identity_role_v3 @@ -2159,9 +2681,11 @@ syn keyword terraResourceTypeBI \ openstack_lb_pool_v1 \ openstack_lb_pool_v2 \ openstack_lb_vip_v1 + \ openstack_networking_addressscope_v2 \ openstack_networking_floatingip_associate_v2 \ openstack_networking_floatingip_v2 \ openstack_networking_network_v2 + \ openstack_networking_port_secgroup_associate_v2 \ openstack_networking_port_v2 \ openstack_networking_router_interface_v2 \ openstack_networking_router_route_v2 @@ -2176,6 +2700,8 @@ syn keyword terraResourceTypeBI \ openstack_objectstorage_object_v1 \ openstack_objectstorage_tempurl_v1 \ openstack_sharedfilesystem_securityservice_v2 + \ openstack_sharedfilesystem_share_access_v2 + \ openstack_sharedfilesystem_share_v2 \ openstack_sharedfilesystem_sharenetwork_v2 \ openstack_vpnaas_endpoint_group_v2 \ openstack_vpnaas_ike_policy_v2 @@ -2215,6 +2741,13 @@ syn keyword terraResourceTypeBI \ opentelekomcloud_fw_firewall_group_v2 \ opentelekomcloud_fw_policy_v2 \ opentelekomcloud_fw_rule_v2 + \ opentelekomcloud_identity_agency_v3 + \ opentelekomcloud_identity_group_membership_v3 + \ opentelekomcloud_identity_group_v3 + \ opentelekomcloud_identity_project_v3 + \ opentelekomcloud_identity_role_assignment_v3 + \ opentelekomcloud_identity_role_v3 + \ opentelekomcloud_identity_user_v3 \ opentelekomcloud_images_image_v2 \ opentelekomcloud_kms_key_v1 \ opentelekomcloud_lb_listener_v2 @@ -2242,6 +2775,7 @@ syn keyword terraResourceTypeBI \ opentelekomcloud_rds_instance_v1 \ opentelekomcloud_rts_software_config_v1 \ opentelekomcloud_rts_software_deployment_v1 + \ opentelekomcloud_rts_stack_resource_v1 \ opentelekomcloud_rts_stack_v1 \ opentelekomcloud_s3_bucket \ opentelekomcloud_s3_bucket_object @@ -2284,13 +2818,16 @@ syn keyword terraResourceTypeBI \ ovh_publiccloud_user \ ovh_vrack_cloudproject \ ovh_vrack_publiccloud_attachment + \ packet_bgp_session \ packet_device \ packet_ip_attachment \ packet_organization \ packet_project + \ packet_project_ssh_key \ packet_reserved_ip_block \ packet_spot_market_request \ packet_ssh_key + \ packet_vlan \ packet_volume \ packet_volume_attachment \ pagerduty_addon @@ -2307,6 +2844,21 @@ syn keyword terraResourceTypeBI \ panos_address_group \ panos_address_object \ panos_administrative_tag + \ panos_bfd_profile + \ panos_bgp + \ panos_bgp_aggregate + \ panos_bgp_aggregate_advertise_filter + \ panos_bgp_aggregate_suppress_filter + \ panos_bgp_auth_profile + \ panos_bgp_conditional_adv + \ panos_bgp_conditional_adv_advertise_filter + \ panos_bgp_conditional_adv_non_exist_filter + \ panos_bgp_dampening_profile + \ panos_bgp_export_rule_group + \ panos_bgp_import_rule_group + \ panos_bgp_peer + \ panos_bgp_peer_group + \ panos_bgp_redist_rule \ panos_dag_tags \ panos_edl \ panos_ethernet_interface @@ -2322,9 +2874,25 @@ syn keyword terraResourceTypeBI \ panos_management_profile \ panos_nat_policy \ panos_nat_rule + \ panos_nat_rule_group \ panos_panorama_address_group \ panos_panorama_address_object \ panos_panorama_administrative_tag + \ panos_panorama_bfd_profile + \ panos_panorama_bgp + \ panos_panorama_bgp_aggregate + \ panos_panorama_bgp_aggregate_advertise_filter + \ panos_panorama_bgp_aggregate_suppress_filter + \ panos_panorama_bgp_auth_profile + \ panos_panorama_bgp_conditional_adv + \ panos_panorama_bgp_conditional_adv_advertise_filter + \ panos_panorama_bgp_conditional_adv_non_exist_filter + \ panos_panorama_bgp_dampening_profile + \ panos_panorama_bgp_export_rule_group + \ panos_panorama_bgp_import_rule_group + \ panos_panorama_bgp_peer + \ panos_panorama_bgp_peer_group + \ panos_panorama_bgp_redist_rule \ panos_panorama_device_group \ panos_panorama_device_group_entry \ panos_panorama_edl @@ -2338,6 +2906,8 @@ syn keyword terraResourceTypeBI \ panos_panorama_management_profile \ panos_panorama_nat_policy \ panos_panorama_nat_rule + \ panos_panorama_nat_rule_group + \ panos_panorama_redistribution_profile_ipv4 \ panos_panorama_security_policies \ panos_panorama_security_policy \ panos_panorama_security_policy_group @@ -2356,6 +2926,7 @@ syn keyword terraResourceTypeBI \ panos_panorama_vlan_interface \ panos_panorama_zone \ panos_panorama_zone_entry + \ panos_redistribution_profile_ipv4 \ panos_security_policies \ panos_security_policy \ panos_security_policy_group @@ -2383,6 +2954,7 @@ syn keyword terraResourceTypeBI \ profitbricks_lan \ profitbricks_loadbalancer \ profitbricks_nic + \ profitbricks_resource \ profitbricks_server \ profitbricks_share \ profitbricks_snapshot @@ -2444,13 +3016,16 @@ syn keyword terraResourceTypeBI \ scaleway_user_data \ scaleway_volume \ scaleway_volume_attachment - \ selvpc_resell_floatingip_v2 - \ selvpc_resell_license_v2 - \ selvpc_resell_project_v2 - \ selvpc_resell_role_v2 - \ selvpc_resell_subnet_v2 - \ selvpc_resell_token_v2 - \ selvpc_resell_user_v2 + \ selectel_vpc_crossregion_subnet_v2 + \ selectel_vpc_floatingip_v2 + \ selectel_vpc_keypair_v2 + \ selectel_vpc_license_v2 + \ selectel_vpc_project_v2 + \ selectel_vpc_role_v2 + \ selectel_vpc_subnet_v2 + \ selectel_vpc_token_v2 + \ selectel_vpc_user_v2 + \ selectel_vpc_vrrp_subnet_v2 \ skytap_environment \ skytap_network \ skytap_project @@ -2458,11 +3033,13 @@ syn keyword terraResourceTypeBI \ softlayer_ssh_key \ softlayer_virtual_guest \ statuscake_test + \ telefonicaopencloud_antiddos_v1 \ telefonicaopencloud_as_configuration_v1 \ telefonicaopencloud_as_group_v1 \ telefonicaopencloud_as_policy_v1 \ telefonicaopencloud_blockstorage_volume_v2 \ telefonicaopencloud_ces_alarmrule + \ telefonicaopencloud_compute_bms_server_v2 \ telefonicaopencloud_compute_floatingip_associate_v2 \ telefonicaopencloud_compute_floatingip_v2 \ telefonicaopencloud_compute_instance_v2 @@ -2472,6 +3049,10 @@ syn keyword terraResourceTypeBI \ telefonicaopencloud_compute_volume_attach_v2 \ telefonicaopencloud_csbs_backup_policy_v1 \ telefonicaopencloud_csbs_backup_v1 + \ telefonicaopencloud_cts_tracker_v1 + \ telefonicaopencloud_dcs_instance_v1 + \ telefonicaopencloud_dms_group_v1 + \ telefonicaopencloud_dms_queue_v1 \ telefonicaopencloud_dns_recordset_v2 \ telefonicaopencloud_dns_zone_v2 \ telefonicaopencloud_elb_backendecs @@ -2481,6 +3062,9 @@ syn keyword terraResourceTypeBI \ telefonicaopencloud_fw_firewall_group_v2 \ telefonicaopencloud_fw_policy_v2 \ telefonicaopencloud_fw_rule_v2 + \ telefonicaopencloud_maas_task_v1 + \ telefonicaopencloud_mrs_cluster_v1 + \ telefonicaopencloud_mrs_job_v1 \ telefonicaopencloud_networking_floatingip_v2 \ telefonicaopencloud_networking_network_v2 \ telefonicaopencloud_networking_port_v2 @@ -2492,6 +3076,7 @@ syn keyword terraResourceTypeBI \ telefonicaopencloud_networking_subnet_v2 \ telefonicaopencloud_rds_instance_v1 \ telefonicaopencloud_rts_software_config_v1 + \ telefonicaopencloud_rts_stack_resource_v1 \ telefonicaopencloud_rts_stack_v1 \ telefonicaopencloud_s3_bucket \ telefonicaopencloud_s3_bucket_object @@ -2499,7 +3084,11 @@ syn keyword terraResourceTypeBI \ telefonicaopencloud_sfs_file_system_v2 \ telefonicaopencloud_smn_subscription_v2 \ telefonicaopencloud_smn_topic_v2 + \ telefonicaopencloud_vbs_backup_policy_v2 + \ telefonicaopencloud_vbs_backup_v2 \ telefonicaopencloud_vpc_eip_v1 + \ telefonicaopencloud_vpc_peering_connection_accepter_v2 + \ telefonicaopencloud_vpc_peering_connection_v2 \ telefonicaopencloud_vpc_subnet_v1 \ telefonicaopencloud_vpc_v1 \ template_dir @@ -2522,6 +3111,7 @@ syn keyword terraResourceTypeBI \ tencentcloud_security_group_rule \ tencentcloud_subnet \ tencentcloud_vpc + \ tfe_oauth_client \ tfe_organization \ tfe_organization_token \ tfe_policy_set @@ -2557,6 +3147,7 @@ syn keyword terraResourceTypeBI \ ucloud_lb_rule \ ucloud_security_group \ ucloud_subnet + \ ucloud_udpn_connection \ ucloud_vpc \ ucloud_vpc_peering_connection \ ultradns_dirpool @@ -2565,10 +3156,77 @@ syn keyword terraResourceTypeBI \ ultradns_rdpool \ ultradns_record \ ultradns_tcpool + \ vault_approle_auth_backend_login + \ vault_approle_auth_backend_role + \ vault_approle_auth_backend_role_secret_id + \ vault_audit + \ vault_auth_backend + \ vault_aws_auth_backend_cert + \ vault_aws_auth_backend_client + \ vault_aws_auth_backend_identity_whitelist + \ vault_aws_auth_backend_login + \ vault_aws_auth_backend_role + \ vault_aws_auth_backend_role_tag + \ vault_aws_auth_backend_roletag_blacklist + \ vault_aws_auth_backend_sts_role + \ vault_aws_secret_backend + \ vault_aws_secret_backend_role + \ vault_azure_auth_backend_config + \ vault_azure_auth_backend_role + \ vault_cert_auth_backend_role + \ vault_consul_secret_backend + \ vault_database_secret_backend_connection + \ vault_database_secret_backend_role + \ vault_egp_policy + \ vault_gcp_auth_backend + \ vault_gcp_auth_backend_role + \ vault_gcp_secret_backend + \ vault_generic_secret + \ vault_github_auth_backend + \ vault_github_team + \ vault_github_user + \ vault_identity_entity + \ vault_identity_entity_alias + \ vault_identity_group + \ vault_identity_group_alias + \ vault_jwt_auth_backend + \ vault_jwt_auth_backend_role + \ vault_kubernetes_auth_backend_config + \ vault_kubernetes_auth_backend_role + \ vault_ldap_auth_backend + \ vault_ldap_auth_backend_group + \ vault_ldap_auth_backend_user + \ vault_mount + \ vault_okta_auth_backend + \ vault_okta_auth_backend_group + \ vault_okta_auth_backend_user + \ vault_pki_secret_backend + \ vault_pki_secret_backend_cert + \ vault_pki_secret_backend_config_ca + \ vault_pki_secret_backend_intermediate_cert_request + \ vault_pki_secret_backend_intermediate_set_signed + \ vault_pki_secret_backend_role + \ vault_pki_secret_backend_root_cert + \ vault_pki_secret_backend_root_sign_intermediate + \ vault_pki_secret_backend_sign + \ vault_policy + \ vault_rabbitmq_secret_backend + \ vault_rabbitmq_secret_backend_role + \ vault_rgp_policy + \ vault_ssh_secret_backend_ca + \ vault_ssh_secret_backend_role + \ vault_token_auth_backend_role + \ vcd_catalog + \ vcd_catalog_item + \ vcd_catalog_media \ vcd_dnat \ vcd_edgegateway_vpn \ vcd_firewall_rules - \ vcd_network + \ vcd_inserted_media + \ vcd_network_direct + \ vcd_network_isolated + \ vcd_network_routed + \ vcd_org \ vcd_snat \ vcd_vapp \ vcd_vapp_vm @@ -2604,6 +3262,24 @@ syn keyword terraResourceTypeBI \ vsphere_virtual_machine \ vsphere_virtual_machine_snapshot \ vsphere_vmfs_datastore + \ yandex_compute_disk + \ yandex_compute_image + \ yandex_compute_instance + \ yandex_compute_snapshot + \ yandex_iam_service_account + \ yandex_iam_service_account_iam_binding + \ yandex_iam_service_account_iam_member + \ yandex_iam_service_account_iam_policy + \ yandex_iam_service_account_static_access_key + \ yandex_resourcemanager_cloud + \ yandex_resourcemanager_cloud_iam_binding + \ yandex_resourcemanager_cloud_iam_member + \ yandex_resourcemanager_folder + \ yandex_resourcemanager_folder_iam_binding + \ yandex_resourcemanager_folder_iam_member + \ yandex_resourcemanager_folder_iam_policy + \ yandex_vpc_network + \ yandex_vpc_subnet """ end resources syn keyword terraTodo contained TODO FIXME XXX BUG diff --git a/syntax/vifm.vim b/syntax/vifm.vim index 128fa1ed..00099e1c 100644 --- a/syntax/vifm.vim +++ b/syntax/vifm.vim @@ -2,7 +2,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1 " vifm syntax file " Maintainer: xaizek <xaizek@posteo.net> -" Last Change: December 19, 2018 +" Last Change: January 31, 2019 " Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr. if exists('b:current_syntax') @@ -132,11 +132,11 @@ syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd \ lsoptions lsview mediaprg milleroptions millerview mintimeoutlen number nu \ numberwidth nuw previewprg quickview relativenumber rnu rulerformat ruf \ runexec scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers - \ shell sh shortmess shm showtabline stal sizefmt slowfs smartcase scs - \ statusline stl suggestoptions syncregs syscalls tabscope tabstop timefmt - \ timeoutlen title tm trash trashdir ts tuioptions to undolevels ul vicmd - \ viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu wildstyle wordchars wrap - \ wrapscan ws + \ shell sh shellflagcmd shcf shortmess shm showtabline stal sizefmt slowfs + \ smartcase scs statusline stl suggestoptions syncregs syscalls tabscope + \ tabstop timefmt timeoutlen title tm trash trashdir ts tuioptions to + \ undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu + \ wildstyle wordchars wrap wrapscan ws " Disabled boolean options syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles |