aboutsummaryrefslogtreecommitdiff
path: root/vim.dot.link/syntax/puppet.vim
blob: bb8541576ccaae1a7e1109d072a116669d1e5b63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
" puppet syntax file
" Filename:     puppet.vim
" Language:     puppet configuration file 
" Maintainer:   Luke Kanies <luke@madstop.com>
" URL:          
" Last Change: 
" Version:      
"

" 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")
  finish
endif

syn region  puppetDefine        start="^\s*\(class\|define\|site\|node\)" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments
syn keyword puppetDefType       class define site node inherits contained
syn keyword puppetInherits      inherits contained
syn region  puppetDefArguments  start="(" end=")" contains=puppetArgument
syn match   puppetArgument      "\w\+" contained
syn match   puppetDefName     "\w\+" contained

syn match   puppetInstance           "\w\+\s*{" contains=puppetTypeBrace,puppetTypeName,puppetTypeDefault
syn match   puppetTypeBrace       "{" contained
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
syn match   puppetVariable           "$\w\+"
syn match   puppetVariable           "${\w\+}"
syn match   puppetParen           "("
syn match   puppetParen           ")"
syn match   puppetBrace           "{"
syn match   puppetBrace           "}"

syn region  puppetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable

syn keyword puppetBoolean    true false 
syn keyword puppetKeyword    import inherits include
syn keyword puppetControl    case default 

" comments last overriding everything else
syn match   puppetComment            "\s*#.*$" contains=puppetTodo
syn keyword puppetTodo               TODO NOTE FIXME XXX 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 puppetBoolean              Boolean
  HiLink puppetType                 Identifier
  HiLink puppetDefault              Identifier
  HiLink puppetKeyword              Define
  HiLink puppetTypeDefs             Define
  HiLink puppetComment              Comment
  HiLink puppetString               String
  HiLink puppetTodo                 Todo
"  HiLink puppetBrace                Delimiter
"  HiLink puppetTypeBrace            Delimiter
"  HiLink puppetParen                Delimiter
  HiLink puppetDelimiter            Delimiter
  HiLink puppetControl              Statement
  HiLink puppetDefType              Define
  HiLink puppetDefName              Type
  HiLink puppetTypeName             Statement
  HiLink puppetTypeDefault          Type
  HiLink puppetParamName            Identifier
  HiLink puppetArgument             Identifier

  delcommand HiLink
endif

let b:current_syntax = "puppet"