0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00
vim/runtime/syntax/yaml.vim

172 lines
3.7 KiB
VimL
Raw Normal View History

2004-06-13 20:20:40 +00:00
" Vim syntax file
2005-06-29 22:40:58 +00:00
" Language: YAML (YAML Ain't Markup Language)
2006-04-21 22:12:41 +00:00
" Maintainer: Nikolai Weibull <now@bitwi.se>
2008-06-24 20:19:36 +00:00
" Latest Revision: 2007-06-27
2005-06-29 22:40:58 +00:00
if exists("b:current_syntax")
2004-06-13 20:20:40 +00:00
finish
endif
2005-06-29 22:40:58 +00:00
let s:cpo_save = &cpo
set cpo&vim
2008-06-24 20:19:36 +00:00
syn keyword yamlTodo
\ contained
\ TODO
\ FIXME
\ XXX
\ NOTE
syn region yamlComment
\ display
\ oneline
\ start='%(^|s)#'
\ end='$'
\ contains=yamlTodo,@Spell
syn match yamlNodeProperty
\ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)'
syn match yamlAnchor
\ '&.+'
syn match yamlAlias
\ '*.+'
syn match yamlDelimiter
\ '[-,:]'
syn match yamlBlock
\ '[[]{}>|]'
syn match yamlOperator
\ '[?+-]'
syn match yamlKey
\ 'w+(s+w+)*zes*:'
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
\ '\xx{2}'
syn match yamlEscape
\ contained
\ display
\ '\ux{4}'
syn match yamlEscape
\ contained
\ display
\ '\Ux{8}'
2004-06-13 20:20:40 +00:00
" TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
2008-06-24 20:19:36 +00:00
" XXX: Em, what is going on here? This can't be right. Leave out until we
" figure out what this is meant to do.
"syn match yamlEscape
" \ contained
" \ display
" \ '\%(rn|[rn])'
syn match yamlSingleEscape
\ contained
\ display
\ +''+
2004-06-13 20:20:40 +00:00
" TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
2008-06-24 20:19:36 +00:00
syn match yamlNumber
\ display
\ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
syn match yamlNumber
\ display
\ '0o+'
syn match yamlNumber
\ display
\ '0xx+'
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
\ '%[^:]+:.+'
syn match yamlIndentation
\ '^s*'
\ contains=yamlIndentationError
syn match yamlIndentationError
\ 't'
2005-06-29 22:40:58 +00:00
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
2008-06-24 20:19:36 +00:00
hi def link yamlIndentationError Error
2004-06-13 20:20:40 +00:00
let b:current_syntax = "yaml"
2005-06-29 22:40:58 +00:00
let &cpo = s:cpo_save
unlet s:cpo_save