From 2ceee22d25961dcc217eadbdffe6a4b043655d13 Mon Sep 17 00:00:00 2001 From: Yggdroot Date: Sat, 6 May 2017 22:12:40 +0800 Subject: [PATCH] refactor the code fix issue #193 --- after/plugin/indentLine.vim | 145 ++++++++++++++++++--- after/syntax/sass.vim | 104 --------------- after/syntax/yaml.vim | 251 ------------------------------------ 3 files changed, 130 insertions(+), 370 deletions(-) delete mode 100644 after/syntax/sass.vim delete mode 100644 after/syntax/yaml.vim diff --git a/after/plugin/indentLine.vim b/after/plugin/indentLine.vim index 532cefb..69c2c5c 100644 --- a/after/plugin/indentLine.vim +++ b/after/plugin/indentLine.vim @@ -10,10 +10,11 @@ if ! has("conceal") || exists("g:indentLine_loaded") endif let g:indentLine_loaded = 1 +let g:indentLine_newVersion = v:version > 704 || v:version == 704 && has("patch792") let g:indentLine_char = get(g:,'indentLine_char',(&encoding ==# "utf-8" && &term isnot# "linux" ? '¦' : '|')) let g:indentLine_first_char = get(g:,'indentLine_first_char',(&encoding ==# "utf-8" && &term isnot# "linux" ? '¦' : '|')) -let g:indentLine_indentLevel = get(g:,'indentLine_indentLevel',10) +let g:indentLine_indentLevel = get(g:,'indentLine_indentLevel',20) let g:indentLine_enabled = get(g:,'indentLine_enabled',1) let g:indentLine_fileType = get(g:,'indentLine_fileType',[]) let g:indentLine_fileTypeExclude = get(g:,'indentLine_fileTypeExclude',[]) @@ -80,11 +81,39 @@ endfunction "{{{1 function! s:IndentLinesEnable() function! s:IndentLinesEnable() + if g:indentLine_newVersion + if &diff + return + endif + + if exists("b:indentLine_enabled") && b:indentLine_enabled == 0 + return + endif + + if ! exists("w:indentLine_indentLineId") + let w:indentLine_indentLineId = [] + endif + + call s:SetConcealOption() + + if g:indentLine_showFirstIndentLevel + call add(w:indentLine_indentLineId, matchadd('Conceal', '^ ', 0, -1, {'conceal': g:indentLine_first_char})) + endif + + let space = &l:shiftwidth is 0 ? &l:tabstop : &l:shiftwidth + for i in range(space+1, space * g:indentLine_indentLevel + 1, space) + call add(w:indentLine_indentLineId, matchadd('Conceal', '^\s\+\zs\%'.i.'v ', 0, -1, {'conceal': g:indentLine_char})) + endfor + + return + endif + if exists("b:indentLine_enabled") && b:indentLine_enabled return else let b:indentLine_enabled = 1 endif + call s:SetConcealOption() let g:mysyntaxfile = g:indentLine_mysyntaxfile @@ -109,6 +138,17 @@ endfunction "{{{1 function! s:IndentLinesDisable() function! s:IndentLinesDisable() + if g:indentLine_newVersion + if exists("w:indentLine_indentLineId") && ! empty(w:indentLine_indentLineId) + for id in w:indentLine_indentLineId + call matchdelete(id) + endfor + let w:indentLine_indentLineId = [] + endif + + return + endif + let b:indentLine_enabled = 0 try syntax clear IndentLine @@ -119,6 +159,18 @@ endfunction "{{{1 function! s:IndentLinesToggle() function! s:IndentLinesToggle() + if g:indentLine_newVersion + if exists("w:indentLine_indentLineId") && ! empty(w:indentLine_indentLineId) + let b:indentLine_enabled = 0 + call s:IndentLinesDisable() + else + let b:indentLine_enabled = 1 + call s:IndentLinesEnable() + endif + + return + endif + if exists("b:indentLine_enabled") && b:indentLine_enabled call s:IndentLinesDisable() else @@ -132,6 +184,7 @@ function! s:ResetWidth(...) let &l:shiftwidth = a:1 endif + let b:indentLine_enabled = 1 call s:IndentLinesDisable() call s:IndentLinesEnable() endfunction @@ -156,17 +209,41 @@ function! s:Setup() call s:InitColor() endif - if g:indentLine_enabled + if g:indentLine_enabled || exists("b:indentLine_enabled") && b:indentLine_enabled call s:IndentLinesEnable() endif - if g:indentLine_leadingSpaceEnabled + if g:indentLine_leadingSpaceEnabled || exists("b:indentLine_leadingSpaceEnabled") && b:indentLine_leadingSpaceEnabled call s:LeadingSpaceEnable() endif endfunction "{{{1 function! s:LeadingSpaceEnable() function! s:LeadingSpaceEnable() + if g:indentLine_newVersion + if &diff + return + endif + + if exists("b:indentLine_leadingSpaceEnabled") && b:indentLine_leadingSpaceEnabled == 0 + return + endif + + if ! exists("w:indentLine_leadingSpaceId") + let w:indentLine_leadingSpaceId = [] + endif + + call s:SetConcealOption() + + call add(w:indentLine_leadingSpaceId, matchadd('Conceal', '\%(^\s*\)\@<= ', 0, -1, {'conceal': g:indentLine_leadingSpaceChar})) + + if exists("w:indentLine_indentLineId") && ! empty(w:indentLine_indentLineId) + call s:ResetWidth() + endif + + return + endif + if g:indentLine_faster echoerr 'LeadingSpace can not be shown when g:indentLine_faster == 1' return @@ -179,18 +256,43 @@ endfunction "{{{1 function! s:LeadingSpaceDisable() function! s:LeadingSpaceDisable() + if g:indentLine_newVersion + if exists("w:indentLine_leadingSpaceId") && ! empty(w:indentLine_leadingSpaceId) + for id in w:indentLine_leadingSpaceId + call matchdelete(id) + endfor + let w:indentLine_leadingSpaceId = [] + endif + + return + endif + let b:indentLine_leadingSpaceEnabled = 0 try syntax clear IndentLineLeadingSpace - catch /^Vim\%((\a\+)\)\=:E28/ " catch error E28 + catch /^Vim\%((\a\+)\)\=:E28/ " catch error E28 endtry endfunction "{{{1 function! s:LeadingSpaceToggle() function! s:LeadingSpaceToggle() + if g:indentLine_newVersion + if exists("w:indentLine_leadingSpaceId") && ! empty(w:indentLine_leadingSpaceId) + let b:indentLine_leadingSpaceEnabled = 0 + call s:LeadingSpaceDisable() + else + let b:indentLine_leadingSpaceEnabled = 1 + call s:LeadingSpaceEnable() + endif + + return + endif + if exists("b:indentLine_leadingSpaceEnabled") && b:indentLine_leadingSpaceEnabled + let b:indentLine_leadingSpaceEnabled = 0 call s:LeadingSpaceDisable() else + let b:indentLine_leadingSpaceEnabled = 1 call s:LeadingSpaceEnable() endif endfunction @@ -198,22 +300,35 @@ endfunction "{{{1 augroup indentLine augroup indentLine autocmd! - autocmd BufWinEnter * call Setup() - autocmd User * if exists("b:indentLine_enabled") || exists("b:indentLine_leadingSpaceEnabled") | - \ call Setup() | endif - autocmd BufRead,BufNewFile,ColorScheme,Syntax * call InitColor() - autocmd BufUnload * let b:indentLine_enabled = 0 | let b:indentLine_leadingSpaceEnabled = 0 - autocmd SourcePre $VIMRUNTIME/syntax/nosyntax.vim doautocmd indentLine BufUnload - autocmd FileChangedShellPost * doautocmd indentLine BufUnload | call Setup() + if g:indentLine_newVersion + autocmd BufRead,BufNewFile,ColorScheme,Syntax * call InitColor() + autocmd BufWinEnter * call IndentLinesDisable() | call LeadingSpaceDisable() | call Setup() + autocmd WinEnter * call Setup() + else + autocmd BufWinEnter * call Setup() + autocmd User * if exists("b:indentLine_enabled") || exists("b:indentLine_leadingSpaceEnabled") | + \ call Setup() | endif + autocmd BufRead,BufNewFile,ColorScheme,Syntax * call InitColor() + autocmd BufUnload * let b:indentLine_enabled = 0 | let b:indentLine_leadingSpaceEnabled = 0 + autocmd SourcePre $VIMRUNTIME/syntax/nosyntax.vim doautocmd indentLine BufUnload + autocmd FileChangedShellPost * doautocmd indentLine BufUnload | call Setup() + endif augroup END "{{{1 commands command! -nargs=? IndentLinesReset call ResetWidth() command! IndentLinesToggle call IndentLinesToggle() -command! IndentLinesEnable call IndentLinesEnable() -command! IndentLinesDisable call IndentLinesDisable() -command! LeadingSpaceEnable call LeadingSpaceEnable() -command! LeadingSpaceDisable call LeadingSpaceDisable() +if g:indentLine_newVersion + command! IndentLinesEnable let b:indentLine_enabled = 1 | call IndentLinesEnable() + command! IndentLinesDisable let b:indentLine_enabled = 0 | call IndentLinesDisable() + command! LeadingSpaceEnable let b:indentLine_leadingSpaceEnabled = 1 | call LeadingSpaceEnable() + command! LeadingSpaceDisable let b:indentLine_leadingSpaceEnabled = 0 | call LeadingSpaceDisable() +else + command! IndentLinesEnable call IndentLinesEnable() + command! IndentLinesDisable call IndentLinesDisable() + command! LeadingSpaceEnable call LeadingSpaceEnable() + command! LeadingSpaceDisable call LeadingSpaceDisable() +endif command! LeadingSpaceToggle call LeadingSpaceToggle() " vim:et:ts=4:sw=4:fdm=marker:fmr={{{,}}} diff --git a/after/syntax/sass.vim b/after/syntax/sass.vim deleted file mode 100644 index 7c7e708..0000000 --- a/after/syntax/sass.vim +++ /dev/null @@ -1,104 +0,0 @@ -" Vim syntax file -" Language: Sass -" Maintainer: Tim Pope -" Filenames: *.sass -" Last Change: 2013 May 30 -" -" Note: This syntax file has been fixed to keep compatible with IndentLine - -if exists('b:current_syntax') - if b:current_syntax == "sass" - syntax clear " clear the old syntax - elseif b:current_syntax == "fixed_sass" - finish - endif -endif - -runtime! syntax/css.vim - -syn case ignore - -syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp -syn cluster sassCssAttributes contains=css.*Attr,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp - -syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP - -syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition -syn match sassProperty "\%(^\s*\)\@<=\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute -syn match sassProperty "\%(^\s*\)\@<=\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute -syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation -syn match sassDefault "!default\>" contained -syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+" -syn match sassVariable "$[[:alnum:]_-]\+" -syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite -syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite - -syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained -syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained -syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained -syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained -syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained -syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained - -syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty - -syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute -syn match sassMixin "^=" nextgroup=sassMixinName skipwhite -syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite -syn match sassMixing "\%(^\s\+\)\@<=+" nextgroup=sassMixinName -syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite -syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" -syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite - -syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute -syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite -syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" - -syn match sassEscape "\%(^\s*\)\@<=\\" -syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId -syn match sassId "[[:alnum:]_-]\+" contained -syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass -syn match sassClass "[[:alnum:]_-]\+" contained -syn match sassAmpersand "&" - -" TODO: Attribute namespaces -" TODO: Arithmetic (including strings and concatenation) - -syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType -syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction -syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction -syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction -syn keyword sassFor from to through in contained - -syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained -syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell -syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell - -hi def link sassCssComment sassComment -hi def link sassComment Comment -hi def link sassDefault cssImportant -hi def link sassVariable Identifier -hi def link sassFunction Function -hi def link sassMixing PreProc -hi def link sassMixin PreProc -hi def link sassPlaceholder PreProc -hi def link sassExtend PreProc -hi def link sassFunctionDecl PreProc -hi def link sassReturn PreProc -hi def link sassTodo Todo -hi def link sassInclude Include -hi def link sassDebug sassControl -hi def link sassWarn sassControl -hi def link sassControl PreProc -hi def link sassFor PreProc -hi def link sassEscape Special -hi def link sassIdChar Special -hi def link sassClassChar Special -hi def link sassInterpolationDelimiter Delimiter -hi def link sassAmpersand Character -hi def link sassId Identifier -hi def link sassClass Type - -let b:current_syntax = "fixed_sass" - -" vim:set sw=2: diff --git a/after/syntax/yaml.vim b/after/syntax/yaml.vim deleted file mode 100644 index abbb31e..0000000 --- a/after/syntax/yaml.vim +++ /dev/null @@ -1,251 +0,0 @@ -" Vim syntax file -" Language: YAML (YAML Ain't Markup Language) 1.2 -" Maintainer: Nikolai Pavlov -" First author: Nikolai Weibull -" Latest Revision: 2015-03-28 -" -" Note: This syntax file has been fixed to keep compatible with IndentLine - -if exists('b:current_syntax') - if b:current_syntax == "yaml" - syntax clear " clear the old syntax - elseif b:current_syntax == "fixed_yaml" - finish - endif -endif - -let s:cpo_save = &cpo -set cpo&vim - -" Choose the schema to use -" TODO: Validate schema -if !exists('b:yaml_schema') - if exists('g:yaml_schema') - let b:yaml_schema = g:yaml_schema - else - let b:yaml_schema = 'core' - endif -endif - -let s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)' -let s:ns_word_char = '[[:alnum:]_\-]' -let s:ns_uri_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)' -let s:ns_tag_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)' -let s:c_ns_anchor_char = '\%([\n\r\uFEFF \t,[\]{}]\@!\p\)' -let s:c_indicator = '[\-?:,[\]{}#&*!|>''"%@`]' -let s:c_flow_indicator = '[,[\]{}]' - -let s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '') - -let s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]' -let s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]' -function s:SimplifyToAssumeAllPrintable(p) - return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '') -endfunction -let s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char) -let s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator) -let s:c_ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:c_ns_anchor_char) - -function s:SimplifyAdjacentCollections(p) - return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g') -endfunction -let s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char) -let s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char) - -let s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>' -let s:c_named_tag_handle = '!'.s:ns_word_char.'\+!' -let s:c_secondary_tag_handle = '!!' -let s:c_primary_tag_handle = '!' -let s:c_tag_handle = '\%('.s:c_named_tag_handle. - \ '\|'.s:c_secondary_tag_handle. - \ '\|'.s:c_primary_tag_handle.'\)' -let s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+' -let s:c_non_specific_tag = '!' -let s:c_ns_tag_property = s:c_verbatim_tag. - \ '\|'.s:c_ns_shorthand_tag. - \ '\|'.s:c_non_specific_tag - -let s:c_ns_anchor_name = s:c_ns_anchor_char.'\+' -let s:c_ns_anchor_property = '&'.s:c_ns_anchor_name -let s:c_ns_alias_node = '\*'.s:c_ns_anchor_name - -let s:ns_directive_name = s:ns_char.'\+' - -let s:ns_local_tag_prefix = '!'.s:ns_uri_char.'*' -let s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*' -let s:ns_tag_prefix = s:ns_local_tag_prefix. - \ '\|'.s:ns_global_tag_prefix - -let s:ns_plain_safe_out = s:ns_char -let s:ns_plain_safe_in = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)' - -let s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '') -let s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '') -let s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '') - -let s:ns_plain_first_in = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)' -let s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)' - -let s:ns_plain_char_in = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)' -let s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)' - -let s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*' -let s:ns_plain_in = s:ns_plain_first_in . s:ns_plain_char_in.'*' - - -syn keyword yamlTodo contained TODO FIXME XXX NOTE - -syn region yamlComment display oneline start='\%\(^\|\s\)\@<=#' end='$' - \ contains=yamlTodo - -execute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '. - \ 'end="$" '. - \ 'contains=yamlTAGDirective,'. - \ 'yamlYAMLDirective,'. - \ 'yamlReservedDirective '. - \ 'keepend' - -syn match yamlTAGDirective '%TAG\s\+' contained nextgroup=yamlTagHandle -execute 'syn match yamlTagHandle contained nextgroup=yamlTagPrefix '.string(s:c_tag_handle.'\s\+') -execute 'syn match yamlTagPrefix contained nextgroup=yamlComment ' . string(s:ns_tag_prefix) - -syn match yamlYAMLDirective '%YAML\s\+' contained nextgroup=yamlYAMLVersion -syn match yamlYAMLVersion '\d\+\.\d\+' contained nextgroup=yamlComment - -execute 'syn match yamlReservedDirective contained nextgroup=yamlComment '. - \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name) - -syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' - \ contains=yamlEscape - \ nextgroup=yamlKeyValueDelimiter -syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" - \ contains=yamlSingleEscape - \ nextgroup=yamlKeyValueDelimiter -syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)' -syn match yamlSingleEscape contained "''" - -syn match yamlBlockScalarHeader contained '\%(\s\+\)\@<=[|>]\%([+-]\=[1-9]\|[1-9]\=[+-]\)\=' - -syn cluster yamlConstant contains=yamlBool,yamlNull - -syn cluster yamlFlow contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection -syn cluster yamlFlow add=yamlFlowMappingKey,yamlFlowMappingMerge -syn cluster yamlFlow add=@yamlConstant,yamlPlainScalar,yamlFloat -syn cluster yamlFlow add=yamlTimestamp,yamlInteger,yamlMappingKeyStart -syn cluster yamlFlow add=yamlComment -syn region yamlFlowMapping matchgroup=yamlFlowIndicator start='{' end='}' contains=@yamlFlow -syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlow - -execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/' -execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/' - -syn match yamlMappingKeyStart '?\ze\s' -syn match yamlMappingKeyStart '?' contained - -let _selector = v:version > 703 ? '\%#=1' : '' -execute 'syn match yamlFlowMappingKey /'._selector.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '. - \'nextgroup=yamlKeyValueDelimiter' -syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlKeyValueDelimiter - -syn match yamlBlockCollectionItemStart '\%(^\s*\)\@<=-\%(\s\+-\)*\s' nextgroup=yamlBlockMappingKey,yamlBlockMappingMerge -" Use the old regexp engine, the NFA engine doesn't like all the \@ items. -execute 'syn match yamlBlockMappingKey /'._selector.'\%(^\s*\)\@<='.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '. - \'nextgroup=yamlKeyValueDelimiter' -execute 'syn match yamlBlockMappingKey /'._selector.'\%(\s*\)\@<='.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '. - \'nextgroup=yamlKeyValueDelimiter' -syn match yamlBlockMappingMerge /\%(^\s*\)\@<=<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter -syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained - -syn match yamlKeyValueDelimiter /\s*:/ contained -syn match yamlKeyValueDelimiter /\s*:/ contained - -syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey - -let s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)') -let _number = v:version > 703 ? '1' : '' -if b:yaml_schema is# 'json' - syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials - syn keyword yamlBool true false - exe 'syn match yamlInteger /'.s:_bounder.'\@'._number.'