xref: /vim-8.2.3635/runtime/syntax/yaml.vim (revision 3577c6fa)
1" Vim syntax file
2" Language:         YAML (YAML Ain't Markup Language)
3" Maintainer:       Nikolai Weibull <[email protected]>
4" Latest Revision:  2007-06-27
5
6if exists("b:current_syntax")
7  finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword yamlTodo
14      \ contained
15      \ TODO
16      \ FIXME
17      \ XXX
18      \ NOTE
19
20syn region  yamlComment
21      \ display
22      \ oneline
23      \ start='%(^|s)#'
24      \ end='$'
25      \ contains=yamlTodo,@Spell
26
27syn match   yamlNodeProperty
28      \ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)'
29
30syn match   yamlAnchor
31      \ '&.+'
32
33syn match   yamlAlias
34      \ '*.+'
35
36syn match   yamlDelimiter
37      \ '[-,:]'
38syn match   yamlBlock
39      \ '[[]{}>|]'
40syn match   yamlOperator
41      \ '[?+-]'
42syn match   yamlKey
43      \ 'w+(s+w+)*zes*:'
44
45syn 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
72" TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
73" 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      \ +''+
83
84" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
85syn 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)'
100
101syn 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
126
127syn 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\)\='
129
130syn region  yamlDocumentHeader
131      \ start='---'
132      \ end='$'
133      \ contains=yamlDirective
134syn match   yamlDocumentEnd
135      \ '\.\.\.'
136
137syn match   yamlDirective
138      \ contained
139      \ '%[^:]+:.+'
140
141syn match   yamlIndentation
142      \ '^s*'
143      \ contains=yamlIndentationError
144
145syn match   yamlIndentationError
146      \ 't'
147
148hi 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
166hi def link yamlIndentationError  Error
167
168let b:current_syntax = "yaml"
169
170let &cpo = s:cpo_save
171unlet s:cpo_save
172