Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
yaml.vim276 linesDownload Raw Back to syntax
1" Vim syntax file2" Language:         YAML (YAML Ain't Markup Language) 1.23" Maintainer:       Nikolai Pavlov <zyx.vim@gmail.com>4" First author:     Nikolai Weibull <now@bitwi.se>5" Latest Revision:  2024-04-016 7if exists('b:current_syntax')8    finish9endif10 11let s:cpo_save = &cpo12set cpo&vim13 14" Choose the schema to use15" TODO: Validate schema16if !exists('b:yaml_schema')17    if exists('g:yaml_schema')18        let b:yaml_schema = g:yaml_schema19    else20        let b:yaml_schema = 'core'21    endif22endif23 24let s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)'25let s:ns_word_char = '[[:alnum:]_\-]'26let s:ns_uri_char  = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)'27let s:ns_tag_char  = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)'28let s:c_indicator      = '[\-?:,[\]{}#&*!|>''"%@`]'29let s:c_flow_indicator = '[,[\]{}]'30 31let s:ns_anchor_char = substitute(s:ns_char, '\v\C[\zs', '\=s:c_flow_indicator[1:-2]', '')32let s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '')33 34let s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]'35let s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]'36function s:SimplifyToAssumeAllPrintable(p)37    return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '')38endfunction39let s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char)40let s:ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:ns_anchor_char)41let s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator)42 43function s:SimplifyAdjacentCollections(p)44    return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g')45endfunction46let s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char)47let s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char)48 49let s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>'50let s:c_named_tag_handle     = '!'.s:ns_word_char.'\+!'51let s:c_secondary_tag_handle = '!!'52let s:c_primary_tag_handle   = '!'53let s:c_tag_handle = '\%('.s:c_named_tag_handle.54            \         '\|'.s:c_secondary_tag_handle.55            \         '\|'.s:c_primary_tag_handle.'\)'56let s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+'57let s:c_non_specific_tag = '!'58let s:c_ns_tag_property = s:c_verbatim_tag.59            \        '\|'.s:c_ns_shorthand_tag.60            \        '\|'.s:c_non_specific_tag61 62let s:c_ns_anchor_name = s:ns_anchor_char.'\+'63let s:c_ns_anchor_property =  '&'.s:c_ns_anchor_name64let s:c_ns_alias_node      = '\*'.s:c_ns_anchor_name65let s:c_ns_properties      = '\%(\%('.s:c_ns_tag_property.'\|'.s:c_ns_anchor_property.'\)\s\+\)\+'66 67let s:ns_directive_name = s:ns_char.'\+'68 69let s:ns_local_tag_prefix  = '!'.s:ns_uri_char.'*'70let s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*'71let s:ns_tag_prefix = s:ns_local_tag_prefix.72            \    '\|'.s:ns_global_tag_prefix73 74let s:ns_plain_safe_out = s:ns_char75let s:ns_plain_safe_in  = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)'76 77let s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '')78let s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '')79let s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '')80 81let s:ns_plain_first_in  = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)'82let s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)'83 84let s:ns_plain_char_in  = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)'85let s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)'86 87let s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*'88let s:ns_plain_in  = s:ns_plain_first_in  . s:ns_plain_char_in.'*'89 90 91syn keyword yamlTodo            contained TODO FIXME XXX NOTE92 93syn region  yamlComment         display oneline start='\%\(^\|\s\)#' end='$'94            \                   contains=yamlTodo95 96execute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '.97            \                            'end="$" '.98            \                            'contains=yamlTAGDirective,'.99            \                                     'yamlYAMLDirective,'.100            \                                     'yamlReservedDirective '.101            \                            'keepend'102 103syn match yamlTAGDirective /%TAG\ze\s/ contained nextgroup=yamlTagHandle skipwhite104execute 'syn match yamlTagHandle' string(s:c_tag_handle)  'contained nextgroup=yamlTagPrefix skipwhite'105execute 'syn match yamlTagPrefix' string(s:ns_tag_prefix) 'contained nextgroup=yamlComment skipwhite'106 107syn match yamlYAMLDirective /%YAML\ze\s/ contained nextgroup=yamlYAMLVersion skipwhite108syn match yamlYAMLVersion   /\d\+\.\d\+/ contained nextgroup=yamlComment skipwhite109 110execute 'syn match yamlReservedDirective contained nextgroup=yamlComment '.111            \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name)112 113syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"'114            \ contains=yamlEscape contained nextgroup=yamlFlowMappingDelimiter,yamlComment skipwhite115syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''"  end="'"116            \ contains=yamlSingleEscape contained nextgroup=yamlFlowMappingDelimiter,yamlComment skipwhite117syn match  yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'118syn match  yamlSingleEscape contained "''"119 120syn cluster yamlConstant contains=yamlBool,yamlNull121 122syn cluster yamlFlowNode contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection123syn cluster yamlFlowNode      add=yamlFlowMappingKey,yamlFlowMappingKeyStart,yamlFlowMappingMerge124syn cluster yamlFlowNode      add=@yamlConstant,yamlPlainScalar,yamlFloat,yamlComment125syn cluster yamlFlowNode      add=yamlTimestamp,yamlInteger,yamlAlias,yamlFlowNodeProperties126syn region yamlFlowMapping    matchgroup=yamlFlowIndicator start='{\@<!{{\@!' end='}' contains=@yamlFlowNode127syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlowNode128 129execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/'130execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/'131 132execute 'syn match yamlFlowMappingKey /'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:\%(\s\|$\)/ contained '.133            \'nextgroup=yamlFlowMappingDelimiter skipwhite'134syn match yamlFlowMappingKeyStart      /?/ contained nextgroup=@yamlFlowNode skipwhite135syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlFlowMappingDelimiter skipwhite136syn match yamlFlowMappingDelimiter     /:/ contained nextgroup=@yamlFlowNode skipwhite137execute 'syn match yamlFlowNodeProperties' string(s:c_ns_properties)138            \ 'contained contains=yamlNodeTag,yamlAnchor nextgroup=@yamlFlowNode skipwhite'139 140execute 'syn match yamlBlockMappingKey /^\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '.141            \'nextgroup=yamlBlockMappingDelimiter skipwhite'142execute 'syn match yamlBlockMappingKey        /'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '.143            \'nextgroup=yamlBlockMappingDelimiter skipwhite'144syn match yamlBlockMappingKeyString /^\s*\zs\%("\%([^"]\|\\"\)*"\|'\%([^']\|''\)*'\)\ze\s*:\%(\s\|$\)/145            \ contains=yamlFlowString nextgroup=yamlBlockMappingDelimiter skipwhite146syn match yamlBlockMappingKeyString        /\%("\%([^"]\|\\"\)*"\|'\%([^']\|''\)*'\)\ze\s*:\%(\s\|$\)/ contained147            \ contains=yamlFlowString nextgroup=yamlBlockMappingDelimiter skipwhite148syn match yamlBlockMappingMerge   /^\s*\zs<<\ze\s*:\%(\s\|$\)/           nextgroup=yamlBlockMappingDelimiter skipwhite149syn match yamlBlockMappingMerge          /<<\ze\s*:\%(\s\|$\)/ contained nextgroup=yamlBlockMappingDelimiter skipwhite150 151syn match yamlBlockMappingDelimiter    /^\s*\zs:\ze\%(\s\|$\)/           nextgroup=@yamlBlockNode skipwhite152syn match yamlBlockMappingDelimiter           /:\ze\%(\s\|$\)/ contained nextgroup=@yamlBlockNode skipwhite153syn match yamlBlockMappingKeyStart     /^\s*\zs?\ze\%(\s\|$\)/           nextgroup=@yamlBlockNode skipwhite154syn match yamlBlockMappingKeyStart            /?\ze\%(\s\|$\)/ contained nextgroup=@yamlBlockNode skipwhite155 156syn match yamlBlockCollectionItemStart /^\s*\zs-\ze\%(\s\|$\)/           nextgroup=@yamlBlockNode skipwhite157syn match yamlBlockCollectionItemStart        /-\ze\%(\s\|$\)/ contained nextgroup=@yamlBlockNode skipwhite158 159execute 'syn match yamlBlockNodeProperties' string(s:c_ns_properties)160            \ 'contained contains=yamlNodeTag,yamlAnchor nextgroup=@yamlFlowNode,yamlBlockScalarHeader skipwhite'161syn match yamlBlockScalarHeader '[|>]\%([1-9][+-]\|[+-]\?[1-9]\?\)\%(\s\+#.*\)\?$' contained162            \ contains=yamlComment nextgroup=yamlBlockString skipnl163syn region yamlBlockString start=/^\z(\s\+\)/ skip=/^$/ end=/^\%(\z1\)\@!/ contained164 165syn cluster yamlBlockNode contains=@yamlFlowNode,yamlBlockMappingKey,yamlBlockMappingKeyString,166            \yamlBlockMappingMerge,yamlBlockMappingKeyStart,yamlBlockCollectionItemStart,167            \yamlBlockNodeProperties,yamlBlockScalarHeader168 169syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey170 171let s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)')172if b:yaml_schema is# 'json'173    syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials174    syn keyword yamlBool true false175    exe 'syn match   yamlInteger /'.s:_bounder.'\@1<!\%(0\|-\=[1-9][0-9]*\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'176    exe 'syn match   yamlFloat   /'.s:_bounder.'\@1<!\%(-\=[1-9][0-9]*\%(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\|0\|-\=\.inf\|\.nan\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'177elseif b:yaml_schema is# 'core'178    syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials179    syn keyword yamlBool true True TRUE false False FALSE contained containedin=@yamlScalarWithSpecials180    exe 'syn match   yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'181    exe 'syn match   yamlInteger /'.s:_bounder.'\@1<!\%([-+]\=\%(\%(0\%(b[0-1_]\+\|o\?[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\|[1-9][0-9_]*\)\)'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'182    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'183elseif b:yaml_schema is# 'pyyaml'184    syn keyword yamlNull null Null NULL contained containedin=@yamlScalarWithSpecials185    syn keyword yamlBool true True TRUE false False FALSE yes Yes YES no No NO on On ON off Off OFF contained containedin=@yamlScalarWithSpecials186    exe 'syn match   yamlNull /'.s:_bounder.'\@1<!\~'.s:_bounder.'\@!/ contained containedin=@yamlScalarWithSpecials'187    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'188    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'189    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'190elseif b:yaml_schema is# 'failsafe'191    " Nothing192endif193unlet s:_bounder194 195 196execute 'syn match yamlNodeTag '.string(s:c_ns_tag_property)197execute 'syn match yamlAnchor  '.string(s:c_ns_anchor_property)198execute 'syn match yamlAlias   '.string(s:c_ns_alias_node)199 200syn match yamlDocumentStart '^---\ze\%(\s\|$\)'201syn match yamlDocumentEnd   '^\.\.\.\ze\%(\s\|$\)'202 203hi def link yamlTodo                     Todo204hi def link yamlComment                  Comment205 206hi def link yamlDocumentStart            PreProc207hi def link yamlDocumentEnd              PreProc208 209hi def link yamlDirectiveName            Keyword210 211hi def link yamlTAGDirective             yamlDirectiveName212hi def link yamlTagHandle                String213hi def link yamlTagPrefix                String214 215hi def link yamlYAMLDirective            yamlDirectiveName216hi def link yamlReservedDirective        Error217hi def link yamlYAMLVersion              Number218 219hi def link yamlString                   String220hi def link yamlFlowString               yamlString221hi def link yamlFlowStringDelimiter      yamlString222hi def link yamlEscape                   SpecialChar223hi def link yamlSingleEscape             SpecialChar224 225hi def link yamlMappingKey               Identifier226hi def link yamlMappingKeyStart          Special227hi def link yamlMappingMerge             Special228hi def link yamlKeyValueDelimiter        Special229 230hi def link yamlFlowIndicator            Special231hi def link yamlFlowMappingKey           yamlMappingKey232hi def link yamlFlowMappingKeyStart      yamlMappingKeyStart233hi def link yamlFlowMappingMerge         yamlMappingMerge234hi def link yamlFlowMappingDelimiter     yamlKeyValueDelimiter235 236hi def link yamlBlockMappingKey          yamlMappingKey237hi def link yamlBlockMappingKeyStart     yamlMappingKeyStart238hi def link yamlBlockMappingMerge        yamlMappingMerge239hi def link yamlBlockMappingDelimiter    yamlKeyValueDelimiter240hi def link yamlBlockCollectionItemStart Label241hi def link yamlBlockScalarHeader        Special242" We do not link yamlBlockString to yamlString, because yamlPlainScalar is243" not highlighted as string neighter, and also due to historical reasons.244" hi def link yamlBlockString              yamlString245 246hi def link yamlConstant                 Constant247 248hi def link yamlNull                     yamlConstant249hi def link yamlBool                     yamlConstant250 251hi def link yamlAnchor                   Type252hi def link yamlAlias                    Type253hi def link yamlNodeTag                  Type254 255hi def link yamlInteger                  Number256hi def link yamlFloat                    Float257hi def link yamlTimestamp                Number258 259let b:current_syntax = "yaml"260 261unlet s:ns_char s:ns_word_char s:ns_uri_char s:ns_tag_char s:c_indicator s:c_flow_indicator262            \ s:ns_anchor_char s:ns_char_without_c_indicator s:_collection s:_neg_collection263            \ s:c_verbatim_tag s:c_named_tag_handle s:c_secondary_tag_handle s:c_primary_tag_handle264            \ s:c_tag_handle s:c_ns_shorthand_tag s:c_non_specific_tag s:c_ns_tag_property265            \ s:c_ns_anchor_name s:c_ns_anchor_property s:c_ns_alias_node s:c_ns_properties266            \ s:ns_directive_name s:ns_local_tag_prefix s:ns_global_tag_prefix s:ns_tag_prefix267            \ s:ns_plain_safe_out s:ns_plain_safe_in s:ns_plain_safe_in_without_colhash s:ns_plain_safe_out_without_colhash268            \ 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_in269delfunction s:SimplifyAdjacentCollections270delfunction s:SimplifyToAssumeAllPrintable271 272let &cpo = s:cpo_save273unlet s:cpo_save274 275" vim: set et sw=4 sts=4 ts=8:276 
codekingpro/portable-devtools · Team Ai