xref: /vim-8.2.3635/runtime/syntax/yaml.vim (revision a17d4c19)
1" Vim syntax file
2" Language:         YAML (YAML Ain't Markup Language)
3" Maintainer:       Nikolai Weibull <[email protected]>
4" Latest Revision:  2010-05-30
5
6if exists("b:current_syntax")
7  finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword yamlTodo            contained TODO FIXME XXX NOTE
14
15syn region  yamlComment         display oneline start='\%(^\|\s\)#' end='$'
16                                \ contains=yamlTodo,@Spell
17
18syn match   yamlNodeProperty    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
19
20syn match   yamlAnchor          '&[^ \t]\+'
21
22syn match   yamlAlias           '\*.\+'
23
24syn match   yamlDelimiter       '[-,:]'
25syn match   yamlBlock           '[\[\]{}>|]'
26syn match   yamlOperator        '[?+-]'
27syn match   yamlKey             '\w\+\(\s\+\w\+\)*\ze\s*:'
28
29syn region  yamlString          start=+"+ skip=+\\"+ end=+"+
30                                \ contains=yamlEscape
31syn region  yamlString          start=+'+ skip=+''+ end=+'+
32                                \ contains=yamlSingleEscape
33syn match   yamlEscape          contained display +\\[\\"abefnrtv^0_ NLP]+
34syn match   yamlEscape          contained display '\\x\x\{2}'
35syn match   yamlEscape          contained display '\\u\x\{4}'
36syn match   yamlEscape          contained display '\\U\x\{8}'
37" TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
38syn match   yamlEscape          display '\\\%(\r\n\|[\r\n]\)'
39syn match   yamlSingleEscape    contained display +''+
40
41" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
42syn match   yamlNumber          display
43                                \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
44syn match   yamlNumber          display '0\o\+'
45syn match   yamlNumber          display '0x\x\+'
46syn match   yamlNumber          display '([+-]\=[iI]nf)'
47syn match   yamlNumber          display '(NaN)'
48
49syn match   yamlConstant        '\<[~yn]\>'
50syn keyword yamlConstant        true True TRUE false False FALSE
51syn keyword yamlConstant        yes Yes on ON no No off OFF
52syn keyword yamlConstant        null Null NULL nil Nil NIL
53
54syn match   yamlTimestamp       '\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\)\='
55
56syn region  yamlDocumentHeader  start='---' end='$' contains=yamlDirective
57syn match   yamlDocumentEnd     '\.\.\.'
58
59syn match   yamlDirective       contained '%[^:]\+:.\+'
60
61hi def link yamlTodo            Todo
62hi def link yamlComment         Comment
63hi def link yamlDocumentHeader  PreProc
64hi def link yamlDocumentEnd     PreProc
65hi def link yamlDirective       Keyword
66hi def link yamlNodeProperty    Type
67hi def link yamlAnchor          Type
68hi def link yamlAlias           Type
69hi def link yamlDelimiter       Delimiter
70hi def link yamlBlock           Operator
71hi def link yamlOperator        Operator
72hi def link yamlKey             Identifier
73hi def link yamlString          String
74hi def link yamlEscape          SpecialChar
75hi def link yamlSingleEscape    SpecialChar
76hi def link yamlNumber          Number
77hi def link yamlConstant        Constant
78hi def link yamlTimestamp       Number
79
80let b:current_syntax = "yaml"
81
82let &cpo = s:cpo_save
83unlet s:cpo_save
84