" Vim syntax file " Language: YAML (YAML Ain't Markup Language) " Maintainer: Nikolai Weibull " Latest Revision: 2007-06-27 if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword yamlTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn region yamlComment \ display \ oneline \ start='%(^|s)#' \ end='$' \ contains=yamlTodo,@Spell syn match yamlNodeProperty \ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)' syn match yamlAnchor \ '&.+' syn match yamlAlias \ '*.+' syn match yamlDelimiter \ '[-,:]' syn match yamlBlock \ '[[]{}>|]' syn match yamlOperator \ '[?+-]' syn match yamlKey \ 'w+(s+w+)*zes*:' syn region yamlString \ start=+"+ \ skip=+\"+ \ end=+"+ \ contains=yamlEscape syn region yamlString \ start=+'+ \ skip=+''+ \ end=+'+ \ contains=yamlSingleEscape syn match yamlEscape \ contained \ display \ +\[\"abefnrtv^0_ NLP]+ syn match yamlEscape \ contained \ display \ '\xx{2}' syn match yamlEscape \ contained \ display \ '\ux{4}' syn match yamlEscape \ contained \ display \ '\Ux{8}' " TODO: how do we get 0x85, 0x2028, and 0x2029 into this? " XXX: Em, what is going on here? This can't be right. Leave out until we " figure out what this is meant to do. "syn match yamlEscape " \ contained " \ display " \ '\%(rn|[rn])' syn match yamlSingleEscape \ contained \ display \ +''+ " TODO: sexagecimal and fixed (20:30.15 and 1,230.15) syn match yamlNumber \ display \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' syn match yamlNumber \ display \ '0o+' syn match yamlNumber \ display \ '0xx+' syn match yamlNumber \ display \ '([+-]=[iI]nf)' syn match yamlNumber \ display \ '(NaN)' syn match yamlConstant \ '<[~yn]>' syn keyword yamlConstant \ true \ True \ TRUE \ false \ False \ FALSE syn keyword yamlConstant \ yes \ Yes \ on \ ON \ no \ No \ off \ OFF syn keyword yamlConstant \ null \ Null \ NULL \ nil \ Nil \ NIL syn 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\)\=' syn region yamlDocumentHeader \ start='---' \ end='$' \ contains=yamlDirective syn match yamlDocumentEnd \ '\.\.\.' syn match yamlDirective \ contained \ '%[^:]+:.+' syn match yamlIndentation \ '^s*' \ contains=yamlIndentationError syn match yamlIndentationError \ 't' hi def link yamlTodo Todo hi def link yamlComment Comment hi def link yamlDocumentHeader PreProc hi def link yamlDocumentEnd PreProc hi def link yamlDirective Keyword hi def link yamlNodeProperty Type hi def link yamlAnchor Type hi def link yamlAlias Type hi def link yamlDelimiter Delimiter hi def link yamlBlock Operator hi def link yamlOperator Operator hi def link yamlKey Identifier hi def link yamlString String hi def link yamlEscape SpecialChar hi def link yamlSingleEscape SpecialChar hi def link yamlNumber Number hi def link yamlConstant Constant hi def link yamlTimestamp Number hi def link yamlIndentationError Error let b:current_syntax = "yaml" let &cpo = s:cpo_save unlet s:cpo_save