summaryrefslogtreecommitdiffstats
path: root/syntax/puppet.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2014-04-15 01:26:34 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2014-04-15 01:26:34 +0200
commitb36260d015c805d9b056d7e5984fcc8e20e45839 (patch)
tree69c9fb818b5b58e894246ad7c99fa483a60d9766 /syntax/puppet.vim
parent6c198a3ca9c392069c119282b702028fbfb5edf3 (diff)
downloadvim-polyglot-b36260d015c805d9b056d7e5984fcc8e20e45839.tar.gz
vim-polyglot-b36260d015c805d9b056d7e5984fcc8e20e45839.zip
Change puppet vendor, closes #24
Diffstat (limited to 'syntax/puppet.vim')
-rw-r--r--syntax/puppet.vim89
1 files changed, 69 insertions, 20 deletions
diff --git a/syntax/puppet.vim b/syntax/puppet.vim
index 8cdada18..010ada45 100644
--- a/syntax/puppet.vim
+++ b/syntax/puppet.vim
@@ -17,9 +17,9 @@ elseif exists("b:current_syntax")
endif
" match class/definition/node declarations
-syn region puppetDefine start="^\s*\(class\|define\|node\)\s" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments,puppetNodeRe
+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=puppetArgument,puppetString
+syn region puppetDefArguments start="(" end=")" contained contains=puppetArgument,puppetString,puppetComment,puppetMultilineComment
syn match puppetArgument "\w\+" contained
syn match puppetArgument "\$\w\+" contained
syn match puppetArgument "'[^']+'" contained
@@ -31,15 +31,24 @@ syn match puppetNodeRe "/.*/" contained
" 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
-syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*[[{]" contains=puppetTypeName,puppetTypeDefault
-syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*<\?<|" contains=puppetTypeName,puppetTypeDefault
+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
-" match 'foo' in 'foo => "bar"'
-syn match puppetParam "\w\+\s*[=+]>" contains=puppetParamName
-syn match puppetParamName "\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'
@@ -57,25 +66,49 @@ syn region puppetFunction start="^\s*\(alert\|crit\|debug\|emerg\|err\|fai
" 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_:]\+"
-syn match puppetVariable "${[a-zA-Z0-9_:]\+}"
+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=+"+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable,puppetNotVariable
-syn match puppetString "/[^/]*/"
syn match puppetNotVariable "\\$\w\+" contained
syn match puppetNotVariable "\\${\w\+}" contained
-syn keyword puppetKeyword import inherits include
+syn keyword puppetKeyword import inherits include require
syn keyword puppetControl case default if else elsif
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
+
" comments last overriding everything else
-syn match puppetComment "\s*#.*$" contains=puppetTodo
-syn region puppetComment start="/\*" end="\*/" contains=puppetTodo extend
-syn keyword puppetTodo TODO NOTE FIXME XXX BUG HACK contained
+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
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
@@ -90,15 +123,32 @@ if version >= 508 || !exists("did_puppet_syn_inits")
HiLink puppetVariable Identifier
HiLink puppetType Identifier
- HiLink puppetKeyword Define
+ HiLink puppetKeyword Keyword
HiLink puppetComment Comment
+ HiLink puppetMultilineComment Comment
HiLink puppetString String
- HiLink puppetParamKeyword 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 Special
+ 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
@@ -108,10 +158,9 @@ if version >= 508 || !exists("did_puppet_syn_inits")
HiLink puppetParamName Identifier
HiLink puppetArgument Identifier
HiLink puppetFunction Function
+ HiLink puppetClass Include
delcommand HiLink
endif
let b:current_syntax = "puppet"
-set iskeyword=-,:,@,48-57,_,192-255
-