3 " Maintainer: motemen <motemen@gmail.com>
8 if !exists('g:yaml_syntax_highlight_numbers')
9 let g:yaml_syntax_highlight_numbers = 0
12 syn match yamlValue contained +\s*\%(#.*\)\?+ contains=yamlComment nextgroup=yamlType,yamlLabel,yamlFlowMap,yamlFlowSeq,yamlBool,yamlNull,yamlTextBlock,yamlString,yamlTimestamp,yamlInt,yamlFloat,yamlPlainString
15 syn match yamlPlainString contained +.\++
16 syn match yamlPlainStringInFlow contained +[^}\],]\++
19 if g:yaml_syntax_highlight_numbers
20 syn match yamlInt contained /[-+]\?\%(0\|[1-9][0-9_]*\)\+\%(\.\|[0-9]\)\@!/
21 syn match yamlInt contained /[-+]\?0b[0-1_]\+/
22 syn match yamlInt contained /[-+]\?0[0-7_]\+/
23 syn match yamlInt contained /[-+]\?0x[0-9a-fA-F_]\+/
24 syn match yamlInt contained /[-+]\?[1-9][0-9_]*\%(:[0-5]\?[0-9]\)\+/
25 syn match yamlFloat contained /[-+]\?\%([0-9][0-9_]*\)\?\.[0-9_]\+\%([eE][-+][0-9]\+\)\?\%(\.\|[0-9]\)\@!/
26 syn match yamlFloat contained /[-+]\?[0-9][0-9_]*\%(:[0-5]\?[0-9]\)\+\.[0-9_]*/
28 syn match yamlFloat contained /[-+]\?\.\%(inf\|Inf\|INF\)\s*\%(#.*\)\?$/
29 syn match yamlFloat contained /\.\%(nan\|NaN\|NAN\)\s*\%(#.*\)\?$/
32 syn match yamlTimestamp contained /[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
33 syn match yamlTimestamp contained /[0-9][0-9][0-9][0-9]-[0-9][0-9]\?-[0-9][0-9]\?\%([Tt]\|[ \t]\+\)[0-9][0-9]\?:[0-9][0-9]:[0-9][0-9]\%(\.[0-9]*\)\?\%([ \t]*Z\|[-+][0-9][0-9]\?\%(:[0-9][0-9]\)\?\)\?/
36 syn region yamlFlowSeq matchgroup=Delimiter start=+\[+ end=+\]+ contains=yamlKeyInFlow,yamlQuotedKeyInFlow,yamlComma
39 syn region yamlFlowMap matchgroup=Delimiter start=+{+ end=+}+ contains=yamlKeyInFlow,yamlQuotedKeyInFlow,yamlComma
41 " Flow mapping/sequence
42 syn match yamlComma +,+
44 syn match yamlKeyColonInFlow contained +:+ nextgroup=yamlValueInFlow
45 syn match yamlValueInFlow contained +\s*+ nextgroup=yamlTypeInFlow,yamlFlowMap,yamlFlowSeq,yamlConstant,yamlTextBlock,yamlString,yamlPlainStringInFlow
46 syn match yamlKeyInFlow contained +[^,#'" ][^}\]]\{-}\ze:+ nextgroup=yamlKeyColonInFlow
47 syn region yamlQuotedKeyInFlow contained matchgroup=String start=+"+rs=e skip=+\\"+ end=+"\s*\ze:+ contains=yamlEscape nextgroup=yamlKeyColonInFlow
48 syn region yamlQuotedKeyInFlow contained matchgroup=String start=+'+rs=e skip=+''+ end=+'\s*\ze:+ contains=yamlSingleEscape nextgroup=yamlKeyColonInFlow
51 syn match yamlKeyColon +:+ nextgroup=yamlValue
52 syn match yamlKey +[^#'"{\[ ]\%(.\)\{-}\ze:\%( \|$\)+ nextgroup=yamlKeyColon
53 syn region yamlQuotedKey matchgroup=String start=+"+rs=e skip=+\\"+ end=+"\s*\ze:+ contains=yamlEscape nextgroup=yamlKeyColon
54 syn region yamlQuotedKey matchgroup=String start=+'+rs=e skip=+''+ end=+'\s*\ze:+ contains=yamlSingleEscape nextgroup=yamlKeyColon
55 syn region yamlKey matchgroup=Delimiter start=+?+ end=+:+rs=e-1 contains=yamlValue nextgroup=yamlKeyColon
58 syn match yamlSeqMark +-\s*+ nextgroup=yamlValue,yamlKey
61 syn match yamlLabel contained +[*&]\S\++
64 syn keyword yamlTodo contained TODO FIXME XXX NOTE
65 syn match yamlComment +#.*+ contains=yamlTodo
66 syn region yamlComment start=+^\.\.\.+ end=+\%$+ contains=yamlTodo
69 syn region yamlString contained start=+"+ skip=+\\"+ end=+"+ contains=yamlEscape
70 syn region yamlString contained start=+'+ skip=+''+ end=+'+ contains=yamlSingleEscape
71 syn match yamlEscape contained +\\[\\"abefnrtv^0_ NLP]+
72 syn match yamlEscape contained '\\x\x\{2}'
73 syn match yamlEscape contained '\\u\x\{4}'
74 syn match yamlEscape contained '\\U\x\{8}'
75 syn match yamlEscape contained '\\\%(\r\n\|[\r\n]\)'
76 syn match yamlSingleEscape contained +''+
79 syn match yamlType +!\S*+ nextgroup=yamlValue
82 syn region yamlTextBlock start=/[|>][+-]\?\%([1-9]\d*\)\?\n\z\( \+\)/ end=/^\%(\z1\|$\)\@!/
85 syn match yamlBool +\%(y\|Y\|yes\|Yes\|YES\|n\|N\|no\|No\|NO\|true\|True\|TRUE\|false\|False\|FALSE\|on\|On\|ON\|off\|Off\|OFF\)\ze\s*\%(#.*\)\?$+ contained
86 syn match yamlNull +\%(null\|\~\)\ze\s*\%(#.*\)\?$+ contained
89 syn match yamlDirective +^%[^#]*\%(#.*\)\?$+ contains=yamlComment
90 syn match yamlDocHeader +^---\s*+
92 highlight link yamlTodo TODO
93 highlight link yamlComment Comment
94 highlight link yamlKeyColon Delimiter
95 highlight link yamlKeyColonInFlow Delimiter
96 highlight link yamlSeqMark Delimiter
97 highlight link yamlKey Identifier
98 highlight link yamlQuotedKey Identifier
99 highlight link yamlKeyInFlow Identifier
100 highlight link yamlQuotedKeyInFlow Identifier
101 highlight link yamlBool Constant
102 highlight link yamlNull Constant
103 highlight link yamlTextBlock String
104 highlight link yamlType Type
105 highlight link yamlDocHeader Statement
106 highlight link yamlDirective PreProc
107 highlight link yamlLabel Label
108 highlight link yamlInt Number
109 highlight link yamlFloat Number