1" Vim syntax file 2" Language: YAML (YAML Ain't Markup Language) 3" Maintainer: Nikolai Weibull <[email protected]> 4" Latest Revision: 2007-06-27 5 6if exists("b:current_syntax") 7 finish 8endif 9 10let s:cpo_save = &cpo 11set cpo&vim 12 13syn keyword yamlTodo 14 \ contained 15 \ TODO 16 \ FIXME 17 \ XXX 18 \ NOTE 19 20syn region yamlComment 21 \ display 22 \ oneline 23 \ start='%(^|s)#' 24 \ end='$' 25 \ contains=yamlTodo,@Spell 26 27syn match yamlNodeProperty 28 \ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)' 29 30syn match yamlAnchor 31 \ '&.+' 32 33syn match yamlAlias 34 \ '*.+' 35 36syn match yamlDelimiter 37 \ '[-,:]' 38syn match yamlBlock 39 \ '[[]{}>|]' 40syn match yamlOperator 41 \ '[?+-]' 42syn match yamlKey 43 \ 'w+(s+w+)*zes*:' 44 45syn region yamlString 46 \ start=+"+ 47 \ skip=+\"+ 48 \ end=+"+ 49 \ contains=yamlEscape 50syn region yamlString 51 \ start=+'+ 52 \ skip=+''+ 53 \ end=+'+ 54 \ contains=yamlSingleEscape 55syn match yamlEscape 56 \ contained 57 \ display 58 \ +\[\"abefnrtv^0_ NLP]+ 59syn match yamlEscape 60 \ contained 61 \ display 62 \ '\xx{2}' 63syn match yamlEscape 64 \ contained 65 \ display 66 \ '\ux{4}' 67syn match yamlEscape 68 \ contained 69 \ display 70 \ '\Ux{8}' 71 72" TODO: how do we get 0x85, 0x2028, and 0x2029 into this? 73" XXX: Em, what is going on here? This can't be right. Leave out until we 74" figure out what this is meant to do. 75"syn match yamlEscape 76" \ contained 77" \ display 78" \ '\%(rn|[rn])' 79syn match yamlSingleEscape 80 \ contained 81 \ display 82 \ +''+ 83 84" TODO: sexagecimal and fixed (20:30.15 and 1,230.15) 85syn match yamlNumber 86 \ display 87 \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' 88syn match yamlNumber 89 \ display 90 \ '0o+' 91syn match yamlNumber 92 \ display 93 \ '0xx+' 94syn match yamlNumber 95 \ display 96 \ '([+-]=[iI]nf)' 97syn match yamlNumber 98 \ display 99 \ '(NaN)' 100 101syn match yamlConstant 102 \ '<[~yn]>' 103syn keyword yamlConstant 104 \ true 105 \ True 106 \ TRUE 107 \ false 108 \ False 109 \ FALSE 110syn keyword yamlConstant 111 \ yes 112 \ Yes 113 \ on 114 \ ON 115 \ no 116 \ No 117 \ off 118 \ OFF 119syn keyword yamlConstant 120 \ null 121 \ Null 122 \ NULL 123 \ nil 124 \ Nil 125 \ NIL 126 127syn match yamlTimestamp 128 \ '\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\)\=' 129 130syn region yamlDocumentHeader 131 \ start='---' 132 \ end='$' 133 \ contains=yamlDirective 134syn match yamlDocumentEnd 135 \ '\.\.\.' 136 137syn match yamlDirective 138 \ contained 139 \ '%[^:]+:.+' 140 141syn match yamlIndentation 142 \ '^s*' 143 \ contains=yamlIndentationError 144 145syn match yamlIndentationError 146 \ 't' 147 148hi def link yamlTodo Todo 149hi def link yamlComment Comment 150hi def link yamlDocumentHeader PreProc 151hi def link yamlDocumentEnd PreProc 152hi def link yamlDirective Keyword 153hi def link yamlNodeProperty Type 154hi def link yamlAnchor Type 155hi def link yamlAlias Type 156hi def link yamlDelimiter Delimiter 157hi def link yamlBlock Operator 158hi def link yamlOperator Operator 159hi def link yamlKey Identifier 160hi def link yamlString String 161hi def link yamlEscape SpecialChar 162hi def link yamlSingleEscape SpecialChar 163hi def link yamlNumber Number 164hi def link yamlConstant Constant 165hi def link yamlTimestamp Number 166hi def link yamlIndentationError Error 167 168let b:current_syntax = "yaml" 169 170let &cpo = s:cpo_save 171unlet s:cpo_save 172