xref: /vim-8.2.3635/runtime/syntax/yaml.vim (revision 8fe1000e)
1071d4279SBram Moolenaar" Vim syntax file
224ea3babSBram Moolenaar" Language:         YAML (YAML Ain't Markup Language) 1.2
324ea3babSBram Moolenaar" Maintainer:       Nikolai Pavlov <[email protected]>
424ea3babSBram Moolenaar" First author:     Nikolai Weibull <[email protected]>
55a5f4591SBram Moolenaar" Latest Revision:  2015-03-28
6*8fe1000eSBram Moolenaar" 		    removed duplicate yamlKeyValueDelimiter (pull #4799)
7071d4279SBram Moolenaar
824ea3babSBram Moolenaarif exists('b:current_syntax')
9071d4279SBram Moolenaar    finish
10071d4279SBram Moolenaarendif
11071d4279SBram Moolenaar
1242eeac35SBram Moolenaarlet s:cpo_save = &cpo
1342eeac35SBram Moolenaarset cpo&vim
1442eeac35SBram Moolenaar
155a5f4591SBram Moolenaar" Choose the schema to use
165a5f4591SBram Moolenaar" TODO: Validate schema
175a5f4591SBram Moolenaarif !exists('b:yaml_schema')
185a5f4591SBram Moolenaar  if exists('g:yaml_schema')
195a5f4591SBram Moolenaar    let b:yaml_schema = g:yaml_schema
205a5f4591SBram Moolenaar  else
215a5f4591SBram Moolenaar    let b:yaml_schema = 'core'
225a5f4591SBram Moolenaar  endif
235a5f4591SBram Moolenaarendif
245a5f4591SBram Moolenaar
255a5f4591SBram Moolenaarlet s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)'
265a5f4591SBram Moolenaarlet s:ns_word_char = '[[:alnum:]_\-]'
275a5f4591SBram Moolenaarlet s:ns_uri_char  = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)'
2824ea3babSBram Moolenaarlet s:ns_tag_char  = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)'
295a5f4591SBram Moolenaarlet s:c_ns_anchor_char = '\%([\n\r\uFEFF \t,[\]{}]\@!\p\)'
305a5f4591SBram Moolenaarlet s:c_indicator      = '[\-?:,[\]{}#&*!|>''"%@`]'
315a5f4591SBram Moolenaarlet s:c_flow_indicator = '[,[\]{}]'
325a5f4591SBram Moolenaar
335a5f4591SBram Moolenaarlet s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '')
345a5f4591SBram Moolenaar
355a5f4591SBram Moolenaarlet s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]'
365a5f4591SBram Moolenaarlet s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]'
375a5f4591SBram Moolenaarfunction s:SimplifyToAssumeAllPrintable(p)
385a5f4591SBram Moolenaar    return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '')
395a5f4591SBram Moolenaarendfunction
405a5f4591SBram Moolenaarlet s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char)
415a5f4591SBram Moolenaarlet s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator)
425a5f4591SBram Moolenaarlet s:c_ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:c_ns_anchor_char)
435a5f4591SBram Moolenaar
445a5f4591SBram Moolenaarfunction s:SimplifyAdjacentCollections(p)
455a5f4591SBram Moolenaar    return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g')
465a5f4591SBram Moolenaarendfunction
475a5f4591SBram Moolenaarlet s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char)
485a5f4591SBram Moolenaarlet s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char)
4924ea3babSBram Moolenaar
5024ea3babSBram Moolenaarlet s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>'
5124ea3babSBram Moolenaarlet s:c_named_tag_handle     = '!'.s:ns_word_char.'\+!'
5224ea3babSBram Moolenaarlet s:c_secondary_tag_handle = '!!'
5324ea3babSBram Moolenaarlet s:c_primary_tag_handle   = '!'
5424ea3babSBram Moolenaarlet s:c_tag_handle = '\%('.s:c_named_tag_handle.
5524ea3babSBram Moolenaar            \         '\|'.s:c_secondary_tag_handle.
5624ea3babSBram Moolenaar            \         '\|'.s:c_primary_tag_handle.'\)'
5724ea3babSBram Moolenaarlet s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+'
5824ea3babSBram Moolenaarlet s:c_non_specific_tag = '!'
5924ea3babSBram Moolenaarlet s:c_ns_tag_property = s:c_verbatim_tag.
6024ea3babSBram Moolenaar            \        '\|'.s:c_ns_shorthand_tag.
6124ea3babSBram Moolenaar            \        '\|'.s:c_non_specific_tag
6224ea3babSBram Moolenaar
6324ea3babSBram Moolenaarlet s:c_ns_anchor_name = s:c_ns_anchor_char.'\+'
6424ea3babSBram Moolenaarlet s:c_ns_anchor_property =  '&'.s:c_ns_anchor_name
6524ea3babSBram Moolenaarlet s:c_ns_alias_node      = '\*'.s:c_ns_anchor_name
6624ea3babSBram Moolenaar
6724ea3babSBram Moolenaarlet s:ns_directive_name = s:ns_char.'\+'
6824ea3babSBram Moolenaar
6924ea3babSBram Moolenaarlet s:ns_local_tag_prefix  = '!'.s:ns_uri_char.'*'
7024ea3babSBram Moolenaarlet s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*'
7124ea3babSBram Moolenaarlet s:ns_tag_prefix = s:ns_local_tag_prefix.
7224ea3babSBram Moolenaar            \    '\|'.s:ns_global_tag_prefix
7324ea3babSBram Moolenaar
7424ea3babSBram Moolenaarlet s:ns_plain_safe_out = s:ns_char
7524ea3babSBram Moolenaarlet s:ns_plain_safe_in  = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)'
7624ea3babSBram Moolenaar
775a5f4591SBram Moolenaarlet s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '')
785a5f4591SBram Moolenaarlet s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '')
795a5f4591SBram Moolenaarlet s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '')
8024ea3babSBram Moolenaar
815a5f4591SBram Moolenaarlet s:ns_plain_first_in  = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)'
825a5f4591SBram Moolenaarlet s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)'
835a5f4591SBram Moolenaar
845a5f4591SBram Moolenaarlet s:ns_plain_char_in  = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)'
855a5f4591SBram Moolenaarlet s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)'
8624ea3babSBram Moolenaar
8724ea3babSBram Moolenaarlet s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*'
8824ea3babSBram Moolenaarlet s:ns_plain_in  = s:ns_plain_first_in  . s:ns_plain_char_in.'*'
8924ea3babSBram Moolenaar
9024ea3babSBram Moolenaar
91e37d50a5SBram Moolenaarsyn keyword yamlTodo            contained TODO FIXME XXX NOTE
92071d4279SBram Moolenaar
9324ea3babSBram Moolenaarsyn region  yamlComment         display oneline start='\%\(^\|\s\)#' end='$'
9424ea3babSBram Moolenaar            \                   contains=yamlTodo
95071d4279SBram Moolenaar
9624ea3babSBram Moolenaarexecute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '.
9724ea3babSBram Moolenaar            \                            'end="$" '.
9824ea3babSBram Moolenaar            \                            'contains=yamlTAGDirective,'.
9924ea3babSBram Moolenaar            \                                     'yamlYAMLDirective,'.
10024ea3babSBram Moolenaar            \                                     'yamlReservedDirective '.
10124ea3babSBram Moolenaar            \                            'keepend'
102071d4279SBram Moolenaar
10324ea3babSBram Moolenaarsyn match yamlTAGDirective '%TAG\s\+' contained nextgroup=yamlTagHandle
10424ea3babSBram Moolenaarexecute 'syn match yamlTagHandle contained nextgroup=yamlTagPrefix '.string(s:c_tag_handle.'\s\+')
10524ea3babSBram Moolenaarexecute 'syn match yamlTagPrefix contained nextgroup=yamlComment ' . string(s:ns_tag_prefix)
106071d4279SBram Moolenaar
10724ea3babSBram Moolenaarsyn match yamlYAMLDirective '%YAML\s\+'  contained nextgroup=yamlYAMLVersion
10824ea3babSBram Moolenaarsyn match yamlYAMLVersion   '\d\+\.\d\+' contained nextgroup=yamlComment
109071d4279SBram Moolenaar
11024ea3babSBram Moolenaarexecute 'syn match yamlReservedDirective contained nextgroup=yamlComment '.
11124ea3babSBram Moolenaar            \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name)
112071d4279SBram Moolenaar
11324ea3babSBram Moolenaarsyn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"'
11442eeac35SBram Moolenaar            \ contains=yamlEscape
11524ea3babSBram Moolenaar            \ nextgroup=yamlKeyValueDelimiter
11624ea3babSBram Moolenaarsyn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''"  end="'"
11742eeac35SBram Moolenaar            \ contains=yamlSingleEscape
11824ea3babSBram Moolenaar            \ nextgroup=yamlKeyValueDelimiter
11924ea3babSBram Moolenaarsyn match  yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'
12024ea3babSBram Moolenaarsyn match  yamlSingleEscape contained "''"
121071d4279SBram Moolenaar
12224ea3babSBram Moolenaarsyn match yamlBlockScalarHeader contained '\s\+\zs[|>]\%([+-]\=[1-9]\|[1-9]\=[+-]\)\='
123071d4279SBram Moolenaar
1245a5f4591SBram Moolenaarsyn cluster yamlConstant contains=yamlBool,yamlNull
1255a5f4591SBram Moolenaar
12624ea3babSBram Moolenaarsyn cluster yamlFlow contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection
12724ea3babSBram Moolenaarsyn cluster yamlFlow      add=yamlFlowMappingKey,yamlFlowMappingMerge
1285a5f4591SBram Moolenaarsyn cluster yamlFlow      add=@yamlConstant,yamlPlainScalar,yamlFloat
12924ea3babSBram Moolenaarsyn cluster yamlFlow      add=yamlTimestamp,yamlInteger,yamlMappingKeyStart
13024ea3babSBram Moolenaarsyn cluster yamlFlow      add=yamlComment
13124ea3babSBram Moolenaarsyn region yamlFlowMapping    matchgroup=yamlFlowIndicator start='{' end='}' contains=@yamlFlow
13224ea3babSBram Moolenaarsyn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlow
13324ea3babSBram Moolenaar
13424ea3babSBram Moolenaarexecute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/'
13524ea3babSBram Moolenaarexecute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/'
13624ea3babSBram Moolenaar
13724ea3babSBram Moolenaarsyn match yamlMappingKeyStart '?\ze\s'
13824ea3babSBram Moolenaarsyn match yamlMappingKeyStart '?' contained
13924ea3babSBram Moolenaar
1405a5f4591SBram Moolenaarexecute 'syn match yamlFlowMappingKey /\%#=1'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '.
14124ea3babSBram Moolenaar            \'nextgroup=yamlKeyValueDelimiter'
14224ea3babSBram Moolenaarsyn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlKeyValueDelimiter
14324ea3babSBram Moolenaar
14424ea3babSBram Moolenaarsyn match yamlBlockCollectionItemStart '^\s*\zs-\%(\s\+-\)*\s' nextgroup=yamlBlockMappingKey,yamlBlockMappingMerge
1457cba6c06SBram Moolenaar" Use the old regexp engine, the NFA engine doesn't like all the \@ items.
1465a5f4591SBram Moolenaarexecute 'syn match yamlBlockMappingKey /\%#=1^\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '.
14724ea3babSBram Moolenaar            \'nextgroup=yamlKeyValueDelimiter'
1485a5f4591SBram Moolenaarexecute 'syn match yamlBlockMappingKey /\%#=1\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '.
14924ea3babSBram Moolenaar            \'nextgroup=yamlKeyValueDelimiter'
15024ea3babSBram Moolenaarsyn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter
15124ea3babSBram Moolenaarsyn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained
15224ea3babSBram Moolenaar
15324ea3babSBram Moolenaarsyn match   yamlKeyValueDelimiter /\s*:/ contained
15424ea3babSBram Moolenaar
1555a5f4591SBram Moolenaarsyn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey
156071d4279SBram Moolenaar
1575a5f4591SBram Moolenaarlet s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)')
1585a5f4591SBram Moolenaarif b:yaml_schema is# 'json'
1595a5f4591SBram Moolenaar    syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials
1605a5f4591SBram Moolenaar    syn keyword yamlBool true false
1615a5f4591SBram Moolenaar    exe 'syn match   yamlInteger /'.s:_bounder.'\@1<!\%(0\|-\=[1-9][0-9]*\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1625a5f4591SBram Moolenaar    exe 'syn match   yamlFloat   /'.s:_bounder.'\@1<!\%(-\=[1-9][0-9]*\%(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\|0\|-\=\.inf\|\.nan\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1635a5f4591SBram Moolenaarelseif b:yaml_schema is# 'core'
1645a5f4591SBram Moolenaar    syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials
1655a5f4591SBram Moolenaar    syn keyword yamlBool true True TRUE false False FALSE contained containedin=@yamlScalarWithSpecials
1665a5f4591SBram Moolenaar    exe 'syn match   yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1675a5f4591SBram Moolenaar    exe 'syn match   yamlInteger /'.s:_bounder.'\@1<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\|[1-9][0-9_]*\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1685a5f4591SBram Moolenaar    exe 'syn match   yamlFloat /'.s:_bounder.'\@1<!\%([+-]\=\%(\%(\d[0-9_]*\)\.[0-9_]*\%([eE][+-]\=\d\+\)\=\|\.[0-9_]\+\%([eE][-+]\=[0-9]\+\)\=\|\d[0-9_]*\%(:[0-5]\=\d\)\+\.[0-9_]*\|\.\%(inf\|Inf\|INF\)\)\|\%(\.\%(nan\|NaN\|NAN\)\)\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1695a5f4591SBram Moolenaarelseif b:yaml_schema is# 'pyyaml'
1705a5f4591SBram Moolenaar    syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials
1715a5f4591SBram Moolenaar    syn keyword yamlBool true True TRUE false False FALSE yes Yes YES no No NO on On ON off Off OFF contained containedin=@yamlScalarWithSpecials
1725a5f4591SBram Moolenaar    exe 'syn match   yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1735a5f4591SBram Moolenaar    exe 'syn match  yamlFloat /'.s:_bounder.'\@1<!\%(\v[-+]?%(\d[0-9_]*)\.[0-9_]*%([eE][-+]\d+)?|\.[0-9_]+%([eE][-+]\d+)?|[-+]?\d[0-9_]*%(\:[0-5]?\d)+\.[0-9_]*|[-+]?\.%(inf|Inf|INF)|\.%(nan|NaN|NAN)\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1745a5f4591SBram Moolenaar    exe 'syn match  yamlInteger /'.s:_bounder.'\@1<!\%(\v[-+]?0b[0-1_]+|[-+]?0[0-7_]+|[-+]?%(0|[1-9][0-9_]*)|[-+]?0x[0-9a-fA-F_]+|[-+]?[1-9][0-9_]*%(:[0-5]?\d)+\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1755a5f4591SBram Moolenaar    exe 'syn match  yamlTimestamp /'.s:_bounder.'\@1<!\%(\v\d\d\d\d\-\d\d\-\d\d|\d\d\d\d \-\d\d? \-\d\d?%([Tt]|[ \t]+)\d\d?\:\d\d \:\d\d %(\.\d*)?%([ \t]*%(Z|[-+]\d\d?%(\:\d\d)?))?\m\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'
1765a5f4591SBram Moolenaarelseif b:yaml_schema is# 'failsafe'
1775a5f4591SBram Moolenaar    " Nothing
1785a5f4591SBram Moolenaarendif
1795a5f4591SBram Moolenaarunlet s:_bounder
180071d4279SBram Moolenaar
181071d4279SBram Moolenaar
18224ea3babSBram Moolenaarexecute 'syn match yamlNodeTag '.string(s:c_ns_tag_property)
18324ea3babSBram Moolenaarexecute 'syn match yamlAnchor  '.string(s:c_ns_anchor_property)
18424ea3babSBram Moolenaarexecute 'syn match yamlAlias   '.string(s:c_ns_alias_node)
18524ea3babSBram Moolenaar
18624ea3babSBram Moolenaarsyn match yamlDocumentStart '^---\ze\%(\s\|$\)'
18724ea3babSBram Moolenaarsyn match yamlDocumentEnd   '^\.\.\.\ze\%(\s\|$\)'
188071d4279SBram Moolenaar
18942eeac35SBram Moolenaarhi def link yamlTodo                     Todo
19042eeac35SBram Moolenaarhi def link yamlComment                  Comment
19124ea3babSBram Moolenaar
19224ea3babSBram Moolenaarhi def link yamlDocumentStart            PreProc
19342eeac35SBram Moolenaarhi def link yamlDocumentEnd              PreProc
19424ea3babSBram Moolenaar
19524ea3babSBram Moolenaarhi def link yamlDirectiveName            Keyword
19624ea3babSBram Moolenaar
19724ea3babSBram Moolenaarhi def link yamlTAGDirective             yamlDirectiveName
19824ea3babSBram Moolenaarhi def link yamlTagHandle                String
19924ea3babSBram Moolenaarhi def link yamlTagPrefix                String
20024ea3babSBram Moolenaar
20124ea3babSBram Moolenaarhi def link yamlYAMLDirective            yamlDirectiveName
20224ea3babSBram Moolenaarhi def link yamlReservedDirective        Error
20324ea3babSBram Moolenaarhi def link yamlYAMLVersion              Number
20424ea3babSBram Moolenaar
20542eeac35SBram Moolenaarhi def link yamlString                   String
20624ea3babSBram Moolenaarhi def link yamlFlowString               yamlString
20724ea3babSBram Moolenaarhi def link yamlFlowStringDelimiter      yamlString
20842eeac35SBram Moolenaarhi def link yamlEscape                   SpecialChar
20942eeac35SBram Moolenaarhi def link yamlSingleEscape             SpecialChar
21024ea3babSBram Moolenaar
21124ea3babSBram Moolenaarhi def link yamlBlockCollectionItemStart Label
21224ea3babSBram Moolenaarhi def link yamlBlockMappingKey          Identifier
21324ea3babSBram Moolenaarhi def link yamlBlockMappingMerge        Special
21424ea3babSBram Moolenaar
21524ea3babSBram Moolenaarhi def link yamlFlowMappingKey           Identifier
21624ea3babSBram Moolenaarhi def link yamlFlowMappingMerge         Special
21724ea3babSBram Moolenaar
21824ea3babSBram Moolenaarhi def link yamlMappingKeyStart          Special
21924ea3babSBram Moolenaarhi def link yamlFlowIndicator            Special
22024ea3babSBram Moolenaarhi def link yamlKeyValueDelimiter        Special
22124ea3babSBram Moolenaar
22242eeac35SBram Moolenaarhi def link yamlConstant                 Constant
22324ea3babSBram Moolenaar
2245a5f4591SBram Moolenaarhi def link yamlNull                     yamlConstant
2255a5f4591SBram Moolenaarhi def link yamlBool                     yamlConstant
2265a5f4591SBram Moolenaar
22724ea3babSBram Moolenaarhi def link yamlAnchor                   Type
22824ea3babSBram Moolenaarhi def link yamlAlias                    Type
22924ea3babSBram Moolenaarhi def link yamlNodeTag                  Type
23024ea3babSBram Moolenaar
23124ea3babSBram Moolenaarhi def link yamlInteger                  Number
23224ea3babSBram Moolenaarhi def link yamlFloat                    Float
23342eeac35SBram Moolenaarhi def link yamlTimestamp                Number
234071d4279SBram Moolenaar
235071d4279SBram Moolenaarlet b:current_syntax = "yaml"
236071d4279SBram Moolenaar
2375a5f4591SBram Moolenaarunlet s:ns_word_char s:ns_uri_char s:c_verbatim_tag s:c_named_tag_handle s:c_secondary_tag_handle s:c_primary_tag_handle s:c_tag_handle s:ns_tag_char s:c_ns_shorthand_tag s:c_non_specific_tag s:c_ns_tag_property s:c_ns_anchor_char s:c_ns_anchor_name s:c_ns_anchor_property s:c_ns_alias_node s:ns_char s:ns_directive_name s:ns_local_tag_prefix s:ns_global_tag_prefix s:ns_tag_prefix s:c_indicator s:ns_plain_safe_out s:c_flow_indicator s:ns_plain_safe_in s:ns_plain_first_in s:ns_plain_first_out s:ns_plain_char_in s:ns_plain_char_out s:ns_plain_out s:ns_plain_in s:ns_char_without_c_indicator s:ns_plain_safe_in_without_colhash s:ns_plain_safe_out_without_colhash
2385a5f4591SBram Moolenaarunlet s:_collection s:_neg_collection
2395a5f4591SBram Moolenaardelfunction s:SimplifyAdjacentCollections
2405a5f4591SBram Moolenaardelfunction s:SimplifyToAssumeAllPrintable
24124ea3babSBram Moolenaar
24242eeac35SBram Moolenaarlet &cpo = s:cpo_save
24342eeac35SBram Moolenaarunlet s:cpo_save
244