summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-03-04 09:15:44 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2019-03-04 09:15:44 +0100
commited677c34d55a0e025b7008f29419498a3989cde2 (patch)
tree62efef78ed05b2b4e61efb21e40a6b337359eb8e /syntax
parentc161994e9607399a7b365ab274592bfc4f100306 (diff)
downloadvim-polyglot-ed677c34d55a0e025b7008f29419498a3989cde2.tar.gz
vim-polyglot-ed677c34d55a0e025b7008f29419498a3989cde2.zip
Update
Diffstat (limited to 'syntax')
-rw-r--r--syntax/crystal.vim30
-rw-r--r--syntax/dart.vim5
-rw-r--r--syntax/elixir.vim181
-rw-r--r--syntax/gitrebase.vim6
-rw-r--r--syntax/go.vim74
-rw-r--r--syntax/i3config.vim18
-rw-r--r--syntax/javascript.vim6
-rw-r--r--syntax/julia.vim54
-rw-r--r--syntax/kotlin.vim19
-rw-r--r--syntax/markdown.vim26
-rw-r--r--syntax/mustache.vim2
-rw-r--r--syntax/pug.vim13
-rw-r--r--syntax/python.vim28
-rw-r--r--syntax/racket.vim39
-rw-r--r--syntax/rst.vim4
-rw-r--r--syntax/ruby.vim635
-rw-r--r--syntax/rust.vim4
-rw-r--r--syntax/terraform.vim692
-rw-r--r--syntax/vifm.vim12
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