blob: abda3f8b49241604d621ac646bd2d524faf3eafa [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar42eeac32005-06-29 22:40:58 +00002" Language: YAML (YAML Ain't Markup Language)
Bram Moolenaar57657d82006-04-21 22:12:41 +00003" Maintainer: Nikolai Weibull <now@bitwi.se>
Bram Moolenaarf2330482008-06-24 20:19:36 +00004" Latest Revision: 2007-06-27
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar42eeac32005-06-29 22:40:58 +00006if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00007 finish
8endif
9
Bram Moolenaar42eeac32005-06-29 22:40:58 +000010let s:cpo_save = &cpo
11set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
Bram Moolenaarf2330482008-06-24 20:19:36 +000013syn keyword yamlTodo
14 \ contained
15 \ TODO
16 \ FIXME
17 \ XXX
18 \ NOTE
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
Bram Moolenaarf2330482008-06-24 20:19:36 +000020syn region yamlComment
21 \ display
22 \ oneline
23 \ start='%(^|s)#'
24 \ end='$'
25 \ contains=yamlTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
Bram Moolenaarf2330482008-06-24 20:19:36 +000027syn match yamlNodeProperty
28 \ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)'
Bram Moolenaar071d4272004-06-13 20:20:40 +000029
Bram Moolenaarf2330482008-06-24 20:19:36 +000030syn match yamlAnchor
31 \ '&.+'
Bram Moolenaar071d4272004-06-13 20:20:40 +000032
Bram Moolenaarf2330482008-06-24 20:19:36 +000033syn match yamlAlias
34 \ '*.+'
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
Bram Moolenaarf2330482008-06-24 20:19:36 +000036syn match yamlDelimiter
37 \ '[-,:]'
38syn match yamlBlock
39 \ '[[]{}>|]'
40syn match yamlOperator
41 \ '[?+-]'
42syn match yamlKey
43 \ 'w+(s+w+)*zes*:'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000044
Bram Moolenaarf2330482008-06-24 20:19:36 +000045syn region yamlString
46 \ start=+"+
47 \ skip=+\"+
48 \ end=+"+
49 \ contains=yamlEscape
50syn region yamlString
51 \ start=+'+
52 \ skip=+''+
53 \ end=+'+
54 \ contains=yamlSingleEscape
55syn match yamlEscape
56 \ contained
57 \ display
58 \ +\[\"abefnrtv^0_ NLP]+
59syn match yamlEscape
60 \ contained
61 \ display
62 \ '\xx{2}'
63syn match yamlEscape
64 \ contained
65 \ display
66 \ '\ux{4}'
67syn match yamlEscape
68 \ contained
69 \ display
70 \ '\Ux{8}'
71
Bram Moolenaar071d4272004-06-13 20:20:40 +000072" TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
Bram Moolenaarf2330482008-06-24 20:19:36 +000073" XXX: Em, what is going on here? This can't be right. Leave out until we
74" figure out what this is meant to do.
75"syn match yamlEscape
76" \ contained
77" \ display
78" \ '\%(rn|[rn])'
79syn match yamlSingleEscape
80 \ contained
81 \ display
82 \ +''+
Bram Moolenaar071d4272004-06-13 20:20:40 +000083
Bram Moolenaar071d4272004-06-13 20:20:40 +000084" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
Bram Moolenaarf2330482008-06-24 20:19:36 +000085syn match yamlNumber
86 \ display
87 \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
88syn match yamlNumber
89 \ display
90 \ '0o+'
91syn match yamlNumber
92 \ display
93 \ '0xx+'
94syn match yamlNumber
95 \ display
96 \ '([+-]=[iI]nf)'
97syn match yamlNumber
98 \ display
99 \ '(NaN)'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000100
Bram Moolenaarf2330482008-06-24 20:19:36 +0000101syn match yamlConstant
102 \ '<[~yn]>'
103syn keyword yamlConstant
104 \ true
105 \ True
106 \ TRUE
107 \ false
108 \ False
109 \ FALSE
110syn keyword yamlConstant
111 \ yes
112 \ Yes
113 \ on
114 \ ON
115 \ no
116 \ No
117 \ off
118 \ OFF
119syn keyword yamlConstant
120 \ null
121 \ Null
122 \ NULL
123 \ nil
124 \ Nil
125 \ NIL
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126
Bram Moolenaarf2330482008-06-24 20:19:36 +0000127syn match yamlTimestamp
128 \ '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129
Bram Moolenaarf2330482008-06-24 20:19:36 +0000130syn region yamlDocumentHeader
131 \ start='---'
132 \ end='$'
133 \ contains=yamlDirective
134syn match yamlDocumentEnd
135 \ '\.\.\.'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136
Bram Moolenaarf2330482008-06-24 20:19:36 +0000137syn match yamlDirective
138 \ contained
139 \ '%[^:]+:.+'
140
141syn match yamlIndentation
142 \ '^s*'
143 \ contains=yamlIndentationError
144
145syn match yamlIndentationError
146 \ 't'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000147
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000148hi def link yamlTodo Todo
149hi def link yamlComment Comment
150hi def link yamlDocumentHeader PreProc
151hi def link yamlDocumentEnd PreProc
152hi def link yamlDirective Keyword
153hi def link yamlNodeProperty Type
154hi def link yamlAnchor Type
155hi def link yamlAlias Type
156hi def link yamlDelimiter Delimiter
157hi def link yamlBlock Operator
158hi def link yamlOperator Operator
159hi def link yamlKey Identifier
160hi def link yamlString String
161hi def link yamlEscape SpecialChar
162hi def link yamlSingleEscape SpecialChar
163hi def link yamlNumber Number
164hi def link yamlConstant Constant
165hi def link yamlTimestamp Number
Bram Moolenaarf2330482008-06-24 20:19:36 +0000166hi def link yamlIndentationError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167
168let b:current_syntax = "yaml"
169
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000170let &cpo = s:cpo_save
171unlet s:cpo_save