1" Vim syntax file 2" Language: YAML (YAML Ain't Markup Language) 3" Maintainer: Nikolai Weibull <now@bitwi.se> 4" Latest Revision: 2010-08-12 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 '&.\+' 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 matchgroup=yamlStringDelimiter 30 \ start=+"+ skip=+\\"+ end=+"+ 31 \ contains=yamlEscape 32syn region yamlString matchgroup=yamlStringDelimiter 33 \ start=+'+ skip=+''+ end=+'+ 34 \ contains=yamlSingleEscape 35syn match yamlEscape contained display +\\[\\"abefnrtv^0_ NLP]+ 36syn match yamlEscape contained display '\\x\x\{2}' 37syn match yamlEscape contained display '\\u\x\{4}' 38syn match yamlEscape contained display '\\U\x\{8}' 39" TODO: how do we get 0x85, 0x2028, and 0x2029 into this? 40syn match yamlEscape display '\\\%(\r\n\|[\r\n]\)' 41syn match yamlSingleEscape contained +''+ 42 43" TODO: sexagecimal and fixed (20:30.15 and 1,230.15) 44syn match yamlNumber display 45 \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' 46syn match yamlNumber display '0\o\+' 47syn match yamlNumber display '0x\x\+' 48syn match yamlNumber display '([+-]\=[iI]nf)' 49syn match yamlNumber display '(NaN)' 50 51syn match yamlConstant '\<[~yn]\>' 52syn keyword yamlConstant true True TRUE false False FALSE 53syn keyword yamlConstant yes Yes on ON no No off OFF 54syn keyword yamlConstant null Null NULL nil Nil NIL 55 56syn 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\)\=' 57 58syn region yamlDocumentHeader start='---' end='$' contains=yamlDirective 59syn match yamlDocumentEnd '\.\.\.' 60 61syn match yamlDirective contained '%[^:]\+:.\+' 62 63hi def link yamlTodo Todo 64hi def link yamlComment Comment 65hi def link yamlDocumentHeader PreProc 66hi def link yamlDocumentEnd PreProc 67hi def link yamlDirective Keyword 68hi def link yamlNodeProperty Type 69hi def link yamlAnchor Type 70hi def link yamlAlias Type 71hi def link yamlDelimiter Delimiter 72hi def link yamlBlock Operator 73hi def link yamlOperator Operator 74hi def link yamlKey Identifier 75hi def link yamlString String 76hi def link yamlStringDelimiter yamlString 77hi def link yamlEscape SpecialChar 78hi def link yamlSingleEscape SpecialChar 79hi def link yamlNumber Number 80hi def link yamlConstant Constant 81hi def link yamlTimestamp Number 82 83let b:current_syntax = "yaml" 84 85let &cpo = s:cpo_save 86unlet s:cpo_save 87