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