1" Vim syntax file 2" Language: YAML (YAML Ain't Markup Language) 3" Maintainer: Nikolai Weibull <[email protected]> 4" URL: http://www.pcppopper.org/vim/syntax/pcp/yaml/ 5" Latest Revision: 2004-05-22 6" arch-tag: 01bf8ef1-335f-4692-a228-4846cb64cd16 7 8if version < 600 9 syntax clear 10elseif exists("b:current_syntax") 11 finish 12endif 13 14" Todo 15syn keyword yamlTodo contained TODO FIXME XXX NOTE 16 17" Comments (4.2.2) 18syn region yamlComment matchgroup=yamlComment start='\%(^\|\s\)#' end='$' contains=yamlTodo 19 20" Node Properties (4.3.4) 21syn match yamlNodeProperty '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)' 22 23" Anchors (4.3.6) 24syn match yamlAnchor '&.\+' 25 26" Aliases (4.3.7) 27syn match yamlAlias '\*.\+' 28 29" Operators, Blocks, Keys, and Delimiters 30syn match yamlDelimiter '[-,:]' 31syn match yamlBlock '[\[\]{}>|]' 32syn match yamlOperator '[?+-]' 33syn match yamlKey '\w\+\(\s\+\w\+\)*\ze\s*:' 34 35" Strings (4.6.8, 4.6.9) 36syn region yamlString start=+"+ skip=+\\"+ end=+"+ contains=yamlEscape 37syn region yamlString start=+'+ skip=+''+ end=+'+ contains=yamlSingleEscape 38syn match yamlEscape contained +\\[\\"abefnrtv^0_ NLP]+ 39syn match yamlEscape contained '\\x\x\{2}' 40syn match yamlEscape contained '\\u\x\{4}' 41syn match yamlEscape contained '\\U\x\{8}' 42" TODO: how do we get 0x85, 0x2028, and 0x2029 into this? 43syn match yamlEscape '\\\%(\r\n\|[\r\n]\)' 44syn match yamlSingleEscape contained +''+ 45 46" Numbers 47" TODO: sexagecimal and fixed (20:30.15 and 1,230.15) 48syn match yamlNumber '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' 49syn match yamlNumber '0\o\+' 50syn match yamlNumber '0x\x\+' 51syn match yamlNumber '([+-]\=[iI]nf)' 52syn match yamlNumber '(NaN)' 53 54" Constants 55syn match yamlConstant '\<[~yn]\>' 56syn keyword yamlConstant true True TRUE false False FALSE 57syn keyword yamlConstant yes Yes on ON no No off OFF 58syn keyword yamlConstant null Null NULL nil Nil NIL 59 60" Timestamps 61syn 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\)\=' 62 63" Documents (4.3.1) 64syn region yamlDocumentHeader start='---' end='$' contains=yamlDirective 65syn match yamlDocumentEnd '\.\.\.' 66 67" Directives (4.3.2) 68syn match yamlDirective contained '%[^:]\+:.\+' 69 70" Define the default highlighting. 71" For version 5.7 and earlier: only when not done already 72" For version 5.8 and later: only when an item doesn't have highlighting yet 73if version >= 508 || !exists("did_yaml_syn_inits") 74 if version < 508 75 let did_yaml_syn_inits = 1 76 command -nargs=+ HiLink hi link <args> 77 else 78 command -nargs=+ HiLink hi def link <args> 79 endif 80 81 HiLink yamlTodo Todo 82 HiLink yamlComment Comment 83 HiLink yamlDocumentHeader PreProc 84 HiLink yamlDocumentEnd PreProc 85 HiLink yamlDirective Keyword 86 HiLink yamlNodeProperty Type 87 HiLink yamlAnchor Type 88 HiLink yamlAlias Type 89 HiLink yamlDelimiter Delimiter 90 HiLink yamlBlock Operator 91 HiLink yamlOperator Operator 92 HiLink yamlKey Identifier 93 HiLink yamlString String 94 HiLink yamlEscape SpecialChar 95 HiLink yamlSingleEscape SpecialChar 96 HiLink yamlNumber Number 97 HiLink yamlConstant Constant 98 HiLink yamlTimestamp Number 99 100 delcommand HiLink 101endif 102 103let b:current_syntax = "yaml" 104 105" vim: set sts=2 sw=2: 106