" Vim syntax file " Language: YAML (YAML Ain't Markup Language) " Maintainer: Nikolai Weibull " Latest Revision: 2006-04-19 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 '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)' syn match yamlAnchor '&.\+' syn match yamlAlias '\*.\+' syn match yamlDelimiter '[-,:]' syn match yamlBlock '[\[\]{}>|]' syn match yamlOperator '[?+-]' syn match yamlKey '\w\+\(\s\+\w\+\)*\ze\s*:' 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 '\\x\x\{2}' syn match yamlEscape contained display '\\u\x\{4}' syn match yamlEscape contained display '\\U\x\{8}' " TODO: how do we get 0x85, 0x2028, and 0x2029 into this? syn match yamlEscape display '\\\%(\r\n\|[\r\n]\)' 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 '0\o\+' syn match yamlNumber display '0x\x\+' 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 '%[^:]\+:.\+' 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 let b:current_syntax = "yaml" let &cpo = s:cpo_save unlet s:cpo_save