summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'syntax')
-rw-r--r--syntax/Dockerfile.vim2
-rw-r--r--syntax/ansible.vim10
-rw-r--r--syntax/ansible_hosts.vim10
-rw-r--r--syntax/crystal.vim2
-rw-r--r--syntax/dart.vim6
-rw-r--r--syntax/embeddedpuppet.vim33
-rw-r--r--syntax/gomod.vim9
-rw-r--r--syntax/pug.vim3
-rw-r--r--syntax/puppet.vim584
-rw-r--r--syntax/rust.vim11
-rw-r--r--syntax/terraform.vim278
-rw-r--r--syntax/zig.vim4
12 files changed, 767 insertions, 185 deletions
diff --git a/syntax/Dockerfile.vim b/syntax/Dockerfile.vim
index 54d46096..2f68794c 100644
--- a/syntax/Dockerfile.vim
+++ b/syntax/Dockerfile.vim
@@ -37,7 +37,7 @@ syn region dockerfileString1 start=/'/ skip=/\\'|\\\\/ end=/'/
syn region dockerfileEmail start=/</ end=/>/ contains=@ oneline
" Urls
-syn match dockerfileUrl /\(http\|https\|ssh\|hg\|git\)\:\/\/[a-zA-Z0-9\/\-\.]\+/
+syn match dockerfileUrl /\(http\|https\|ssh\|hg\|git\)\:\/\/[a-zA-Z0-9\/\-\._]\+/
" Task tags
syn keyword dockerfileTodo contained TODO FIXME XXX
diff --git a/syntax/ansible.vim b/syntax/ansible.vim
index 539594db..29921b6b 100644
--- a/syntax/ansible.vim
+++ b/syntax/ansible.vim
@@ -62,7 +62,7 @@ fun! s:attribute_highlight(attributes)
elseif a:attributes =~ 'd'
highlight link ansible_attributes Comment
else
- highlight link ansible_attributes Structure
+ highlight default link ansible_attributes Structure
endif
endfun
@@ -77,12 +77,12 @@ if exists("g:ansible_name_highlight")
if g:ansible_name_highlight =~ 'd'
highlight link ansible_name Comment
else
- highlight link ansible_name Underlined
+ highlight default link ansible_name Underlined
endif
endif
execute 'syn keyword ansible_debug_keywords debug containedin='.s:yamlKey.' contained'
-highlight link ansible_debug_keywords Debug
+highlight default link ansible_debug_keywords Debug
if exists("g:ansible_extra_keywords_highlight")
execute 'syn keyword ansible_extra_special_keywords register always_run changed_when failed_when no_log args vars delegate_to ignore_errors containedin='.s:yamlKey.' contained'
@@ -93,14 +93,14 @@ execute 'syn keyword ansible_normal_keywords include include_tasks import_tasks
if exists("g:ansible_normal_keywords_highlight")
execute 'highlight link ansible_normal_keywords '.g:ansible_normal_keywords_highlight
else
- highlight link ansible_normal_keywords Statement
+ highlight default link ansible_normal_keywords Statement
endif
execute 'syn match ansible_with_keywords "\vwith_.+" containedin='.s:yamlKey.' contained'
if exists("g:ansible_with_keywords_highlight")
execute 'highlight link ansible_with_keywords '.g:ansible_with_keywords_highlight
else
- highlight link ansible_with_keywords Statement
+ highlight default link ansible_with_keywords Statement
endif
let b:current_syntax = "ansible"
diff --git a/syntax/ansible_hosts.vim b/syntax/ansible_hosts.vim
index 953cd918..5bdf0530 100644
--- a/syntax/ansible_hosts.vim
+++ b/syntax/ansible_hosts.vim
@@ -16,11 +16,11 @@ syn region hostsHeader start="\v^\s*\[" end="\v\]"
syn keyword hostsHeaderSpecials children vars containedin=hostsHeader contained
syn match hostsComment "\v^[#;].*$"
-highlight link hostsFirstWord Label
-highlight link hostsHeader Define
-highlight link hostsComment Comment
-highlight link hostsHeaderSpecials Identifier
-highlight link hostsAttributes Structure
+highlight default link hostsFirstWord Label
+highlight default link hostsHeader Define
+highlight default link hostsComment Comment
+highlight default link hostsHeaderSpecials Identifier
+highlight default link hostsAttributes Structure
if exists("g:ansible_attribute_highlight")
if g:ansible_attribute_highlight =~ 'n'
diff --git a/syntax/crystal.vim b/syntax/crystal.vim
index cdd9f037..edfd327e 100644
--- a/syntax/crystal.vim
+++ b/syntax/crystal.vim
@@ -121,7 +121,7 @@ syn match crystalPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(crystal
" Normal Regular Expression
syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|ifdef\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial fold
-syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial fold
+syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=/]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@crystalRegexpSpecial fold
" Generalized Regular Expression
syn region crystalRegexp matchgroup=crystalRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@crystalRegexpSpecial fold
diff --git a/syntax/dart.vim b/syntax/dart.vim
index e9a44bbb..797e684b 100644
--- a/syntax/dart.vim
+++ b/syntax/dart.vim
@@ -53,6 +53,11 @@ syntax match dartMetadata "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a
" Numbers
syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>"
+" User Types
+if !exists('dart_highlight_types') || dart_highlight_types
+ syntax match dartTypeName "\<[A-Z]\w*\>\|\<_[A-Z]\w*\>"
+endif
+
" Core libraries
if !exists('dart_corelib_highlight') || dart_corelib_highlight
syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime
@@ -118,6 +123,7 @@ highlight default link dartTypedef Typedef
highlight default link dartTodo Todo
highlight default link dartKeyword Keyword
highlight default link dartType Type
+highlight default link dartTypeName Type
highlight default link dartInterpolation PreProc
highlight default link dartDocLink SpecialComment
highlight default link dartSpecialChar SpecialChar
diff --git a/syntax/embeddedpuppet.vim b/syntax/embeddedpuppet.vim
new file mode 100644
index 00000000..71096274
--- /dev/null
+++ b/syntax/embeddedpuppet.vim
@@ -0,0 +1,33 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
+
+" Vim syntax plugin
+" Language: embedded puppet
+" Maintainer: Gabriel Filion <gabster@lelutin.ca>
+" URL: https://github.com/rodjek/vim-puppet
+" Last Change: 2019-09-01
+
+" quit when a syntax file was already loaded {{{1
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/sh.vim
+unlet! b:current_syntax
+
+syn include @puppetTop syntax/puppet.vim
+
+syn cluster ePuppetRegions contains=ePuppetBlock,ePuppetExpression,ePuppetComment
+
+syn region ePuppetBlock matchgroup=ePuppetDelimiter start="<%%\@!-\=" end="[=-]\=%\@<!%>" contains=@puppetTop containedin=ALLBUT,@ePuppetRegions keepend
+syn region ePuppetExpression matchgroup=ePuppetDelimiter start="<%=\{1,4}" end="[=-]\=%\@<!%>" contains=@puppetTop containedin=ALLBUT,@ePuppetRegions keepend
+syn region ePuppetComment matchgroup=ePuppetDelimiter start="<%-\=#" end="[=-]\=%\@<!%>" contains=puppetTodo,@Spell containedin=ALLBUT,@ePuppetRegions keepend
+
+" Define the default highlighting.
+
+hi def link ePuppetDelimiter PreProc
+hi def link ePuppetComment Comment
+
+let b:current_syntax = "embeddedpuppet"
+
+
+endif
diff --git a/syntax/gomod.vim b/syntax/gomod.vim
index 1d70e539..11cd7686 100644
--- a/syntax/gomod.vim
+++ b/syntax/gomod.vim
@@ -11,17 +11,20 @@ syntax case match
" match keywords
syntax keyword gomodModule module
+syntax keyword gomodGo go contained
syntax keyword gomodRequire require
syntax keyword gomodExclude exclude
syntax keyword gomodReplace replace
-" require, exclude and replace can be also grouped into block
+" require, exclude, replace, and go can be also grouped into block
syntax region gomodRequire start='require (' end=')' transparent contains=gomodRequire,gomodVersion
syntax region gomodExclude start='exclude (' end=')' transparent contains=gomodExclude,gomodVersion
syntax region gomodReplace start='replace (' end=')' transparent contains=gomodReplace,gomodVersion
+syntax match gomodGo '^go .*$' transparent contains=gomodGo,gomodGoVersion
" set highlights
highlight default link gomodModule Keyword
+highlight default link gomodGo Keyword
highlight default link gomodRequire Keyword
highlight default link gomodExclude Keyword
highlight default link gomodReplace Keyword
@@ -38,6 +41,10 @@ highlight default link gomodString String
syntax match gomodReplaceOperator "\v\=\>"
highlight default link gomodReplaceOperator Operator
+" match go versions
+syntax match gomodGoVersion "1\.\d\+" contained
+highlight default link gomodGoVersion Identifier
+
" highlight versions:
" * vX.Y.Z-pre
diff --git a/syntax/pug.vim b/syntax/pug.vim
index c83b35c6..d393dab6 100644
--- a/syntax/pug.vim
+++ b/syntax/pug.vim
@@ -29,7 +29,8 @@ syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascrip
syn cluster htmlJavascript add=javascriptParenthesisBlock
syn region pugJavascript matchgroup=pugJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
-syn region pugJavascript matchgroup=pugJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
+syn region pugJavascript matchgroup=pugJavascriptChar start="\(^\|\s\)\@<=-" 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,pugJavascript nextgroup=@pugComponent
diff --git a/syntax/puppet.vim b/syntax/puppet.vim
index c28a7255..744de1c8 100644
--- a/syntax/puppet.vim
+++ b/syntax/puppet.vim
@@ -1,173 +1,439 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'puppet') == -1
-" puppet syntax file
-" Filename: puppet.vim
-" Language: puppet configuration file
-" Maintainer: Luke Kanies <luke@madstop.com>
-" URL:
-" Last Change:
-" Version:
+" Language: Puppet
+" Maintainer: Voxpupuli
+" URL: https://github.com/voxpupuli/vim-puppet
"
+" Thanks to Doug Kearns who maintains the vim syntax file for Ruby. Many constructs, including interpolation
+" and heredoc was copied from ruby and then modified to comply with Puppet syntax.
-" Copied from the cfengine, ruby, and perl syntax files
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
+" Prelude {{{1
+if exists("b:current_syntax")
finish
endif
-" match class/definition/node declarations
-syn region puppetDefine start="^\s*\(class\|define\|node\)\s" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments,puppetNodeRe,@NoSpell
-syn keyword puppetDefType class define node inherits contained
-syn region puppetDefArguments start="(" end=")" contained contains=puppetType,puppetArgument,puppetString,puppetComment,puppetMultilineComment
-syn match puppetArgument "\w\+" contained
-syn match puppetArgument "\$\w\+" contained
-syn match puppetArgument "'[^']+'" contained
-syn match puppetArgument '"[^"]+"' contained
-syn keyword puppetType Any Array Boolean Callable Catalogentry Collection Data Default Enum Float Hash Integer Numeric Optional Pattern Regexp Scalar Sensitive String Struct Tuple Type Undef Variant
-syn match puppetDefName "\w\+" contained
-syn match puppetNodeRe "/.*/" contained
-
-" match 'foo' in 'class foo { ...'
-" match 'foo::bar' in 'class foo::bar { ...'
-" match 'Foo::Bar' in 'Foo::Bar["..."]
-"FIXME: "Foo-bar" doesn't get highlighted as expected, although "foo-bar" does.
-syn match puppetInstance "[A-Za-z0-9_-]\+\(::[A-Za-z0-9_-]\+\)*\s*{" contains=puppetTypeName,puppetTypeDefault,@NoSpell
-syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*[[{]" contains=puppetTypeName,puppetTypeDefault,@NoSpell
-syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*<\?<|" contains=puppetTypeName,puppetTypeDefault,@NoSpell
-syn match puppetTypeName "[a-z]\w*" contained
-syn match puppetTypeDefault "[A-Z]\w*" contained
-
-syn match puppetParam "\(\w\+\|\*\)\s*\(=\|+\)>" contains=puppetTypeRArrow,puppetParamName
-syn match puppetParamRArrow "\(=\|+\)>" contained
-syn match puppetParamName "\(\w\+\|\*\)" contained contains=@NoSpell
-syn match puppetVariable "$\(\(\(::\)\?\w\+\)\+\|{\(\(::\)\?\w\+\)\+}\)"
-syn match puppetParen "("
-syn match puppetParen ")"
-syn match puppetBrace "{"
-syn match puppetBrace "}"
-syn match puppetBrack "\["
-syn match puppetBrack "\]"
-syn match puppetBrack "<|"
-syn match puppetBrack "|>"
-
-" match 'present' in 'ensure => present'
-" match '2755' in 'mode => 2755'
-" don't match 'bar' in 'foo => bar'
-syn match puppetParam "\w\+\s*[=+]>\s*[a-z0-9]\+" contains=puppetParamString,puppetParamName
-syn match puppetParamString "[=+]>\s*\w\+" contains=puppetParamKeyword,puppetParamSpecial,puppetParamDigits contained
-syn keyword puppetParamKeyword present absent purged latest installed running stopped mounted unmounted role configured file directory link on_failure contained
-syn keyword puppetParamSpecial true false undef contained
-syn match puppetParamDigits "[0-9]\+"
-
-" match 'template' in 'content => template("...")'
-syn match puppetParam "\w\+\s*[=+]>\s*\w\+\s*(" contains=puppetFunction,puppetParamName
-" statements
-syn region puppetFunction start="^\s*\(alert\|crit\|debug\|emerg\|err\|fail\|include\|info\|notice\|realize\|require\|search\|tag\|warning\)\s*(" end=")" contained contains=puppetString
-" rvalues
-syn region puppetFunction start="^\s*\(defined\|file\|fqdn_rand\|generate\|inline_template\|regsubst\|sha1\|shellquote\|split\|sprintf\|tagged\|template\|versioncmp\)\s*(" end=")" contained contains=puppetString
-
-syn match puppetVariable "$[a-zA-Z0-9_:]\+" contains=@NoSpell
-syn match puppetVariable "${[a-zA-Z0-9_:'\[\]]\+}" contains=@NoSpell
-
-" match anything between simple/double quotes.
-" don't match variables if preceded by a backslash.
-syn region puppetString start=+'+ skip=+\\\\\|\\'+ end=+'+
-syn region puppetString start=+@(\z\([^/)]*\)\(/[\\nts$uL]*\)\?)$+ end=+|-\? *\z1 *$+
-syn region puppetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable,puppetNotVariable
-syn region puppetString start=+@("\z\([^/)]*\)"\(/[\\nts$uL]*\)\?)$+ end=+|-\? *\z1 *$+ contains=puppetVariable,puppetNotVariable
-syn match puppetNotVariable "\\$\w\+" contained
-syn match puppetNotVariable "\\${\w\+}" contained
-
-" match keywords and control words except when used as a parameter
-syn match puppetKeyword "\(\<import\>\|\<inherits\>\|\<include\>\|\<require\>\|\<contain\>\)\(\s*=>\)\@!"
-syn match puppetControl "\(\<case\>\|\<default\>\|\<unless\>\|\<if\>\|\<else\>\|\<elsif\>\)\(\s*=>\)\@!"
-syn keyword puppetSpecial true false undef
-
-syn match puppetClass "[A-Za-z0-9_-]\+\(::[A-Za-z0-9_-]\+\)\+" contains=@NoSpell
-
-" Match the Regular Expression type
-" XXX: Puppet does not currently support a few features available in the
-" full Ruby Regexp class, namely, interpolation, lookbehind and named
-" sub-expressions. Matches for these features are included in the
-" commented-out versions of puppetRegexParen and puppetRegexSubName,
-" plus the supporting groups puppetRegexAngBrack and puppetRegexTick.
-syn region puppetRegex start="\(?<!/.*\)/" skip="\\/" end="/" contains=puppetRegexParen,puppetRegexBrace,puppetRegexOrpuppetRegexBrack,puppetRegexComment
-syn match puppetRegexParen "(\(?\([imx]\{0,4}:\|[=!]\)\)\?" contains=puppetRegexSpecChar,puppetRegexSubName contained
-"syn match puppetRegexParen "(\(?\([imxo]\{0,4}:\|['<][[:alnum:]]\+[>']\|<?[=!]\)\)\?" contains=puppetRegexSpecChar,puppetRegexSubName contained
-syn match puppetRegexParen ")" contained
-syn match puppetRegexBrace "{" contained
-syn match puppetRegexBrace "}" contained
-syn match puppetRegexBrack "\[" contained
-syn match puppetRegexBrack "\]" contained
-"syn match puppetRegexAngBrack "<" contained
-"syn match puppetRegexAngBrack ">" contained
-"syn match puppetRegexTick +'+ contained
-syn match puppetRegexOr "|" contained
-"syn match puppetRegexSubName "['<][[:alnum:]]\+[>']" contains=puppetRegexAngBrack,puppetRegexTick contained
-syn match puppetRegexSpecialChar "[?:imx]\|\(<?[=!]\)" contained
-syn region puppetRegexComment start="(?#" skip="\\)" end=")" contained
+" this file uses line continuations
+let s:cpo_sav = &cpo
+set cpo&vim
+
+syn cluster puppetNotTop contains=@puppetExtendedStringSpecial,@puppetRegexpSpecial,@puppetDeclaration,puppetConditional,puppetExceptional,puppetMethodExceptional,puppetTodo
+
+syn match puppetSpaceError display excludenl "\s\+$"
+syn match puppetSpaceError display " \+\t"me=e-1
+
+" one character operators
+syn match puppetOperator "[=><+/*%!.|@:,;?~-]"
+
+" two character operators
+syn match puppetOperator "+=\|-=\|==\|!=\|=\~\|!\~\|>=\|<=\|<-\|<\~\|=>\|+>\|->\|\~>\|<<\||>\|@@"
+
+" three character operators
+syn match puppetOperator "<<|\||>>"
+
+syn region puppetBracketOperator matchgroup=puppetDelimiter start="\[\s*" end="\s*]" contains=ALLBUT,@puppetNotTop
+syn region puppetBraceOperator matchgroup=puppetDelimiter start="{\s*" end="\s*}" contains=ALLBUT,@puppetNotTop
+syn region puppetParenOperator matchgroup=puppetDelimiter start="(\s*" end="\s*)" contains=ALLBUT,@puppetNotTop
+
+" Expression Substitution and Backslash Notation {{{1
+syn match puppetStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
+syn match puppetStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
+syn match puppetQuoteEscape "\\[\\']" contained display
+
+syn region puppetInterpolation matchgroup=puppetInterpolationDelimiter start="${" end="}" contained contains=ALLBUT,@puppetNotTop
+syn match puppetInterpolation "$\%(::\)\?\w\+" display contained contains=puppetInterpolationDelimiter,puppetVariable
+syn match puppetInterpolationDelimiter "$\ze\$\w\+" display contained
+syn match puppetInterpolation "$\$\%(-\w\|\W\)" display contained contains=puppetInterpolationDelimiter,puppetVariable,puppetInvalidVariable
+syn match puppetInterpolationDelimiter "$\ze\$\%(-\w\|\W\)" display contained
+syn region puppetNoInterpolation start="\\${" end="}" contained
+syn match puppetNoInterpolation "\\${" display contained
+syn match puppetNoInterpolation "\\$\w\+" display contained
+
+syn match puppetDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
+
+syn region puppetNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=puppetString end=")" transparent contained
+syn region puppetNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=puppetString end="}" transparent contained
+syn region puppetNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=puppetString end=">" transparent contained
+syn region puppetNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=puppetString end="\]" transparent contained
+
+" Regular Expression Metacharacters {{{1
+" These are mostly Oniguruma ready
+syn region puppetRegexpComment matchgroup=puppetRegexpSpecial start="(?#" skip="\\)" end=")" contained
+syn region puppetRegexpParens matchgroup=puppetRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@puppetRegexpSpecial
+syn region puppetRegexpBrackets matchgroup=puppetRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=puppetStringEscape,puppetRegexpEscape,puppetRegexpCharClass oneline
+syn match puppetRegexpCharClass "\\[DdHhSsWw]" contained display
+syn match puppetRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained
+syn match puppetRegexpEscape "\\[].*?+^$|\\/(){}[]" contained
+syn match puppetRegexpQuantifier "[*?+][?+]\=" contained display
+syn match puppetRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display
+syn match puppetRegexpAnchor "[$^]\|\\[ABbGZz]" contained display
+syn match puppetRegexpDot "\." contained display
+syn match puppetRegexpSpecial "|" contained display
+syn match puppetRegexpSpecial "\\[1-9]\d\=\d\@!" contained display
+syn match puppetRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
+syn match puppetRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
+syn match puppetRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
+syn match puppetRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
+
+syn cluster puppetStringSpecial contains=puppetInterpolation,puppetNoInterpolation,puppetStringEscape
+syn cluster puppetExtendedStringSpecial contains=@puppetStringSpecial,puppetNestedParentheses,puppetNestedCurlyBraces,puppetNestedAngleBrackets,puppetNestedSquareBrackets
+syn cluster puppetRegexpSpecial contains=puppetRegexpSpecial,puppetRegexpEscape,puppetRegexpBrackets,puppetRegexpCharClass,puppetRegexpDot,puppetRegexpQuantifier,puppetRegexpAnchor,puppetRegexpParens,puppetRegexpComment
+
+syn match puppetInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
+syn match puppetInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
+syn match puppetInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
+syn match puppetInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display
+syn match puppetFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
+syn match puppetFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display
+
+syn match puppetVariable "$\%(::\)\=\w\+\%(::\w\+\)*" display
+syn match puppetName "\%(::\)\=[a-z]\w*\%(::[a-z]\w*\)*" display
+syn match puppetType "\%(::\)\=[A-Z]\w*\%(::[A-Z]\w*\)*" display
+syn match puppetWord "\%(\%(::\)\=\%(_[\w-]*\w\+\)\|\%([a-z]\%(\w*-\)\+\w\+\)\)\+" display
+
+" bad name containing combinations of segment starting with lower case and segement starting with upper case (or vice versa)
+syn match puppetNameBad "\%(::\)\=\%(\w\+::\)*\%(\%([a-z]\w*::[A-Z]\w*\)\|\%([A-Z]\w*::[a-z]\w*\)\)\%(::\w\+\)*" display
+syn cluster puppetNameOrType contains=puppetVariable,puppetName,puppetType,puppetWord,puppetNameBad
+
+syn keyword puppetControl case and or in
+syn keyword puppetKeyword class define inherits node undef function type attr private
+syn keyword puppetKeyword application consumes produces site
+syn keyword puppetKeyword present absent purged latest installed running stopped mounted unmounted role configured file directory link on_failure contained
+syn keyword puppetConstant default undef
+syn keyword puppetConditional if else elsif unless
+syn keyword puppetBoolean true false
+
+" Core functions
+syn match puppetFunction "\<alert\>"
+syn match puppetFunction "\<assert_type\>"
+syn match puppetFunction "\<binary_file\>"
+syn match puppetFunction "\<break\>"
+syn match puppetFunction "\<contain\>"
+syn match puppetFunction "\<crit\>"
+syn match puppetFunction "\<create_resources\>"
+syn match puppetFunction "\<debug\>"
+syn match puppetFunction "\<defined\>"
+syn match puppetFunction "\<dig\>"
+syn match puppetFunction "\<each\>"
+syn match puppetFunction "\<emerg\>"
+syn match puppetFunction "\<epp\>"
+syn match puppetFunction "\<err\>"
+syn match puppetFunction "\<fail\>"
+syn match puppetFunction "\<file\>"
+syn match puppetFunction "\<filter\>"
+syn match puppetFunction "\<find_file\>"
+syn match puppetFunction "\<fqdn_rand\>"
+syn match puppetFunction "\<hiera\>"
+syn match puppetFunction "\<hiera_array\>"
+syn match puppetFunction "\<hiera_hash\>"
+syn match puppetFunction "\<hiera_include\>"
+syn match puppetFunction "\<import\>"
+syn match puppetFunction "\<include\>"
+syn match puppetFunction "\<info\>"
+syn match puppetFunction "\<inline_epp\>"
+syn match puppetFunction "\<lest\>"
+syn match puppetFunction "\<lookup\>"
+syn match puppetFunction "\<map\>"
+syn match puppetFunction "\<match\>"
+syn match puppetFunction "\<new\>"
+syn match puppetFunction "\<next\>"
+syn match puppetFunction "\<notice\>"
+syn match puppetFunction "\<realize\>"
+syn match puppetFunction "\<reduce\>"
+syn match puppetFunction "\<regsubst\>"
+syn match puppetFunction "\<require\>"
+syn match puppetFunction "\<return\>"
+syn match puppetFunction "\<reverse_each\>"
+syn match puppetFunction "\<scanf\>"
+syn match puppetFunction "\<sha1\>"
+syn match puppetFunction "\<shellquote\>"
+syn match puppetFunction "\<slice\>"
+syn match puppetFunction "\<split\>"
+syn match puppetFunction "\<sprintf\>"
+syn match puppetFunction "\<step\>"
+syn match puppetFunction "\<strftime\>"
+syn match puppetFunction "\<tag\>"
+syn match puppetFunction "\<tagged\>"
+syn match puppetFunction "\<template\>"
+syn match puppetFunction "\<then\>"
+syn match puppetFunction "\<type\>"
+syn match puppetFunction "\<unwrap\>"
+syn match puppetFunction "\<versioncmp\>"
+syn match puppetFunction "\<warning\>"
+syn match puppetFunction "\<with\>"
+
+" Stdlib functions
+syn match puppetStdLibFunction "\<abs\>"
+syn match puppetStdLibFunction "\<any2array\>"
+syn match puppetStdLibFunction "\<any2bool\>"
+syn match puppetStdLibFunction "\<assert_private\>"
+syn match puppetStdLibFunction "\<base64\>"
+syn match puppetStdLibFunction "\<basename\>"
+syn match puppetStdLibFunction "\<bool2num\>"
+syn match puppetStdLibFunction "\<bool2str\>"
+syn match puppetStdLibFunction "\<camelcase\>"
+syn match puppetStdLibFunction "\<capitalize\>"
+syn match puppetStdLibFunction "\<ceiling\>"
+syn match puppetStdLibFunction "\<chomp\>"
+syn match puppetStdLibFunction "\<chop\>"
+syn match puppetStdLibFunction "\<clamp\>"
+syn match puppetStdLibFunction "\<concat\>"
+syn match puppetStdLibFunction "\<convert_base\>"
+syn match puppetStdLibFunction "\<count\>"
+syn match puppetStdLibFunction "\<deep_merge\>"
+syn match puppetStdLibFunction "\<defined_with_params\>"
+syn match puppetStdLibFunction "\<delete\>"
+syn match puppetStdLibFunction "\<delete_at\>"
+syn match puppetStdLibFunction "\<delete_regex\>"
+syn match puppetStdLibFunction "\<delete_undef_values\>"
+syn match puppetStdLibFunction "\<delete_values\>"
+syn match puppetStdLibFunction "\<deprecation\>"
+syn match puppetStdLibFunction "\<difference\>"
+syn match puppetStdLibFunction "\<dig\>"
+syn match puppetStdLibFunction "\<dig44\>"
+syn match puppetStdLibFunction "\<dirname\>"
+syn match puppetStdLibFunction "\<dos2unix\>"
+syn match puppetStdLibFunction "\<downcase\>"
+syn match puppetStdLibFunction "\<empty\>"
+syn match puppetStdLibFunction "\<enclose_ipv6\>"
+syn match puppetStdLibFunction "\<ensure_packages\>"
+syn match puppetStdLibFunction "\<ensure_resource\>"
+syn match puppetStdLibFunction "\<ensure_resources\>"
+syn match puppetStdLibFunction "\<flatten\>"
+syn match puppetStdLibFunction "\<floor\>"
+syn match puppetStdLibFunction "\<fqdn_rand_string\>"
+syn match puppetStdLibFunction "\<fqdn_rotate\>"
+syn match puppetStdLibFunction "\<get_module_path\>"
+syn match puppetStdLibFunction "\<getparam\>"
+syn match puppetStdLibFunction "\<getvar\>"
+syn match puppetStdLibFunction "\<grep\>"
+syn match puppetStdLibFunction "\<has_interface_with\>"
+syn match puppetStdLibFunction "\<has_ip_address\>"
+syn match puppetStdLibFunction "\<has_ip_network\>"
+syn match puppetStdLibFunction "\<has_key\>"
+syn match puppetStdLibFunction "\<hash\>"
+syn match puppetStdLibFunction "\<intersection\>"
+syn match puppetStdLibFunction "\<is_absolute_path\>"
+syn match puppetStdLibFunction "\<is_array\>"
+syn match puppetStdLibFunction "\<is_bool\>"
+syn match puppetStdLibFunction "\<is_domain_name\>"
+syn match puppetStdLibFunction "\<is_email_address\>"
+syn match puppetStdLibFunction "\<is_float\>"
+syn match puppetStdLibFunction "\<is_function_available\>"
+syn match puppetStdLibFunction "\<is_hash\>"
+syn match puppetStdLibFunction "\<is_integer\>"
+syn match puppetStdLibFunction "\<is_ip_address\>"
+syn match puppetStdLibFunction "\<is_ipv4_address\>"
+syn match puppetStdLibFunction "\<is_ipv6_address\>"
+syn match puppetStdLibFunction "\<is_mac_address\>"
+syn match puppetStdLibFunction "\<is_numeric\>"
+syn match puppetStdLibFunction "\<is_string\>"
+syn match puppetStdLibFunction "\<join\>"
+syn match puppetStdLibFunction "\<join_keys_to_values\>"
+syn match puppetStdLibFunction "\<keys\>"
+syn match puppetStdLibFunction "\<load_module_metadata\>"
+syn match puppetStdLibFunction "\<loadjson\>"
+syn match puppetStdLibFunction "\<loadyaml\>"
+syn match puppetStdLibFunction "\<lstrip\>"
+syn match puppetStdLibFunction "\<max\>"
+syn match puppetStdLibFunction "\<member\>"
+syn match puppetStdLibFunction "\<merge\>"
+syn match puppetStdLibFunction "\<min\>"
+syn match puppetStdLibFunction "\<num2bool\>"
+syn match puppetStdLibFunction "\<parsejson\>"
+syn match puppetStdLibFunction "\<parseyaml\>"
+syn match puppetStdLibFunction "\<pick\>"
+syn match puppetStdLibFunction "\<pick_default\>"
+syn match puppetStdLibFunction "\<prefix\>"
+syn match puppetStdLibFunction "\<private\>"
+syn match puppetStdLibFunction "\<pw_hash\>"
+syn match puppetStdLibFunction "\<range\>"
+syn match puppetStdLibFunction "\<regexpescape\>"
+syn match puppetStdLibFunction "\<reject\>"
+syn match puppetStdLibFunction "\<reverse\>"
+syn match puppetStdLibFunction "\<rstrip\>"
+syn match puppetStdLibFunction "\<seeded_rand\>"
+syn match puppetStdLibFunction "\<shell_escape\>"
+syn match puppetStdLibFunction "\<shell_join\>"
+syn match puppetStdLibFunction "\<shell_split\>"
+syn match puppetStdLibFunction "\<shuffle\>"
+syn match puppetStdLibFunction "\<size\>"
+syn match puppetStdLibFunction "\<sort\>"
+syn match puppetStdLibFunction "\<squeeze\>"
+syn match puppetStdLibFunction "\<str2bool\>"
+syn match puppetStdLibFunction "\<str2saltedsha512\>"
+syn match puppetStdLibFunction "\<strftime\>"
+syn match puppetStdLibFunction "\<strip\>"
+syn match puppetStdLibFunction "\<suffix\>"
+syn match puppetStdLibFunction "\<swapcase\>"
+syn match puppetStdLibFunction "\<time\>"
+syn match puppetStdLibFunction "\<to_bytes\>"
+syn match puppetStdLibFunction "\<try_get_value\>"
+syn match puppetStdLibFunction "\<type\>"
+syn match puppetStdLibFunction "\<type3x\>"
+syn match puppetStdLibFunction "\<union\>"
+syn match puppetStdLibFunction "\<unique\>"
+syn match puppetStdLibFunction "\<unix2dos\>"
+syn match puppetStdLibFunction "\<upcase\>"
+syn match puppetStdLibFunction "\<uriescape\>"
+syn match puppetStdLibFunction "\<validate_absolute_path\>"
+syn match puppetStdLibFunction "\<validate_array\>"
+syn match puppetStdLibFunction "\<validate_augeas\>"
+syn match puppetStdLibFunction "\<validate_bool\>"
+syn match puppetStdLibFunction "\<validate_cmd\>"
+syn match puppetStdLibFunction "\<validate_email_address\>"
+syn match puppetStdLibFunction "\<validate_hash\>"
+syn match puppetStdLibFunction "\<validate_integer\>"
+syn match puppetStdLibFunction "\<validate_ip_address\>"
+syn match puppetStdLibFunction "\<validate_ipv4_address\>"
+syn match puppetStdLibFunction "\<validate_ipv6_address\>"
+syn match puppetStdLibFunction "\<validate_numeric\>"
+syn match puppetStdLibFunction "\<validate_re\>"
+syn match puppetStdLibFunction "\<validate_slength\>"
+syn match puppetStdLibFunction "\<validate_string\>"
+syn match puppetStdLibFunction "\<validate_x509_rsa_key_pair\>"
+syn match puppetStdLibFunction "\<values\>"
+syn match puppetStdLibFunction "\<values_at\>"
+syn match puppetStdLibFunction "\<zip\>"
+
+syn match puppetType "\<Any\>"
+syn match puppetType "\<Array\>"
+syn match puppetType "\<Binary\>"
+syn match puppetType "\<Boolean\>"
+syn match puppetType "\<Callable\>"
+syn match puppetType "\<CatalogEntry\>"
+syn match puppetType "\<Class\>"
+syn match puppetType "\<Collection\>"
+syn match puppetType "\<Data\>"
+syn match puppetType "\<Default\>"
+syn match puppetType "\<Enum\>"
+syn match puppetType "\<Float\>"
+syn match puppetType "\<Hash\>"
+syn match puppetType "\<Integer\>"
+syn match puppetType "\<Iterable\>"
+syn match puppetType "\<Iterator\>"
+syn match puppetType "\<NotUndef\>"
+syn match puppetType "\<Numeric\>"
+syn match puppetType "\<Object\>"
+syn match puppetType "\<Optional\>"
+syn match puppetType "\<Pattern\>"
+syn match puppetType "\<Regexp\>"
+syn match puppetType "\<Resource\>"
+syn match puppetType "\<Runtime\>"
+syn match puppetType "\<Scalar\>"
+syn match puppetType "\<ScalarData\>"
+syn match puppetType "\<SemVer\>"
+syn match puppetType "\<SemVerRange\>"
+syn match puppetType "\<Sensitive\>"
+syn match puppetType "\<String\>"
+syn match puppetType "\<Struct\>"
+syn match puppetType "\<TimeSpan\>"
+syn match puppetType "\<Timestamp\>"
+syn match puppetType "\<Tuple\>"
+syn match puppetType "\<Type\>"
+syn match puppetType "\<TypeAlias\>"
+syn match puppetType "\<TypeReference\>"
+syn match puppetType "\<TypeSet\>"
+syn match puppetType "\<Undef\>"
+syn match puppetType "\<Unit\>"
+syn match puppetType "\<Variant\>"
+
+syn match puppetType "\<augeas\>"
+syn match puppetType "\<computer\>"
+syn match puppetType "\<cron\>"
+syn match puppetType "\<exec\>"
+syn match puppetType "\<file\>"
+syn match puppetType "\<filebucket\>"
+syn match puppetType "\<group\>"
+syn match puppetType "\<host\>"
+syn match puppetType "\<interface\>"
+syn match puppetType "\<k5login\>"
+syn match puppetType "\<macauthorization\>"
+syn match puppetType "\<mailalias\>"
+syn match puppetType "\<maillist\>"
+syn match puppetType "\<mcx\>"
+syn match puppetType "\<mount\>"
+syn match puppetType "\<nagios_command\>"
+syn match puppetType "\<nagios_contact\>"
+syn match puppetType "\<nagios_contactgroup\>"
+syn match puppetType "\<nagios_host\>"
+syn match puppetType "\<nagios_hostdependency\>"
+syn match puppetType "\<nagios_hostescalation\>"
+syn match puppetType "\<nagios_hostextinfo\>"
+syn match puppetType "\<nagios_hostgroup\>"
+syn match puppetType "\<nagios_service\>"
+syn match puppetType "\<nagios_servicedependency\>"
+syn match puppetType "\<nagios_serviceescalation\>"
+syn match puppetType "\<nagios_serviceextinfo\>"
+syn match puppetType "\<nagios_servicegroup\>"
+syn match puppetType "\<nagios_timeperiod\>"
+syn match puppetType "\<notify\>"
+syn match puppetType "\<package\>"
+syn match puppetType "\<resources\>"
+syn match puppetType "\<router\>"
+syn match puppetType "\<schedule\>"
+syn match puppetType "\<scheduled_task\>"
+syn match puppetType "\<selboolean\>"
+syn match puppetType "\<selmodule\>"
+syn match puppetType "\<service\>"
+syn match puppetType "\<ssh_authorized_key\>"
+syn match puppetType "\<sshkey\>"
+syn match puppetType "\<stage\>"
+syn match puppetType "\<tidy\>"
+syn match puppetType "\<user\>"
+syn match puppetType "\<vlan\>"
+syn match puppetType "\<whit\>"
+syn match puppetType "\<yumrepo\>"
+syn match puppetType "\<zfs\>"
+syn match puppetType "\<zone\>"
+syn match puppetType "\<zpool\>"
+
+" Normal String {{{1
+syn region puppetString matchgroup=puppetStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@puppetStringSpecial
+syn region puppetString matchgroup=puppetStringDelimiter start="'" end="'" skip="\\\\\|\\'" contains=puppetQuoteEscape
+
+" Normal Regular Expression {{{1
+syn region puppetRegexp matchgroup=puppetRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/" skip="\\\\\|\\/" contains=@puppetRegexpSpecial
+syn region puppetRegexp matchgroup=puppetRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/" skip="\\\\\|\\/" contains=@puppetRegexpSpecial
+
+" Here Document {{{1
+syn region puppetHeredocStart matchgroup=puppetStringDelimiter start=+@(\s*\%("[^"]\+"\|\w\+\)\%(/[nrtsuL$\\]*\)\=)+ end=+$+ oneline contains=ALLBUT,@puppetNotTop
+
+syn region puppetString start=+@(\s*"\z([^"]\+\)"\%(/[nrtsuL$\\]*\)\=+hs=s+2 matchgroup=puppetStringDelimiter end=+^\s*|\=\s*-\=\s*\zs\z1$+ contains=puppetHeredocStart,@puppetStringSpecial keepend
+syn region puppetString start=+@(\s*\z(\w\+\)\%(/[nrtsuL$\\]*\)\=+hs=s+2 matchgroup=puppetStringDelimiter end=+^\s*|\=\s*-\=\s*\zs\z1$+ contains=puppetHeredocStart keepend
" comments last overriding everything else
-syn match puppetComment "\s*#.*$" contains=puppetTodo,@Spell
-syn region puppetMultilineComment start="/\*" end="\*/" contains=puppetTodo,@Spell
-syn keyword puppetTodo TODO NOTE FIXME XXX BUG HACK contained
-syn keyword puppetTodo TODO: NOTE: FIXME: XXX: BUG: HACK: contained
+syn match puppetComment "\s*#.*$" contains=puppetTodo,@Spell
+syn region puppetComment start="/\*" end="\*/" contains=puppetTodo,@Spell extend
+syn keyword puppetTodo TODO NOTE FIXME XXX BUG HACK contained
" Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_puppet_syn_inits")
- if version < 508
- let did_puppet_syn_inits = 1
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-
- HiLink puppetVariable Identifier
- HiLink puppetType Type
- HiLink puppetKeyword Keyword
- HiLink puppetComment Comment
- HiLink puppetMultilineComment Comment
- HiLink puppetString String
- HiLink puppetRegex Constant
- HiLink puppetRegexParen Delimiter
- HiLink puppetRegexBrace Delimiter
- HiLink puppetRegexBrack Delimiter
- HiLink puppetRegexAngBrack Delimiter
- HiLink puppetRegexTick Delimiter
- HiLink puppetRegexOr Delimiter
- HiLink puppetRegexSubName Identifier
- HiLink puppetRegexSpecChar SpecialChar
- HiLink puppetRegexComment Comment
- HiLink puppetParamKeyword Keyword
- HiLink puppetParamDigits String
- HiLink puppetNotVariable String
- HiLink puppetParamSpecial Boolean
- HiLink puppetSpecial Special
- HiLink puppetTodo Todo
- HiLink puppetBrack Delimiter
- HiLink puppetTypeBrack Delimiter
- HiLink puppetBrace Delimiter
- HiLink puppetTypeBrace Delimiter
- HiLink puppetParen Delimiter
- HiLink puppetDelimiter Delimiter
- HiLink puppetControl Statement
- HiLink puppetDefType Define
- HiLink puppetDefName Type
- HiLink puppetNodeRe Type
- HiLink puppetTypeName Statement
- HiLink puppetTypeDefault Type
- HiLink puppetParamName Identifier
- HiLink puppetArgument Identifier
- HiLink puppetFunction Function
- HiLink puppetClass Include
-
- delcommand HiLink
-endif
+command -nargs=+ HiLink hi def link <args>
+
+HiLink puppetRegexp puppetConstant
+HiLink puppetStdLibFunction puppetFunction
+HiLink puppetNoInterpolation puppetString
+HiLink puppetFunction Function
+HiLink puppetOperator Operator
+HiLink puppetString String
+HiLink puppetWord String
+HiLink puppetFloat Float
+HiLink puppetInteger Number
+HiLink puppetBoolean Boolean
+HiLink puppetName puppetIdentifier
+HiLink puppetNameBad Error
+HiLink puppetVariable puppetIdentifier
+HiLink puppetIdentifier Identifier
+HiLink puppetType Type
+HiLink puppetConditional Conditional
+HiLink puppetConstant Constant
+HiLink puppetControl Statement
+HiLink puppetKeyword Keyword
+HiLink puppetStringDelimiter Delimiter
+HiLink puppetDelimiter Delimiter
+HiLink puppetTodo Todo
+HiLink puppetComment Comment
+
+delcommand HiLink
let b:current_syntax = "puppet"
diff --git a/syntax/rust.vim b/syntax/rust.vim
index 18e804c1..e9f41d19 100644
--- a/syntax/rust.vim
+++ b/syntax/rust.vim
@@ -17,7 +17,13 @@ endif
" Syntax definitions {{{1
" Basic keywords {{{2
syn keyword rustConditional match if else
-syn keyword rustRepeat for loop while
+syn keyword rustRepeat loop while
+" `:syn match` must be used to prioritize highlighting `for` keyword.
+syn match rustRepeat /\<for\>/
+" Highlight `for` keyword in `impl ... for ... {}` statement. This line must
+" be put after previous `syn match` line to overwrite it.
+syn match rustKeyword /\%(\<impl\>.\+\)\@<=\<for\>/
+syn keyword rustRepeat in
syn keyword rustTypedef type nextgroup=rustIdentifier skipwhite skipempty
syn keyword rustStructure struct enum nextgroup=rustIdentifier skipwhite skipempty
syn keyword rustUnion union nextgroup=rustIdentifier skipwhite skipempty contained
@@ -35,7 +41,7 @@ syn keyword rustKeyword continue
syn keyword rustKeyword crate
syn keyword rustKeyword extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite skipempty
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite skipempty
-syn keyword rustKeyword in impl let
+syn keyword rustKeyword impl let
syn keyword rustKeyword macro
syn keyword rustKeyword pub nextgroup=rustPubScope skipwhite skipempty
syn keyword rustKeyword return
@@ -202,6 +208,7 @@ syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:"
+syn match rustLabel display "\%(\<\%(break\|continue\)\s*\)\@<=\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
" The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII).
syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
diff --git a/syntax/terraform.vim b/syntax/terraform.vim
index 204743d9..9efcfee0 100644
--- a/syntax/terraform.vim
+++ b/syntax/terraform.vim
@@ -109,6 +109,7 @@ syn keyword terraDataTypeBI
\ alicloud_forward_entries
\ alicloud_gpdb_instances
\ alicloud_images
+ \ alicloud_instance_type_families
\ alicloud_instance_types
\ alicloud_instances
\ alicloud_key_pairs
@@ -155,6 +156,7 @@ syn keyword terraDataTypeBI
\ alicloud_slb_backend_servers
\ alicloud_slb_ca_certificates
\ alicloud_slb_listeners
+ \ alicloud_slb_master_slave_server_groups
\ alicloud_slb_rules
\ alicloud_slb_server_certificates
\ alicloud_slb_server_groups
@@ -244,6 +246,9 @@ syn keyword terraDataTypeBI
\ avi_wafpolicypsmgroup
\ avi_wafprofile
\ avi_webhook
+ \ aviatrix_account
+ \ aviatrix_caller_identity
+ \ aviatrix_gateway
\ aws_acm_certificate
\ aws_acmpca_certificate_authority
\ aws_alb
@@ -307,6 +312,7 @@ syn keyword terraDataTypeBI
\ aws_elastic_beanstalk_solution_stack
\ aws_elasticache_cluster
\ aws_elasticache_replication_group
+ \ aws_elasticsearch_domain
\ aws_elb
\ aws_elb_hosted_zone_id
\ aws_elb_service_account
@@ -357,6 +363,8 @@ syn keyword terraDataTypeBI
\ aws_region
\ aws_route
\ aws_route53_delegation_set
+ \ aws_route53_resolver_rule
+ \ aws_route53_resolver_rules
\ aws_route53_zone
\ aws_route_table
\ aws_route_tables
@@ -441,6 +449,7 @@ syn keyword terraDataTypeBI
\ azurerm_monitor_diagnostic_categories
\ azurerm_monitor_log_profile
\ azurerm_mssql_elasticpool
+ \ azurerm_network_ddos_protection_plan
\ azurerm_network_interface
\ azurerm_network_security_group
\ azurerm_network_watcher
@@ -448,6 +457,7 @@ syn keyword terraDataTypeBI
\ azurerm_notification_hub_namespace
\ azurerm_platform_image
\ azurerm_policy_definition
+ \ azurerm_proximity_placement_group
\ azurerm_public_ip
\ azurerm_public_ips
\ azurerm_recovery_services_protection_policy_vm
@@ -458,12 +468,15 @@ syn keyword terraDataTypeBI
\ azurerm_route_table
\ azurerm_scheduler_job_collection
\ azurerm_servicebus_namespace
+ \ azurerm_servicebus_namespace_authorization_rule
\ azurerm_shared_image
\ azurerm_shared_image_gallery
\ azurerm_shared_image_version
\ azurerm_snapshot
+ \ azurerm_sql_database
\ azurerm_sql_server
\ azurerm_storage_account
+ \ azurerm_storage_account_blob_container_sas
\ azurerm_storage_account_sas
\ azurerm_stream_analytics_job
\ azurerm_subnet
@@ -532,6 +545,7 @@ syn keyword terraDataTypeBI
\ dns_txt_record_set
\ docker_network
\ docker_registry_image
+ \ exoscale_compute_template
\ external
\ fastly_ip_ranges
\ filter
@@ -595,6 +609,7 @@ syn keyword terraDataTypeBI
\ google_compute_instance_group
\ google_compute_lb_ip_ranges
\ google_compute_network
+ \ google_compute_network_endpoint_group
\ google_compute_node_types
\ google_compute_region_instance_group
\ google_compute_regions
@@ -616,6 +631,7 @@ syn keyword terraDataTypeBI
\ google_kms_crypto_key_version
\ google_kms_key_ring
\ google_kms_secret
+ \ google_kms_secret_ciphertext
\ google_netblock_ip_ranges
\ google_organization
\ google_project
@@ -633,6 +649,7 @@ syn keyword terraDataTypeBI
\ grafana_data_source
\ gridscale_ipv4
\ gridscale_ipv6
+ \ gridscale_loadbalancer
\ gridscale_network
\ gridscale_sshkey
\ gridscale_storage
@@ -718,6 +735,20 @@ syn keyword terraDataTypeBI
\ logentries_logset
\ logicmonitor_collectors
\ logicmonitor_device_group
+ \ mongodbatlas_cloud_provider_snapshot
+ \ mongodbatlas_cloud_provider_snapshot_restore_job
+ \ mongodbatlas_cloud_provider_snapshot_restore_jobs
+ \ mongodbatlas_cloud_provider_snapshots
+ \ mongodbatlas_cluster
+ \ mongodbatlas_clusters
+ \ mongodbatlas_database_user
+ \ mongodbatlas_database_users
+ \ mongodbatlas_network_container
+ \ mongodbatlas_network_containers
+ \ mongodbatlas_network_peering
+ \ mongodbatlas_network_peerings
+ \ mongodbatlas_project
+ \ mongodbatlas_projects
\ ncloud_access_control_group
\ ncloud_access_control_groups
\ ncloud_access_control_rule
@@ -793,6 +824,9 @@ syn keyword terraDataTypeBI
\ oci_core_boot_volume_backup
\ oci_core_boot_volume_backups
\ oci_core_boot_volumes
+ \ oci_core_cluster_network
+ \ oci_core_cluster_network_instances
+ \ oci_core_cluster_networks
\ oci_core_console_histories
\ oci_core_console_history_data
\ oci_core_cpes
@@ -803,6 +837,11 @@ syn keyword terraDataTypeBI
\ oci_core_cross_connect_port_speed_shapes
\ oci_core_cross_connect_status
\ oci_core_cross_connects
+ \ oci_core_dedicated_vm_host
+ \ oci_core_dedicated_vm_host_instance_shapes
+ \ oci_core_dedicated_vm_host_shapes
+ \ oci_core_dedicated_vm_hosts
+ \ oci_core_dedicated_vm_hosts_instances
\ oci_core_dhcp_options
\ oci_core_drg_attachments
\ oci_core_drgs
@@ -969,8 +1008,12 @@ syn keyword terraDataTypeBI
\ oci_kms_keys
\ oci_kms_vault
\ oci_kms_vaults
+ \ oci_limits_limit_definitions
+ \ oci_limits_limit_values
\ oci_limits_quota
\ oci_limits_quotas
+ \ oci_limits_resource_availability
+ \ oci_limits_services
\ oci_load_balancer_backend_health
\ oci_load_balancer_backend_set_health
\ oci_load_balancer_backend_sets
@@ -1009,9 +1052,14 @@ syn keyword terraDataTypeBI
\ oci_ons_subscription
\ oci_ons_subscriptions
\ oci_streaming_stream
+ \ oci_streaming_stream_archiver
\ oci_streaming_streams
+ \ oci_waas_address_list
+ \ oci_waas_address_lists
\ oci_waas_certificate
\ oci_waas_certificates
+ \ oci_waas_custom_protection_rule
+ \ oci_waas_custom_protection_rules
\ oci_waas_edge_subnets
\ oci_waas_waas_policies
\ oci_waas_waas_policy
@@ -1039,8 +1087,11 @@ syn keyword terraDataTypeBI
\ openstack_identity_group_v3
\ openstack_identity_project_v3
\ openstack_identity_role_v3
+ \ openstack_identity_service_v3
\ openstack_identity_user_v3
\ openstack_images_image_v2
+ \ openstack_keymanager_container_v1
+ \ openstack_keymanager_secret_v1
\ openstack_networking_addressscope_v2
\ openstack_networking_floatingip_v2
\ openstack_networking_network_v2
@@ -1101,7 +1152,6 @@ syn keyword terraDataTypeBI
\ opentelekomcloud_vpc_subnet_ids_v1
\ opentelekomcloud_vpc_subnet_v1
\ opentelekomcloud_vpc_v1
- \ opsgenie_user
\ oraclepaas_database_service_instance
\ ovh_cloud_region
\ ovh_cloud_regions
@@ -1130,7 +1180,9 @@ syn keyword terraDataTypeBI
\ profitbricks_location
\ profitbricks_resource
\ profitbricks_snapshot
+ \ rancher2_app
\ rancher2_catalog
+ \ rancher2_certificate
\ rancher2_cloud_credential
\ rancher2_cluster
\ rancher2_cluster_driver
@@ -1138,13 +1190,17 @@ syn keyword terraDataTypeBI
\ rancher2_cluster_role_template_binding
\ rancher2_etcd_backup
\ rancher2_global_role_binding
+ \ rancher2_multi_cluster_app
\ rancher2_namespace
\ rancher2_node_driver
\ rancher2_node_pool
+ \ rancher2_node_template
\ rancher2_project
\ rancher2_project_logging
\ rancher2_project_role_template_binding
\ rancher2_registry
+ \ rancher2_role_template
+ \ rancher2_secret
\ rancher2_setting
\ rancher2_user
\ rancher_certificate
@@ -1210,6 +1266,11 @@ syn keyword terraDataTypeBI
\ tencentcloud_cbs_storages
\ tencentcloud_ccn_bandwidth_limits
\ tencentcloud_ccn_instances
+ \ tencentcloud_clb_attachments
+ \ tencentcloud_clb_instances
+ \ tencentcloud_clb_listener_rules
+ \ tencentcloud_clb_listeners
+ \ tencentcloud_clb_redirections
\ tencentcloud_container_cluster_instances
\ tencentcloud_container_clusters
\ tencentcloud_cos_bucket_object
@@ -1218,21 +1279,34 @@ syn keyword terraDataTypeBI
\ tencentcloud_dc_gateway_instances
\ tencentcloud_dc_instances
\ tencentcloud_dcx_instances
+ \ tencentcloud_dnats
\ tencentcloud_eip
+ \ tencentcloud_gaap_certificates
+ \ tencentcloud_gaap_http_domains
+ \ tencentcloud_gaap_http_rules
+ \ tencentcloud_gaap_layer4_listeners
+ \ tencentcloud_gaap_layer7_listeners
+ \ tencentcloud_gaap_proxies
+ \ tencentcloud_gaap_realservers
+ \ tencentcloud_gaap_security_policies
+ \ tencentcloud_gaap_security_rules
\ tencentcloud_image
\ tencentcloud_instance_types
+ \ tencentcloud_kubernetes_clusters
\ tencentcloud_mongodb_instances
\ tencentcloud_mongodb_zone_config
\ tencentcloud_mysql_backup_list
\ tencentcloud_mysql_instance
\ tencentcloud_mysql_parameter_list
\ tencentcloud_mysql_zone_config
+ \ tencentcloud_nat_gateways
\ tencentcloud_nats
\ tencentcloud_redis_instances
\ tencentcloud_redis_zone_config
\ tencentcloud_route_table
\ tencentcloud_security_group
\ tencentcloud_security_groups
+ \ tencentcloud_ssl_certificates
\ tencentcloud_subnet
\ tencentcloud_vpc
\ tencentcloud_vpc_instances
@@ -1291,6 +1365,8 @@ syn keyword terraDataTypeBI
\ yandex_iam_role
\ yandex_iam_service_account
\ yandex_iam_user
+ \ yandex_lb_network_load_balancer
+ \ yandex_lb_target_group
\ yandex_resourcemanager_cloud
\ yandex_resourcemanager_folder
\ yandex_vpc_network
@@ -1408,6 +1484,7 @@ syn keyword terraResourceTypeBI
\ alicloud_ess_alarm
\ alicloud_ess_attachment
\ alicloud_ess_lifecycle_hook
+ \ alicloud_ess_notification
\ alicloud_ess_scaling_configuration
\ alicloud_ess_scaling_group
\ alicloud_ess_scaling_rule
@@ -1488,6 +1565,7 @@ syn keyword terraResourceTypeBI
\ alicloud_slb_backend_server
\ alicloud_slb_ca_certificate
\ alicloud_slb_listener
+ \ alicloud_slb_master_slave_server_group
\ alicloud_slb_rule
\ alicloud_slb_server_certificate
\ alicloud_slb_server_group
@@ -1578,6 +1656,32 @@ syn keyword terraResourceTypeBI
\ avi_wafpolicypsmgroup
\ avi_wafprofile
\ avi_webhook
+ \ aviatrix_account
+ \ aviatrix_account_user
+ \ aviatrix_arm_peer
+ \ aviatrix_aws_peer
+ \ aviatrix_aws_tgw
+ \ aviatrix_aws_tgw_vpc_attachment
+ \ aviatrix_aws_tgw_vpn_conn
+ \ aviatrix_controller_config
+ \ aviatrix_firewall
+ \ aviatrix_firewall_tag
+ \ aviatrix_fqdn
+ \ aviatrix_gateway
+ \ aviatrix_saml_endpoint
+ \ aviatrix_site2cloud
+ \ aviatrix_spoke_gateway
+ \ aviatrix_spoke_vpc
+ \ aviatrix_trans_peer
+ \ aviatrix_transit_gateway
+ \ aviatrix_transit_gateway_peering
+ \ aviatrix_transit_vpc
+ \ aviatrix_tunnel
+ \ aviatrix_vgw_conn
+ \ aviatrix_vpc
+ \ aviatrix_vpn_profile
+ \ aviatrix_vpn_user
+ \ aviatrix_vpn_user_accelerator
\ aws_acm_certificate
\ aws_acm_certificate_validation
\ aws_acmpca_certificate_authority
@@ -1690,6 +1794,8 @@ syn keyword terraResourceTypeBI
\ aws_config_configuration_recorder
\ aws_config_configuration_recorder_status
\ aws_config_delivery_channel
+ \ aws_config_organization_custom_rule
+ \ aws_config_organization_managed_rule
\ aws_cur_report_definition
\ aws_customer_gateway
\ aws_datapipeline_pipeline
@@ -1744,6 +1850,7 @@ syn keyword terraResourceTypeBI
\ aws_dx_lag
\ aws_dx_private_virtual_interface
\ aws_dx_public_virtual_interface
+ \ aws_dx_transit_virtual_interface
\ aws_dynamodb_global_table
\ aws_dynamodb_table
\ aws_dynamodb_table_item
@@ -1795,6 +1902,8 @@ syn keyword terraResourceTypeBI
\ aws_emr_security_configuration
\ aws_flow_log
\ aws_fms_admin_account
+ \ aws_fsx_lustre_file_system
+ \ aws_fsx_windows_file_system
\ aws_gamelift_alias
\ aws_gamelift_build
\ aws_gamelift_fleet
@@ -1948,6 +2057,7 @@ syn keyword terraResourceTypeBI
\ aws_ram_principal_association
\ aws_ram_resource_association
\ aws_ram_resource_share
+ \ aws_ram_resource_share_accepter
\ aws_rds_cluster
\ aws_rds_cluster_endpoint
\ aws_rds_cluster_instance
@@ -1958,6 +2068,8 @@ syn keyword terraResourceTypeBI
\ aws_redshift_parameter_group
\ aws_redshift_security_group
\ aws_redshift_snapshot_copy_grant
+ \ aws_redshift_snapshot_schedule
+ \ aws_redshift_snapshot_schedule_association
\ aws_redshift_subnet_group
\ aws_resourcegroups_group
\ aws_route
@@ -2143,9 +2255,11 @@ syn keyword terraResourceTypeBI
\ azurerm_api_management_user
\ azurerm_app_service
\ azurerm_app_service_active_slot
+ \ azurerm_app_service_certificate
\ azurerm_app_service_custom_hostname_binding
\ azurerm_app_service_plan
\ azurerm_app_service_slot
+ \ azurerm_app_service_source_control_token
\ azurerm_application_gateway
\ azurerm_application_insights
\ azurerm_application_insights_api_key
@@ -2171,17 +2285,21 @@ syn keyword terraResourceTypeBI
\ azurerm_batch_application
\ azurerm_batch_certificate
\ azurerm_batch_pool
+ \ azurerm_bot_channels_registration
+ \ azurerm_bot_connection
\ azurerm_cdn_endpoint
\ azurerm_cdn_profile
\ azurerm_cognitive_account
\ azurerm_connection_monitor
\ azurerm_container_group
\ azurerm_container_registry
+ \ azurerm_container_registry_webhook
\ azurerm_container_service
\ azurerm_cosmosdb_account
\ azurerm_cosmosdb_cassandra_keyspace
\ azurerm_cosmosdb_mongo_collection
\ azurerm_cosmosdb_mongo_database
+ \ azurerm_cosmosdb_sql_container
\ azurerm_cosmosdb_sql_database
\ azurerm_cosmosdb_table
\ azurerm_data_factory
@@ -2232,6 +2350,7 @@ syn keyword terraResourceTypeBI
\ azurerm_firewall_application_rule_collection
\ azurerm_firewall_nat_rule_collection
\ azurerm_firewall_network_rule_collection
+ \ azurerm_frontdoor
\ azurerm_function_app
\ azurerm_hdinsight_hadoop_cluster
\ azurerm_hdinsight_hbase_cluster
@@ -2253,6 +2372,8 @@ syn keyword terraResourceTypeBI
\ azurerm_key_vault_key
\ azurerm_key_vault_secret
\ azurerm_kubernetes_cluster
+ \ azurerm_kusto_cluster
+ \ azurerm_kusto_database
\ azurerm_lb
\ azurerm_lb_backend_address_pool
\ azurerm_lb_nat_pool
@@ -2275,9 +2396,12 @@ syn keyword terraResourceTypeBI
\ azurerm_management_group
\ azurerm_management_lock
\ azurerm_maps_account
+ \ azurerm_mariadb_configuration
\ azurerm_mariadb_database
\ azurerm_mariadb_firewall_rule
\ azurerm_mariadb_server
+ \ azurerm_mariadb_virtual_network_rule
+ \ azurerm_marketplace_agreement
\ azurerm_media_services_account
\ azurerm_metric_alertrule
\ azurerm_monitor_action_group
@@ -2318,11 +2442,20 @@ syn keyword terraResourceTypeBI
\ azurerm_postgresql_server
\ azurerm_postgresql_virtual_network_rule
\ azurerm_private_dns_a_record
+ \ azurerm_private_dns_cname_record
\ azurerm_private_dns_zone
+ \ azurerm_private_dns_zone_virtual_network_link
+ \ azurerm_proximity_placement_group
\ azurerm_public_ip
\ azurerm_public_ip_prefix
+ \ azurerm_recovery_network_mapping
+ \ azurerm_recovery_replicated_vm
+ \ azurerm_recovery_services_fabric
\ azurerm_recovery_services_protected_vm
+ \ azurerm_recovery_services_protection_container
+ \ azurerm_recovery_services_protection_container_mapping
\ azurerm_recovery_services_protection_policy_vm
+ \ azurerm_recovery_services_replication_policy
\ azurerm_recovery_services_vault
\ azurerm_redis_cache
\ azurerm_redis_firewall_rule
@@ -2355,6 +2488,7 @@ syn keyword terraResourceTypeBI
\ azurerm_sql_active_directory_administrator
\ azurerm_sql_database
\ azurerm_sql_elasticpool
+ \ azurerm_sql_failover_group
\ azurerm_sql_firewall_rule
\ azurerm_sql_server
\ azurerm_sql_virtual_network_rule
@@ -2372,6 +2506,7 @@ syn keyword terraResourceTypeBI
\ azurerm_stream_analytics_output_eventhub
\ azurerm_stream_analytics_output_mssql
\ azurerm_stream_analytics_output_servicebus_queue
+ \ azurerm_stream_analytics_output_servicebus_topic
\ azurerm_stream_analytics_stream_input_blob
\ azurerm_stream_analytics_stream_input_eventhub
\ azurerm_stream_analytics_stream_input_iothub
@@ -2390,6 +2525,8 @@ syn keyword terraResourceTypeBI
\ azurerm_virtual_network_gateway
\ azurerm_virtual_network_gateway_connection
\ azurerm_virtual_network_peering
+ \ azurerm_virtual_wan
+ \ azurerm_web_application_firewall_policy
\ azurestack_availability_set
\ azurestack_dns_a_record
\ azurestack_dns_zone
@@ -2419,6 +2556,7 @@ syn keyword terraResourceTypeBI
\ azurestack_virtual_network
\ azurestack_virtual_network_gateway
\ azurestack_virtual_network_gateway_connection
+ \ bigip_as3
\ bigip_cm_device
\ bigip_cm_devicegroup
\ bigip_ltm_datagroup
@@ -2432,12 +2570,14 @@ syn keyword terraResourceTypeBI
\ bigip_ltm_policy
\ bigip_ltm_pool
\ bigip_ltm_pool_attachment
+ \ bigip_ltm_profile_client_ssl
\ bigip_ltm_profile_fasthttp
\ bigip_ltm_profile_fastl4
\ bigip_ltm_profile_http
\ bigip_ltm_profile_http2
\ bigip_ltm_profile_httpcompress
\ bigip_ltm_profile_oneconnect
+ \ bigip_ltm_profile_server_ssl
\ bigip_ltm_profile_tcp
\ bigip_ltm_snat
\ bigip_ltm_snatpool
@@ -2498,6 +2638,7 @@ syn keyword terraResourceTypeBI
\ cloudflare_account_member
\ cloudflare_argo
\ cloudflare_custom_pages
+ \ cloudflare_custom_ssl
\ cloudflare_filter
\ cloudflare_firewall_rule
\ cloudflare_load_balancer
@@ -2564,6 +2705,7 @@ syn keyword terraResourceTypeBI
\ consul_prepared_query
\ consul_service
\ datadog_dashboard
+ \ datadog_dashboard_list
\ datadog_downtime
\ datadog_integration_aws
\ datadog_integration_gcp
@@ -2572,6 +2714,7 @@ syn keyword terraResourceTypeBI
\ datadog_metric_metadata
\ datadog_monitor
\ datadog_screenboard
+ \ datadog_service_level_objective
\ datadog_synthetics_test
\ datadog_timeboard
\ datadog_user
@@ -2613,6 +2756,21 @@ syn keyword terraResourceTypeBI
\ docker_service
\ docker_volume
\ dyn_record
+ \ exoscale_affinity
+ \ exoscale_compute
+ \ exoscale_domain
+ \ exoscale_domain_record
+ \ exoscale_ipaddress
+ \ exoscale_network
+ \ exoscale_nic
+ \ exoscale_secondary_ipaddress
+ \ exoscale_security_group
+ \ exoscale_security_group_rule
+ \ exoscale_security_group_rules
+ \ exoscale_ssh_keypair
+ \ fastly_service_acl_entries_v1
+ \ fastly_service_dictionary_items_v1
+ \ fastly_service_dynamic_snippet_content_v1
\ fastly_service_v1
\ flexibleengine_antiddos_v1
\ flexibleengine_as_configuration_v1
@@ -2757,9 +2915,13 @@ syn keyword terraResourceTypeBI
\ google_access_context_manager_access_policy
\ google_access_context_manager_service_perimeter
\ google_app_engine_application
+ \ google_app_engine_domain_mapping
\ google_app_engine_firewall_rule
+ \ google_app_engine_standard_app_version
+ \ google_bigquery_data_transfer_config
\ google_bigquery_dataset
\ google_bigquery_table
+ \ google_bigtable_app_profile
\ google_bigtable_instance
\ google_bigtable_instance_iam_binding
\ google_bigtable_instance_iam_member
@@ -2775,6 +2937,9 @@ syn keyword terraResourceTypeBI
\ google_cloud_scheduler_job
\ google_cloudbuild_trigger
\ google_cloudfunctions_function
+ \ google_cloudfunctions_function_iam_binding
+ \ google_cloudfunctions_function_iam_member
+ \ google_cloudfunctions_function_iam_policy
\ google_cloudiot_registry
\ google_composer_environment
\ google_compute_address
@@ -2847,6 +3012,7 @@ syn keyword terraResourceTypeBI
\ google_container_cluster
\ google_container_node_pool
\ google_dataflow_job
+ \ google_dataproc_autoscaling_policy
\ google_dataproc_cluster
\ google_dataproc_cluster_iam_binding
\ google_dataproc_cluster_iam_member
@@ -2885,6 +3051,18 @@ syn keyword terraResourceTypeBI
\ google_iap_tunnel_instance_iam_binding
\ google_iap_tunnel_instance_iam_member
\ google_iap_tunnel_instance_iam_policy
+ \ google_iap_web_backend_service_iam_binding
+ \ google_iap_web_backend_service_iam_member
+ \ google_iap_web_backend_service_iam_policy
+ \ google_iap_web_iam_binding
+ \ google_iap_web_iam_member
+ \ google_iap_web_iam_policy
+ \ google_iap_web_type_app_engine_iam_binding
+ \ google_iap_web_type_app_engine_iam_member
+ \ google_iap_web_type_app_engine_iam_policy
+ \ google_iap_web_type_compute_iam_binding
+ \ google_iap_web_type_compute_iam_member
+ \ google_iap_web_type_compute_iam_policy
\ google_kms_crypto_key
\ google_kms_crypto_key_iam_binding
\ google_kms_crypto_key_iam_member
@@ -2901,6 +3079,7 @@ syn keyword terraResourceTypeBI
\ google_logging_organization_sink
\ google_logging_project_exclusion
\ google_logging_project_sink
+ \ google_ml_engine_model
\ google_monitoring_alert_policy
\ google_monitoring_group
\ google_monitoring_notification_channel
@@ -2932,6 +3111,7 @@ syn keyword terraResourceTypeBI
\ google_resource_manager_lien
\ google_runtimeconfig_config
\ google_runtimeconfig_variable
+ \ google_scc_source
\ google_security_scanner_scan_config
\ google_service_account
\ google_service_account_iam_binding
@@ -2968,6 +3148,7 @@ syn keyword terraResourceTypeBI
\ google_storage_object_acl
\ google_storage_transfer_job
\ google_tpu_node
+ \ google_vpc_access_connector
\ grafana_alert_notification
\ grafana_dashboard
\ grafana_data_source
@@ -2975,6 +3156,7 @@ syn keyword terraResourceTypeBI
\ grafana_organization
\ gridscale_ipv4
\ gridscale_ipv6
+ \ gridscale_loadbalancer
\ gridscale_network
\ gridscale_server
\ gridscale_sshkey
@@ -3031,6 +3213,7 @@ syn keyword terraResourceTypeBI
\ huaweicloud_compute_floatingip_associate_v2
\ huaweicloud_compute_floatingip_v2
\ huaweicloud_compute_instance_v2
+ \ huaweicloud_compute_interface_attach_v2
\ huaweicloud_compute_keypair_v2
\ huaweicloud_compute_secgroup_v2
\ huaweicloud_compute_servergroup_v2
@@ -3048,9 +3231,11 @@ syn keyword terraResourceTypeBI
\ huaweicloud_dms_group_v1
\ huaweicloud_dms_instance_v1
\ huaweicloud_dms_queue_v1
+ \ huaweicloud_dns_ptrrecord_v2
\ huaweicloud_dns_recordset_v2
\ huaweicloud_dns_zone_v2
\ huaweicloud_dws_cluster
+ \ huaweicloud_ecs_instance_v1
\ huaweicloud_elb_backendecs
\ huaweicloud_elb_healthcheck
\ huaweicloud_elb_listener
@@ -3102,6 +3287,7 @@ syn keyword terraResourceTypeBI
\ huaweicloud_smn_topic_v2
\ huaweicloud_vbs_backup_policy_v2
\ huaweicloud_vbs_backup_v2
+ \ huaweicloud_vpc_bandwidth_v2
\ huaweicloud_vpc_eip_v1
\ huaweicloud_vpc_peering_connection_accepter_v2
\ huaweicloud_vpc_peering_connection_v2
@@ -3147,6 +3333,7 @@ syn keyword terraResourceTypeBI
\ jdcloud_route_table_rules
\ jdcloud_subnet
\ jdcloud_vpc
+ \ kubernetes_api_service
\ kubernetes_cluster_role
\ kubernetes_cluster_role_binding
\ kubernetes_config_map
@@ -3197,6 +3384,15 @@ syn keyword terraResourceTypeBI
\ logicmonitor_device
\ logicmonitor_device_group
\ mailgun_domain
+ \ mongodbatlas_cloud_provider_snapshot
+ \ mongodbatlas_cloud_provider_snapshot_restore_job
+ \ mongodbatlas_cluster
+ \ mongodbatlas_database_user
+ \ mongodbatlas_encryption_at_rest
+ \ mongodbatlas_network_container
+ \ mongodbatlas_network_peering
+ \ mongodbatlas_project
+ \ mongodbatlas_project_ip_whitelist
\ mysql_database
\ mysql_grant
\ mysql_role
@@ -3317,10 +3513,12 @@ syn keyword terraResourceTypeBI
\ oci_core_app_catalog_subscription
\ oci_core_boot_volume
\ oci_core_boot_volume_backup
+ \ oci_core_cluster_network
\ oci_core_console_history
\ oci_core_cpe
\ oci_core_cross_connect
\ oci_core_cross_connect_group
+ \ oci_core_dedicated_vm_host
\ oci_core_default_dhcp_options
\ oci_core_default_route_table
\ oci_core_default_security_list
@@ -3415,6 +3613,7 @@ syn keyword terraResourceTypeBI
\ oci_kms_key_version
\ oci_kms_vault
\ oci_limits_quota
+ \ oci_limits_resource_availability
\ oci_load_balancer
\ oci_load_balancer_backend
\ oci_load_balancer_backend_set
@@ -3434,7 +3633,11 @@ syn keyword terraResourceTypeBI
\ oci_ons_notification_topic
\ oci_ons_subscription
\ oci_streaming_stream
+ \ oci_streaming_stream_archiver
+ \ oci_waas_address_list
\ oci_waas_certificate
+ \ oci_waas_custom_protection_rule
+ \ oci_waas_purge_cache
\ oci_waas_waas_policy
\ oneandone_baremetal
\ oneandone_block_storage
@@ -3483,6 +3686,8 @@ syn keyword terraResourceTypeBI
\ opc_lbaas_server_pool
\ opc_storage_container
\ opc_storage_object
+ \ openstack_blockstorage_quotaset_v2
+ \ openstack_blockstorage_quotaset_v3
\ openstack_blockstorage_volume_attach_v2
\ openstack_blockstorage_volume_attach_v3
\ openstack_blockstorage_volume_v1
@@ -3510,9 +3715,11 @@ syn keyword terraResourceTypeBI
\ openstack_fw_policy_v1
\ openstack_fw_rule_v1
\ openstack_identity_application_credential_v3
+ \ openstack_identity_endpoint_v3
\ openstack_identity_project_v3
\ openstack_identity_role_assignment_v3
\ openstack_identity_role_v3
+ \ openstack_identity_service_v3
\ openstack_identity_user_v3
\ openstack_images_image_v2
\ openstack_keymanager_container_v1
@@ -3538,6 +3745,7 @@ syn keyword terraResourceTypeBI
\ openstack_networking_qos_dscp_marking_rule_v2
\ openstack_networking_qos_minimum_bandwidth_rule_v2
\ openstack_networking_qos_policy_v2
+ \ openstack_networking_rbac_policy_v2
\ openstack_networking_router_interface_v2
\ openstack_networking_router_route_v2
\ openstack_networking_router_v2
@@ -3586,6 +3794,7 @@ syn keyword terraResourceTypeBI
\ opentelekomcloud_dms_queue_v1
\ opentelekomcloud_dns_recordset_v2
\ opentelekomcloud_dns_zone_v2
+ \ opentelekomcloud_ecs_instance_v1
\ opentelekomcloud_elb_backend
\ opentelekomcloud_elb_health
\ opentelekomcloud_elb_listener
@@ -3656,8 +3865,16 @@ syn keyword terraResourceTypeBI
\ opentelekomcloud_waf_preciseprotection_rule_v1
\ opentelekomcloud_waf_webtamperprotection_rule_v1
\ opentelekomcloud_waf_whiteblackip_rule_v1
+ \ opsgenie_api_integration
+ \ opsgenie_email_integration
+ \ opsgenie_escalation
+ \ opsgenie_heartbeat
+ \ opsgenie_maintenance
+ \ opsgenie_schedule
+ \ opsgenie_schedule_rotation
\ opsgenie_team
\ opsgenie_user
+ \ opsgenie_user_contact
\ oraclepaas_application_container
\ oraclepaas_database_access_rule
\ oraclepaas_database_service_instance
@@ -3698,6 +3915,7 @@ syn keyword terraResourceTypeBI
\ packet_volume_attachment
\ pagerduty_addon
\ pagerduty_escalation_policy
+ \ pagerduty_event_rule
\ pagerduty_extension
\ pagerduty_maintenance_window
\ pagerduty_schedule
@@ -3711,6 +3929,9 @@ syn keyword terraResourceTypeBI
\ panos_address_object
\ panos_administrative_tag
\ panos_aggregate_interface
+ \ panos_application_group
+ \ panos_application_object
+ \ panos_application_signature
\ panos_bfd_profile
\ panos_bgp
\ panos_bgp_aggregate
@@ -3728,9 +3949,11 @@ syn keyword terraResourceTypeBI
\ panos_bgp_redist_rule
\ panos_dag_tags
\ panos_edl
+ \ panos_email_server_profile
\ panos_ethernet_interface
\ panos_general_settings
\ panos_gre_tunnel
+ \ panos_http_server_profile
\ panos_ike_crypto_profile
\ panos_ike_gateway
\ panos_ipsec_crypto_profile
@@ -3740,6 +3963,7 @@ syn keyword terraResourceTypeBI
\ panos_layer3_subinterface
\ panos_license_api_key
\ panos_licensing
+ \ panos_log_forwarding_profile
\ panos_loopback_interface
\ panos_management_profile
\ panos_monitor_profile
@@ -3750,6 +3974,9 @@ syn keyword terraResourceTypeBI
\ panos_panorama_address_object
\ panos_panorama_administrative_tag
\ panos_panorama_aggregate_interface
+ \ panos_panorama_application_group
+ \ panos_panorama_application_object
+ \ panos_panorama_application_signature
\ panos_panorama_bfd_profile
\ panos_panorama_bgp
\ panos_panorama_bgp_aggregate
@@ -3768,11 +3995,13 @@ syn keyword terraResourceTypeBI
\ panos_panorama_device_group
\ panos_panorama_device_group_entry
\ panos_panorama_edl
+ \ panos_panorama_email_server_profile
\ panos_panorama_ethernet_interface
\ panos_panorama_gcp_account
\ panos_panorama_gke_cluster
\ panos_panorama_gke_cluster_group
\ panos_panorama_gre_tunnel
+ \ panos_panorama_http_server_profile
\ panos_panorama_ike_crypto_profile
\ panos_panorama_ike_gateway
\ panos_panorama_ipsec_crypto_profile
@@ -3780,6 +4009,7 @@ syn keyword terraResourceTypeBI
\ panos_panorama_ipsec_tunnel_proxy_id_ipv4
\ panos_panorama_layer2_subinterface
\ panos_panorama_layer3_subinterface
+ \ panos_panorama_log_forwarding_profile
\ panos_panorama_loopback_interface
\ panos_panorama_management_profile
\ panos_panorama_monitor_profile
@@ -3794,7 +4024,9 @@ syn keyword terraResourceTypeBI
\ panos_panorama_security_rule_group
\ panos_panorama_service_group
\ panos_panorama_service_object
+ \ panos_panorama_snmptrap_server_profile
\ panos_panorama_static_route_ipv4
+ \ panos_panorama_syslog_server_profile
\ panos_panorama_template
\ panos_panorama_template_entry
\ panos_panorama_template_stack
@@ -3816,7 +4048,9 @@ syn keyword terraResourceTypeBI
\ panos_security_rule_group
\ panos_service_group
\ panos_service_object
+ \ panos_snmptrap_server_profile
\ panos_static_route_ipv4
+ \ panos_syslog_server_profile
\ panos_telemetry
\ panos_tunnel_interface
\ panos_virtual_router
@@ -3855,6 +4089,7 @@ syn keyword terraResourceTypeBI
\ rabbitmq_queue
\ rabbitmq_user
\ rabbitmq_vhost
+ \ rancher2_app
\ rancher2_auth_config_activedirectory
\ rancher2_auth_config_adfs
\ rancher2_auth_config_azuread
@@ -3864,6 +4099,7 @@ syn keyword terraResourceTypeBI
\ rancher2_auth_config_ping
\ rancher2_bootstrap
\ rancher2_catalog
+ \ rancher2_certificate
\ rancher2_cloud_credential
\ rancher2_cluster
\ rancher2_cluster_driver
@@ -3871,6 +4107,7 @@ syn keyword terraResourceTypeBI
\ rancher2_cluster_role_template_binding
\ rancher2_etcd_backup
\ rancher2_global_role_binding
+ \ rancher2_multi_cluster_app
\ rancher2_namespace
\ rancher2_node_driver
\ rancher2_node_pool
@@ -3879,6 +4116,8 @@ syn keyword terraResourceTypeBI
\ rancher2_project_logging
\ rancher2_project_role_template_binding
\ rancher2_registry
+ \ rancher2_role_template
+ \ rancher2_secret
\ rancher2_setting
\ rancher2_user
\ rancher_certificate
@@ -3922,19 +4161,21 @@ syn keyword terraResourceTypeBI
\ runscope_schedule
\ runscope_step
\ runscope_test
+ \ scaleway_account_ssh_key
+ \ scaleway_baremetal_server_beta
\ scaleway_bucket
- \ scaleway_compute_instance_ip
- \ scaleway_compute_instance_placement_group
- \ scaleway_compute_instance_security_group
- \ scaleway_compute_instance_server
- \ scaleway_compute_instance_volume
+ \ scaleway_instance_ip
+ \ scaleway_instance_placement_group
+ \ scaleway_instance_security_group
+ \ scaleway_instance_server
+ \ scaleway_instance_volume
\ scaleway_ip
\ scaleway_ip_reverse_dns
+ \ scaleway_object_bucket
\ scaleway_security_group
\ scaleway_security_group_rule
\ scaleway_server
\ scaleway_ssh_key
- \ scaleway_storage_object_bucket
\ scaleway_token
\ scaleway_user_data
\ scaleway_volume
@@ -3957,8 +4198,9 @@ syn keyword terraResourceTypeBI
\ signalfx_event_feed_chart
\ signalfx_gcp_integration
\ signalfx_heatmap_chart
- \ signalfx_integration
\ signalfx_list_chart
+ \ signalfx_opsgenie_integration
+ \ signalfx_org_token
\ signalfx_pagerduty_integration
\ signalfx_single_value_chart
\ signalfx_slack_integration
@@ -4045,6 +4287,11 @@ syn keyword terraResourceTypeBI
\ tencentcloud_ccn
\ tencentcloud_ccn_attachment
\ tencentcloud_ccn_bandwidth_limit
+ \ tencentcloud_clb_attachment
+ \ tencentcloud_clb_instance
+ \ tencentcloud_clb_listener
+ \ tencentcloud_clb_listener_rule
+ \ tencentcloud_clb_redirection
\ tencentcloud_container_cluster
\ tencentcloud_container_cluster_instance
\ tencentcloud_cos_bucket
@@ -4055,8 +4302,19 @@ syn keyword terraResourceTypeBI
\ tencentcloud_dnat
\ tencentcloud_eip
\ tencentcloud_eip_association
+ \ tencentcloud_gaap_certificate
+ \ tencentcloud_gaap_http_domain
+ \ tencentcloud_gaap_http_rule
+ \ tencentcloud_gaap_layer4_listener
+ \ tencentcloud_gaap_layer7_listener
+ \ tencentcloud_gaap_proxy
+ \ tencentcloud_gaap_realserver
+ \ tencentcloud_gaap_security_policy
+ \ tencentcloud_gaap_security_rule
\ tencentcloud_instance
\ tencentcloud_key_pair
+ \ tencentcloud_kubernetes_cluster
+ \ tencentcloud_kubernetes_scale_worker
\ tencentcloud_lb
\ tencentcloud_mongodb_instance
\ tencentcloud_mongodb_sharding_instance
@@ -4073,8 +4331,10 @@ syn keyword terraResourceTypeBI
\ tencentcloud_route_table_entry
\ tencentcloud_security_group
\ tencentcloud_security_group_rule
+ \ tencentcloud_ssl_certificate
\ tencentcloud_subnet
\ tencentcloud_vpc
+ \ tfe_notification_configuration
\ tfe_oauth_client
\ tfe_organization
\ tfe_organization_token
@@ -4169,6 +4429,8 @@ syn keyword terraResourceTypeBI
\ yandex_iam_service_account_iam_member
\ yandex_iam_service_account_iam_policy
\ yandex_iam_service_account_static_access_key
+ \ yandex_lb_network_load_balancer
+ \ yandex_lb_target_group
\ yandex_resourcemanager_cloud
\ yandex_resourcemanager_cloud_iam_binding
\ yandex_resourcemanager_cloud_iam_member
diff --git a/syntax/zig.vim b/syntax/zig.vim
index 42a7e7e1..29f72353 100644
--- a/syntax/zig.vim
+++ b/syntax/zig.vim
@@ -37,9 +37,9 @@ syn match zigBuiltinFn "\v\@(embedFile|export|tagName|TagType|errorName)>"
syn match zigBuiltinFn "\v\@(errorReturnTrace|fence|fieldParentPtr|field|unionInit)>"
syn match zigBuiltinFn "\v\@(frameAddress|import|inlineCall|newStackCall|asyncCall|intToPtr|IntType)>"
syn match zigBuiltinFn "\v\@(maxValue|memberCount|memberName|memberType)>"
-syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow)>"
+syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow|splat)>"
syn match zigBuiltinFn "\v\@(noInlineCall|bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>"
-syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type)>"
+syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type|shuffle)>"
syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>"
syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)>"
syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>"