runtime(vim): Update base-syntax, improve :syntax highlighting
Commit:
https://github.com/vim/vim/commit/0fab89117fe409759e541087a4ef2ba77c9b23e5
Author: Doug Kearns <[email protected]>
Date: Mon Mar 10 21:04:53 2025 +0100
runtime(vim): Update base-syntax, improve :syntax highlighting
- Highlight missing :syntax subcommands.
- Don't highlight user specified syntax group names.
closes: #16847
Signed-off-by: Doug Kearns <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/syntax/generator/vim.vim.base
b/runtime/syntax/generator/vim.vim.base
index ae2d97a08..6dff615bf 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <[email protected]>
-" Last Change: 2025 Mar 09
+" Last Change: 2025 Mar 10
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -1020,17 +1020,25 @@ syn region vimClusterName contained keepend
matchgroup=vimGroupName start="\h\w*
syn match vimGroupAdd contained keepend "\<add="
skipwhite skipnl nextgroup=vimGroupList
syn match vimGroupRem contained keepend "\<remove="
skipwhite skipnl nextgroup=vimGroupList
+" Syntax: conceal {{{2
+syn match vimSynType contained "\<conceal\>" skipwhite
nextgroup=vimSynConceal,vimSynConcealError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynconcealerror")
+ syn match vimSynConcealError contained "\i\+"
+endif
+syn keyword vimSynConceal contained on off
+
" Syntax: foldlevel {{{2
-syn keyword vimSynType contained foldlevel skipwhite
nextgroup=vimSynFoldMethod,vimSynFoldMethodError
-if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
- syn match vimSynFoldMethodError contained "\i\+"
+syn keyword vimSynType contained foldlevel skipwhite
nextgroup=vimSynFoldlevel,vimSynFoldlevelError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldlevelerror")
+ syn match vimSynFoldlevelError contained "\i\+"
endif
-syn keyword vimSynFoldMethod contained start minimum
+syn keyword vimSynFoldlevel contained start minimum
" Syntax: iskeyword {{{2
-syn keyword vimSynType contained iskeyword skipwhite
nextgroup=vimIskList
-syn match vimIskList contained '\S\+' contains=vimIskSep
-syn match vimIskSep contained ','
+syn keyword vimSynType contained iskeyword
skipwhite nextgroup=vimSynIskeyword
+syn keyword vimSynIskeyword contained clear
+syn match vimSynIskeyword contained "\S\+"
contains=vimSynIskeywordSep
+syn match vimSynIskeywordSep contained ","
" Syntax: include {{{2
syn keyword vimSynType contained include skipwhite
nextgroup=vimGroupList
@@ -1039,13 +1047,13 @@ syn keyword vimSynType contained include
skipwhite nextgroup=vimGroupList
syn cluster vimSynKeyGroup
contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite
nextgroup=vimSynKeyRegion
syn region vimSynKeyRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
-syn match vimSynKeyOpt contained
"\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+syn match vimSynKeyOpt contained
"\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
" Syntax: match {{{2
syn cluster vimSynMtchGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
syn keyword vimSynType contained match skipwhite
nextgroup=vimSynMatchRegion
syn region vimSynMatchRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
-syn match vimSynMtchOpt contained
"\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+syn match vimSynMtchOpt contained
"\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
" Syntax: off and on {{{2
syn keyword vimSynType contained enable list manual off
on reset
@@ -1054,34 +1062,49 @@ syn keyword vimSynType contained enable
list manual off on reset
syn cluster vimSynRegPatGroup
contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
syn cluster vimSynRegGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite
nextgroup=vimSynRegion
-syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip=+\\\|\\|
\s*\\|
\s*"\ + end="|\|$" contains=@vimSynRegGroup
-syn match vimSynRegOpt contained
"\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip=+\\\|\\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
+syn match vimSynRegOpt contained
"\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
syn match vimSynReg contained "\<\%(start\|skip\|end\)="
nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup="
nextgroup=vimGroup,vimHLGroup
syn region vimSynRegPat contained extend
start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\|\\z1\|
\s*\\|
\s*"\ / end="\z1" contains=@vimSynRegPatGroup skipwhite
nextgroup=vimSynPatMod,vimSynReg
-syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
-syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+syn match vimSynPatMod contained
"\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\="
+syn match vimSynPatMod contained
"\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=,"
nextgroup=vimSynPatMod
syn match vimSynPatMod contained "lc=\d\+"
syn match vimSynPatMod contained "lc=\d\+,"
nextgroup=vimSynPatMod
syn region vimSynPatRange contained start="\[" skip="\\\|\]"
end="]"
syn match vimSynNotPatRange contained "\\\|\\["
syn match vimMtchComment contained '"[^"]\+$'
+" Syntax: spell {{{2
+syn keyword vimSynType contained spell skipwhite
nextgroup=vimSynSpell,vimSynSpellError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynspellerror")
+ syn match vimSynSpellError contained "\i\+"
+endif
+syn keyword vimSynSpell contained default notoplevel toplevel
+
" Syntax: sync {{{2
" ============
-syn keyword vimSynType contained sync skipwhite
nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
+syn keyword vimSynType contained sync skipwhite
nextgroup=vimSyncClear,vimSyncMatch,vimSyncError,vimSyncRegion,vimSyncArgs
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
syn match vimSyncError contained "\i\+"
endif
-syn keyword vimSyncC contained ccomment clear
fromstart
+
+syn region vimSyncArgs contained start="\S" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$"
contains=vimSyncLines,vimSyncLinebreak,vimSyncLinecont,vimSyncFromstart,vimSyncCcomment
+
+syn keyword vimSyncCcomment contained ccomment skipwhite
nextgroup=vimGroupName
+syn keyword vimSyncClear contained clear skipwhite
nextgroup=vimSyncGroupName
+syn keyword vimSyncFromstart contained fromstart
syn keyword vimSyncMatch contained match skipwhite
nextgroup=vimSyncGroupName
syn keyword vimSyncRegion contained region skipwhite
nextgroup=vimSynReg
-syn match vimSyncLinebreak contained "\<linebreaks="
skipwhite nextgroup=vimNumber
+syn match vimSyncLinebreak contained "\<linebreaks="
nextgroup=vimNumber
syn keyword vimSyncLinecont contained linecont skipwhite
nextgroup=vimSynRegPat
-syn match vimSyncLines contained "\(min\|max\)\=lines="
nextgroup=vimNumber
-syn match vimSyncGroupName contained "\h\w*" skipwhite
nextgroup=vimSyncKey
-syn match vimSyncKey contained "\<groupthere\|grouphere\>"
skipwhite nextgroup=vimSyncGroup
-syn match vimSyncGroup contained "\h\w*" skipwhite
nextgroup=vimSynRegPat,vimSyncNone
+syn match vimSyncLines contained "\<lines="
nextgroup=vimNumber
+syn match vimSyncLines contained "\<minlines="
nextgroup=vimNumber
+syn match vimSyncLines contained "\<maxlines="
nextgroup=vimNumber
+syn match vimSyncGroupName contained "\<\h\w*\>"
skipwhite nextgroup=vimSyncKey
+syn match vimSyncKey contained "\<grouphere\>" skipwhite
nextgroup=vimSyncGroup
+syn match vimSyncKey contained "\<groupthere\>"
skipwhite nextgroup=vimSyncGroup
+syn match vimSyncGroup contained "\<\h\w*\>" skipwhite
nextgroup=vimSynRegPat,vimSyncNone
syn keyword vimSyncNone contained NONE
" Additional IsCommand: here by reasons of precedence {{{2
@@ -1099,6 +1122,7 @@ syn match vimHiBang contained " \@1<=!"
skipwhite nextgroup=@vimHighlightCluste
syn match vimHiGroup contained "\i\+"
syn case ignore
+syn keyword vimHiNone contained NONE
syn keyword vimHiAttrib contained none bold inverse italic
nocombine reverse standout strikethrough underline undercurl underdashed
underdotted underdouble
syn keyword vimFgBgAttrib contained none bg background fg foreground
syn case match
@@ -1107,14 +1131,14 @@ syn match vimHiAttribList contained
"\i\+,"he=e-1 contains=vimHiAttrib nextgroup
syn case ignore
syn keyword vimHiCtermColor contained black blue brown cyan darkblue
darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green
grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey
lightmagenta lightred lightyellow magenta red seagreen white yellow
syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
-
syn case match
+
syn match vimHiFontname contained "[a-zA-Z\-*]\+"
syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
syn match vimHiGuiRgb contained "#\x\{6}"
" Highlighting: hi group key=arg ... {{{2
-syn cluster vimHiCluster
contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
+syn cluster vimHiCluster
contains=vimGroup,vimHiGroup,vimHiNone,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
syn region vimHiKeyList contained start="\i\+" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|" excludenl end="$"
contains=@vimContinue,@vimHiCluster
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
syn match vimHiKeyError contained "\i\+="he=e-1
@@ -1418,7 +1442,12 @@ if !exists("skip_vim_syntax_inits")
hi def link vimShebangError vimError
hi def link vimSubstFlagErr vimError
hi def link vimSynCaseError vimError
- hi def link vimSynFoldMethodError vimError
+ hi def link vimSyncError vimError
+ hi def link vimSynConcealError vimError
+ hi def link vimSynError vimError
+ hi def link vimSynFoldlevelError vimError
+ hi def link vimSynIskeywordError vimError
+ hi def link vimSynSpellError vimError
hi def link vimBufnrWarn vimWarn
hi def link vim9TypeAliasError vimError
@@ -1485,7 +1514,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimFuncScope vimVarScope
hi def link vimFuncSID vimNotation
hi def link vimGroupAdd vimSynOption
- hi def link vimGroupName vimGroup
+ hi def link vimGroupName Normal
hi def link vimGroupRem vimSynOption
hi def link vimGroupSpecial Special
hi def link vimGroup Type
@@ -1504,11 +1533,11 @@ if !exists("skip_vim_syntax_inits")
hi def link vimHiGuiRgb vimNumber
hi def link vimHiGui vimHiTerm
hi def link vimHiNmbr Number
+ hi def link vimHiNone vimGroup
hi def link vimHiStartStop vimHiTerm
hi def link vimHiTerm Type
hi def link vimHLGroup vimGroup
hi def link vimInsert vimString
- hi def link vimIskSep Delimiter
hi def link vim9KeymapLineComment vimKeymapLineComment
hi def link vimKeymapLineComment vimComment
hi def link vimKeymapTailComment vimComment
@@ -1592,31 +1621,38 @@ if !exists("skip_vim_syntax_inits")
hi def link vimSubstSubstr SpecialChar
hi def link vimSubstTwoBS vimString
hi def link vimSubst vimCommand
- hi def link vimSynCaseError Error
hi def link vimSynCase Type
- hi def link vimSyncC Type
- hi def link vimSyncError Error
- hi def link vimSyncGroupName vimGroupName
+ hi def link vimSyncCcomment Type
+ hi def link vimSynCchar vimSynOption
+ hi def link vimSynCcharValue Character
+ hi def link vimSyncClear Type
+ hi def link vimSyncFromstart Type
hi def link vimSyncGroup vimGroupName
+ hi def link vimSyncGroupName vimGroupName
hi def link vimSyncKey Type
+ hi def link vimSyncLinebreak Type
+ hi def link vimSyncLinecont Type
+ hi def link vimSyncLines Type
+ hi def link vimSyncMatch Type
hi def link vimSyncNone Type
+ hi def link vimSynConceal Type
hi def link vimSynContains vimSynOption
- hi def link vimSynError Error
- hi def link vimSynFoldMethodError Error
- hi def link vimSynFoldMethod Type
+ hi def link vimSyncRegion Type
+ hi def link vimSynFoldlevel Type
+ hi def link vimSynIskeyword Type
+ hi def link vimSynIskeywordSep Delimiter
hi def link vimSynKeyContainedin vimSynContains
hi def link vimSynKeyOpt vimSynOption
- hi def link vimSynCchar vimSynOption
- hi def link vimSynCcharValue Character
hi def link vimSynMtchGrp vimSynOption
hi def link vimSynMtchOpt vimSynOption
hi def link vimSynNextgroup vimSynOption
hi def link vimSynNotPatRange vimSynRegPat
hi def link vimSynOption Special
hi def link vimSynPatRange vimString
+ hi def link vimSynReg Type
hi def link vimSynRegOpt vimSynOption
hi def link vimSynRegPat vimString
- hi def link vimSynReg Type
+ hi def link vimSynSpell Type
hi def link vimSyntax vimCommand
hi def link vimSynType vimSpecial
hi def link vimThrow vimCommand
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump
b/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump
index 7b0f19ffa..ff9c0c5db 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump
@@ -16,5 +16,5 @@
|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
+0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@39
@75
|"+0#0000e05&| |l|i|n|k| +0#0000000&@68
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&@48
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump
b/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump
index 95e478dee..e9c825710 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump
@@ -3,16 +3,16 @@
|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
+0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@39
@75
|"+0#0000e05&| |l|i|n|k| +0#0000000&@68
->h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&@48
-|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&@47
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@51
-|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@50
+>h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@48
+|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@47
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@51
+|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k|
+0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@50
@75
|"+0#0000e05&| |d|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@60
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&@40
-|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&@39
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E|
+0#0000000&@43
-|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&|N+0#00e0003&|O|N|E|
+0#0000000&@42
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@40
+|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F|o@1| |C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@39
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@43
+|h+0#af5f00255&|i|g|h|l|i|g|h|t|!| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t|
|l|i|n|k| +0#0000000&|F|o@1| |N+0#00e0003&|O|N|E| +0#0000000&@42
@75
@75
|"+0#0000e05&| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |a|n|d| |c|o|m@1|a|n|d|
|s|e|p|a|r|a|t|o|r| +0#0000000&@33
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump
b/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump
index 38313aa42..ce26bc1ad 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump
@@ -16,5 +16,5 @@
|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t|
+0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d|
+0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n|
+0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1|
+0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&|||
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@5
@75
|h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k|
+0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|F|o@1| @63
@57|3|7|,|7| @9|8|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
index 5d45c1989..0ba712e0e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
@@ -1,8 +1,8 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F|o@1| @63
@6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59
@75
|h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k|
+0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|F|o@1| @63
@6>\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|||
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@46
|~+0#4040ff13&| @73
|~| @73
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump
index 916f96dc4..7707bb33e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_00.dump
@@ -1,20 +1,20 @@
>"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d| +0#0000000&@53
@75
-|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l|
|c|o|m@1|e|n|t| +0#0000000&@20
-|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s|
|n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&|k|e|y|w|o|r|d|
|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
-|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
-|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"|
|t|a|i|l| |c|o|m@1|e|n|t| @43
@75
-|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
+|"+0#0000e05&| |:|s|y|n|-|c|a|s|e| +0#0000000&@63
@75
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
-@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e| +0#0000000&@63
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&@57
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|a|s|e|
+0#0000000&|i+0#00e0003&|g|n|o|r|e| +0#0000000&@56
+@75
+|"+0#0000e05&| |:|s|y|n|-|c|o|n|c|e|a|l| +0#0000000&@60
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l| +0#0000000&@60
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l|
+0#0000000&|o+0#00e0003&|n| +0#0000000&@57
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l|
+0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56
+@75
+|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l|
+0#0000000&@58
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l|
+0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52
@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
index bef158c76..0898a8f10 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|
+0#0000000&@59
-@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
-@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
-@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
-@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
-@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
-@57|1|8|,|7| @10|7|%|
+|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|c+0#00e0003&|o|n|c|e|a|l|
+0#0000000&|o+0#00e0003&|f@1| +0#0000000&@56
+@75
+|"+0#0000e05&| |:|s|y|n|-|f|o|l|d|l|e|v|e|l| +0#0000000&@58
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l|
+0#0000000&@58
+>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l|
+0#0000000&|s+0#00e0003&|t|a|r|t| +0#0000000&@52
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|f+0#00e0003&|o|l|d|l|e|v|e|l|
+0#0000000&|m+0#00e0003&|i|n|i|m|u|m| +0#0000000&@50
+@75
+|"+0#0000e05&| |:|s|y|n|-|i|s|k|e|y|w|o|r|d| +0#0000000&@58
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d|
+0#0000000&@58
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d|
+0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@52
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|i+0#00e0003&|s|k|e|y|w|o|r|d|
+0#0000000&|@+0#00e0003&|,+0#e000e06&|4+0#00e0003&|8|-|5|7|,+0#e000e06&|1+0#00e0003&|9|2|-|2|5@1|,+0#e000e06&|$+0#00e0003&|,+0#e000e06&|_+0#00e0003&|
+0#0000000&@38
+@75
+|"+0#0000e05&| |:|s|y|n|-|l|i|s|t| +0#0000000&@63
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&@63
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t| +0#0000000&|F|o@1|
@59
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t|
+0#0000000&|@|B|a|r| @58
+@57|1|9|,|1| @10|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
index bcc59d488..e86d0df0f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
-@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
-@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
-@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
+|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|l+0#00e0003&|i|s|t|
+0#0000000&|@|B|a|r| @58
@75
-|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55
-@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
-@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
-| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b|
+0#0000000&@53
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
-| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b|
+0#0000000&@53
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
-| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b|
+0#0000000&@53
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
-| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
-@57|3|6|,|7| @9|1|7|%|
+|"+0#0000e05&| |:|s|y|n|-|s|p|e|l@1| +0#0000000&@62
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1| +0#0000000&@62
+>s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1|
+0#0000000&|t+0#00e0003&|o|p|l|e|v|e|l| +0#0000000&@53
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1|
+0#0000000&|n+0#00e0003&|o|t|o|p|l|e|v|e|l| +0#0000000&@51
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|p|e|l@1|
+0#0000000&|d+0#00e0003&|e|f|a|u|l|t| +0#0000000&@54
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c@1|o|m@1|e|n|t| +0#0000000&@54
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&@54
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1| @50
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n
+|"| +0#0000000&@73
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&@1|o|m@1|e|n|t| +0#0000000&|F|o@1|
|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t
+@1|e|r|n|"| +0#0000000&@69
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53
+@57|3|7|,|1| @9|1|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
index 66ccef312..50b0c5073 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
@@ -1,20 +1,20 @@
-| +0#e000002#ffffff0@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
-@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
-@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
-@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
-@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
-@57|5|4|,|7| @9|2|8|%|
+|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|f|r|o|m|s|t|a|r|t| +0#0000000&@53
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t| +0#0000000&@53
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|f+0#00e0003&|r|o|m|s|t|a|r|t|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t| +0#0000000&|"+0#e000002&|p|a|t@1|e|r
+|n|"| +0#0000000&@72
+> @74
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|b|r|e|a|k|s| +0#0000000&@52
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@50
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|l|i|n|e|c|o|n|t| +0#0000000&@54
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@44
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&| +0#0000000&@7
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|(|m|i|n|||m|a|x|)|l|i|n|e|s| +0#0000000&@48
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39
+@57|5|2|,|0|-|1| @7|1|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
index 0cd153d56..0b45809b7 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
-@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
-@6>\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
-@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
-@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
-@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
-@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
+|s+0#af5f00255#ffffff0|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@39
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|i|n|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|m+0#00e0003&|a|x|l|i|n|e|s|=|4+0#e000002&|2|
+0#0000000&|l+0#00e0003&|i|n|e|b|r|e|a|k|s|=|1+0#e000002&|
+0#0000000&|l+0#00e0003&|i|n|e|c|o|n|t|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@7
+|"+0#0000e05&| |o|b|s|o|l|e|t|e| +0#0000000&@64
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|l+0#00e0003&|i|n|e|s|=|4+0#e000002&|2| +0#0000000&@54
@75
-|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&@45
-@57|7|2|,|7| @9|3|9|%|
+>"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|y|n|c| |p|a|t@1|e|r|n|s| +0#0000000&@49
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h|
|g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|t|e|s|t|F|o@1|
|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h|
|g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|t|e|s|t|B|a|r|
|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@14
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h|
|g+0#00e0003&|r|o|u|p|h|e|r|e| +0#0000000&@1|N|O|N|E|
|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|S|y|n|c|M|a|t|c|h|
|g+0#00e0003&|r|o|u|p|t|h|e|r|e| +0#0000000&|N|O|N|E|
|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@17
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c| |s|k|i|p| |g|r|o|u|p|s| +0#0000000&@51
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t|e|s|t|M|a|t|c|h|
|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@40
+|s+0#af5f00255&|y|n| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t|e|s|t|R|e|g|i|o|n|
|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e
+|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@63
+@75
+|"+0#0000e05&| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57
+@57|7|0|,|1| @9|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
index ff05fd1b5..ee3fe1913 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&@45
-@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
-@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&@47
-@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55
-@6|\+0#e000e06&|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"|
+0#0000000&@49
-@6>"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+|"+0#0000e05#ffffff0| |:|s|y|n|-|s|y|n|c|-|c|l|e|a|r| +0#0000000&@57
+@75
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@57
+|s+0#af5f00255&|y|n|t|a|x| +0#0000000&|s+0#00e0003&|y|n|c|
+0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|F|o@1| @53
+@75
+>"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t|s| |a|r|e| |n|o|t|
|e|x|p|l|i|c|i|t|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |:|s|y|n|t|a|x|,| |s|e@1|
|:|h|e|l|p| |:|c|o|m@1|e|n|t
+|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t|e|s|t|M|a|t|c|h| |"+0#e000002&|p|a|t@1|e|r|n|"|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l|
|c|o|m@1|e|n|t| +0#0000000&@20
+|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s|
|n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|K|e|y|w|o|r|d| |k|e|y|w|o|r|d|
|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
+|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t|e|s|t|R|e|g|i|o|n|
|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
+|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"|
|t|a|i|l| |c|o|m@1|e|n|t| @43
+@75
+|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
-@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
-@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@57|9|0|,|7| @9|5|0|%|
+@57|8|7|,|1| @9|3|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
index 05cfd6419..f9e0a5185 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e|
+0#0000000&@57
+| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6>\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
-@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
-@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
-@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
-@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
-@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
-@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
-@57|1|0|8|,|7| @8|6|1|%|
+@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+@57|1|0|4|,|7| @8|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
index d442dd291..648169124 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l|
+0#0000000&@57
-@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6>"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3|
@13
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
+> @74
+|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t|e|s|t|M|a|t|c|h| @55
+@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
+@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
+| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
-@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&|
+0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
-@75
-@75
-|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
-@75
-@57|1|2|6|,|7| @8|7|1|%|
+@57|1|2@1|,|0|-|1| @6|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
index 84862c7c3..0fb66ca32 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|1| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|2| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|3| +0#0000000&|k|e|y|w|o|r|d| @45
->s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|4| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|5| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|6| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|7| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|8| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|9| +0#0000000&|k|e|y|w|o|r|d| @45
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
+| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
-@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
-@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
-@57|1|4@1|,|1| @8|8|2|%|
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+@57|1|4|0|,|7| @8|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
index 0b5e3d7ab..dfae08ddf 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,|
@49
-@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r|
|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
-@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
-@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l|
+0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
+@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
+@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
+@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
+@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
+@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
@75
-@75
-|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
-@75
-|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:|
+0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41
-|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d|
|n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x|
|c|o|m@1|a|n|d|s| +0#0000000&@7
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n|!|
+0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)|
+0#0000000&@46
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
-@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r|
+0#0000000&|i+0#af5f00255&|n|
+0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&|
|'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
-@4|"+0#0000e05&| |.@2| +0#0000000&@65
-@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@57|1|6|2|,|7| @8|9|3|%|
+|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&@45
+@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+@57|1|5|8|,|7| @8|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
index 1627f394f..07ea1c2b1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f|
|v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39
-> @74
-|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53
-@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s|
|r|e|g|i|o|n| +0#0000000&@35
-@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49
-@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"|
+0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"|
+0#0000000&@57
-@75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|8|0|,|0|-|1| @6|B|o|t|
+| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&@47
+@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55
+@6|\+0#e000e06&|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"|
+0#0000000&@49
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+@57|1|7|6|,|7| @8|6|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump
new file mode 100644
index 000000000..f7dce6fb2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_11.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n|
+0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6>\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
+@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
+@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
+@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
+@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
+@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
+@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@57|1|9|4|,|7| @8|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump
new file mode 100644
index 000000000..f71771096
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_12.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3|
@13
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t|e|s|t|C|l|u|s|t|e|r| @51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
+@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&|
+0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
+@75
+@75
+|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45
+@57|2|1|2|,|7| @8|8|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump
new file mode 100644
index 000000000..ab8d1a8a8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_13.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|0| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|1| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|2| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|3| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|4| |k|e|y|w|o|r|d| @45
+>s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|5| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|6| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|7| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|8| |k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|N|e|x|t|9| |k|e|y|w|o|r|d| @45
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t|e|s|t|K|e|y|w|o|r|d| @51
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@57|2|3|0|,|1| @8|8@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump
new file mode 100644
index 000000000..ee8798c7b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_14.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r|
|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
+@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
+@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
+@75
+@75
+|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
+@75
+|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:|
+0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41
+|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d|
|n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x|
|c|o|m@1|a|n|d|s| +0#0000000&@7
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n|!|
+0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)|
+0#0000000&@46
+@2|"+0#0000e05&| |.@2| +0#0000000&@67
+@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r|
+0#0000000&|i+0#af5f00255&|n|
+0#0000000&|[+0#e000e06&|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&|
|'+0#e000002&|z|s|h|'|]+0#e000e06&| +0#0000000&@25
+@4|"+0#0000e05&| |.@2| +0#0000000&@65
+@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
+@2|"+0#0000e05&| |.@2| +0#0000000&@67
+@57|2|4|8|,|7| @8|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump
b/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump
new file mode 100644
index 000000000..64a53aabe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_15.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|"+0#0000e05&| |.@2| +0#0000000&@67
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|"+0#0000e05&| |e|a|r|l|y| |t|e|r|m|i|n|a|t|i|o|n| |o|f|
|v|i|m|S|y|n|R|e|g|i|o|n| +0#0000000&@39
+@75
+>s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t|e|s|t|R|e|g|i|o|n| @53
+@6|"+0#0000e05&|\| ||| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |a|r|g|s|
|r|e|g|i|o|n| +0#0000000&@35
+@6|"+0#0000e05&|\| |s|t|a|r|t|=|"|f|o@1|\|||b|a|r|"| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|"|
+0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|"|
+0#0000000&@57
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|6@1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/input/vim_ex_syntax.vim
b/runtime/syntax/testdir/input/vim_ex_syntax.vim
index 5611e6aaf..5dc2cacf3 100644
--- a/runtime/syntax/testdir/input/vim_ex_syntax.vim
+++ b/runtime/syntax/testdir/input/vim_ex_syntax.vim
@@ -1,5 +1,90 @@
" Vim :syntax command
+
+" :syn-case
+
+syntax case
+syntax case match
+syntax case ignore
+
+" :syn-conceal
+
+syntax conceal
+syntax conceal on
+syntax conceal off
+
+" :syn-foldlevel
+
+syntax foldlevel
+syntax foldlevel start
+syntax foldlevel minimum
+
+" :syn-iskeyword
+
+syntax iskeyword
+syntax iskeyword clear
+syntax iskeyword @,48-57,192-255,$,_
+
+" :syn-list
+
+syntax list
+syntax list Foo
+syntax list @Bar
+
+" :syn-spell
+
+syntax spell
+syntax spell toplevel
+syntax spell notoplevel
+syntax spell default
+
+" :syn-sync-ccomment
+
+syntax sync ccomment
+syntax sync ccomment Foo
+syntax sync ccomment minlines=42 maxlines=42 linebreaks=1 linecont "pattern"
+syntax sync ccomment Foo minlines=42 maxlines=42 linebreaks=1 linecont
"pattern"
+
+" :syn-sync-fromstart
+
+syntax sync fromstart
+syntax sync fromstart minlines=42 maxlines=42 linebreaks=1 linecont "pattern"
+
+" :syn-sync-linebreaks
+
+syntax sync linebreaks=1
+syntax sync linebreaks=1 minlines=42 maxlines=42 linecont "pattern"
+
+" :syn-sync-linecont
+
+syntax sync linecont "pattern"
+syntax sync linecont "pattern" minlines=42 maxlines=42 linebreaks=1
+
+" :syn-sync-(min|max)lines
+
+syntax sync minlines=42 maxlines=42
+syntax sync minlines=42 maxlines=42 linebreaks=1 linecont "pattern"
+" obsolete
+syntax sync lines=42
+
+" :syn-sync sync patterns
+
+syntax sync match testSyncMatch grouphere testFoo "pattern"
+syntax sync match testSyncMatch groupthere testBar "pattern"
+syntax sync match testSyncMatch grouphere NONE "pattern"
+syntax sync match testSyncMatch groupthere NONE "pattern"
+
+" :syn-sync skip groups
+
+syn sync match testMatch "pattern"
+syn sync region testRegion start="start-pattern" skip="skip-pattern"
end="end-pattern"
+
+" :syn-sync-clear
+
+syntax sync clear
+syntax sync clear Foo
+
+" tail comments are not explicitly supported by :syntax, see :help :comment
syn match testMatch "pattern" contained " tail comment
" NOTE: comments not currently supported
syn keyword testKeyword keyword contained " tail comment
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 4ccaa62c9..f537e0397 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <[email protected]>
-" Last Change: 2025 Mar 09
+" Last Change: 2025 Mar 10
" Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY.
@@ -1078,17 +1078,25 @@ syn region vimClusterName contained keepend
matchgroup=vimGroupName start="\h\w*
syn match vimGroupAdd contained keepend "\<add="
skipwhite skipnl nextgroup=vimGroupList
syn match vimGroupRem contained keepend "\<remove="
skipwhite skipnl nextgroup=vimGroupList
+" Syntax: conceal {{{2
+syn match vimSynType contained "\<conceal\>" skipwhite
nextgroup=vimSynConceal,vimSynConcealError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynconcealerror")
+ syn match vimSynConcealError contained "\i\+"
+endif
+syn keyword vimSynConceal contained on off
+
" Syntax: foldlevel {{{2
-syn keyword vimSynType contained foldlevel skipwhite
nextgroup=vimSynFoldMethod,vimSynFoldMethodError
-if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
- syn match vimSynFoldMethodError contained "\i\+"
+syn keyword vimSynType contained foldlevel skipwhite
nextgroup=vimSynFoldlevel,vimSynFoldlevelError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldlevelerror")
+ syn match vimSynFoldlevelError contained "\i\+"
endif
-syn keyword vimSynFoldMethod contained start minimum
+syn keyword vimSynFoldlevel contained start minimum
" Syntax: iskeyword {{{2
-syn keyword vimSynType contained iskeyword skipwhite
nextgroup=vimIskList
-syn match vimIskList contained '\S\+' contains=vimIskSep
-syn match vimIskSep contained ','
+syn keyword vimSynType contained iskeyword
skipwhite nextgroup=vimSynIskeyword
+syn keyword vimSynIskeyword contained clear
+syn match vimSynIskeyword contained "\S\+"
contains=vimSynIskeywordSep
+syn match vimSynIskeywordSep contained ","
" Syntax: include {{{2
syn keyword vimSynType contained include skipwhite
nextgroup=vimGroupList
@@ -1097,13 +1105,13 @@ syn keyword vimSynType contained include
skipwhite nextgroup=vimGroupList
syn cluster vimSynKeyGroup
contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite
nextgroup=vimSynKeyRegion
syn region vimSynKeyRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
-syn match vimSynKeyOpt contained
"\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+syn match vimSynKeyOpt contained
"\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
" Syntax: match {{{2
syn cluster vimSynMtchGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
syn keyword vimSynType contained match skipwhite
nextgroup=vimSynMatchRegion
syn region vimSynMatchRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
-syn match vimSynMtchOpt contained
"\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+syn match vimSynMtchOpt contained
"\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
" Syntax: off and on {{{2
syn keyword vimSynType contained enable list manual off
on reset
@@ -1112,34 +1120,49 @@ syn keyword vimSynType contained enable
list manual off on reset
syn cluster vimSynRegPatGroup
contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
syn cluster vimSynRegGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite
nextgroup=vimSynRegion
-syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip=+\\\|\\|
\s*\\|
\s*"\ + end="|\|$" contains=@vimSynRegGroup
-syn match vimSynRegOpt contained
"\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip=+\\\|\\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
+syn match vimSynRegOpt contained
"\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
syn match vimSynReg contained "\<\%(start\|skip\|end\)="
nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup="
nextgroup=vimGroup,vimHLGroup
syn region vimSynRegPat contained extend
start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\|\\z1\|
\s*\\|
\s*"\ / end="\z1" contains=@vimSynRegPatGroup skipwhite
nextgroup=vimSynPatMod,vimSynReg
-syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
-syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
+syn match vimSynPatMod contained
"\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\="
+syn match vimSynPatMod contained
"\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=,"
nextgroup=vimSynPatMod
syn match vimSynPatMod contained "lc=\d\+"
syn match vimSynPatMod contained "lc=\d\+,"
nextgroup=vimSynPatMod
syn region vimSynPatRange contained start="\[" skip="\\\|\]"
end="]"
syn match vimSynNotPatRange contained "\\\|\\["
syn match vimMtchComment contained '"[^"]\+$'
+" Syntax: spell {{{2
+syn keyword vimSynType contained spell skipwhite
nextgroup=vimSynSpell,vimSynSpellError
+if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynspellerror")
+ syn match vimSynSpellError contained "\i\+"
+endif
+syn keyword vimSynSpell contained default notoplevel toplevel
+
" Syntax: sync {{{2
" ============
-syn keyword vimSynType contained sync skipwhite
nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
+syn keyword vimSynType contained sync skipwhite
nextgroup=vimSyncClear,vimSyncMatch,vimSyncError,vimSyncRegion,vimSyncArgs
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
syn match vimSyncError contained "\i\+"
endif
-syn keyword vimSyncC contained ccomment clear
fromstart
+
+syn region vimSyncArgs contained start="\S" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$"
contains=vimSyncLines,vimSyncLinebreak,vimSyncLinecont,vimSyncFromstart,vimSyncCcomment
+
+syn keyword vimSyncCcomment contained ccomment skipwhite
nextgroup=vimGroupName
+syn keyword vimSyncClear contained clear skipwhite
nextgroup=vimSyncGroupName
+syn keyword vimSyncFromstart contained fromstart
syn keyword vimSyncMatch contained match skipwhite
nextgroup=vimSyncGroupName
-syn keyword vimSyncRegion contained region skipwhite
nextgroup=vimSynReg
-syn match vimSyncLinebreak contained "\<linebreaks="
skipwhite nextgroup=vimNumber
+syn keyword vimSyncRegion contained region skipwhite
nextgroup=vimSynRegion
+syn match vimSyncLinebreak contained "\<linebreaks="
nextgroup=vimNumber
syn keyword vimSyncLinecont contained linecont skipwhite
nextgroup=vimSynRegPat
-syn match vimSyncLines contained "\(min\|max\)\=lines="
nextgroup=vimNumber
-syn match vimSyncGroupName contained "\h\w*" skipwhite
nextgroup=vimSyncKey
-syn match vimSyncKey contained "\<groupthere\|grouphere\>"
skipwhite nextgroup=vimSyncGroup
-syn match vimSyncGroup contained "\h\w*" skipwhite
nextgroup=vimSynRegPat,vimSyncNone
+syn match vimSyncLines contained "\<lines="
nextgroup=vimNumber
+syn match vimSyncLines contained "\<minlines="
nextgroup=vimNumber
+syn match vimSyncLines contained "\<maxlines="
nextgroup=vimNumber
+syn match vimSyncGroupName contained "\<\h\w*\>"
skipwhite nextgroup=vimSyncKey
+syn match vimSyncKey contained "\<grouphere\>" skipwhite
nextgroup=vimSyncGroup
+syn match vimSyncKey contained "\<groupthere\>"
skipwhite nextgroup=vimSyncGroup
+syn match vimSyncGroup contained "\<\h\w*\>" skipwhite
nextgroup=vimSynRegPat,vimSyncNone
syn keyword vimSyncNone contained NONE
" Additional IsCommand: here by reasons of precedence {{{2
@@ -1157,6 +1180,7 @@ syn match vimHiBang contained " \@1<=!"
skipwhite nextgroup=@vimHighlightCluste
syn match vimHiGroup contained "\i\+"
syn case ignore
+syn keyword vimHiNone contained NONE
syn keyword vimHiAttrib contained none bold inverse italic
nocombine reverse standout strikethrough underline undercurl underdashed
underdotted underdouble
syn keyword vimFgBgAttrib contained none bg background fg foreground
syn case match
@@ -1165,14 +1189,14 @@ syn match vimHiAttribList contained
"\i\+,"he=e-1 contains=vimHiAttrib nextgroup
syn case ignore
syn keyword vimHiCtermColor contained black blue brown cyan darkblue
darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green
grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey
lightmagenta lightred lightyellow magenta red seagreen white yellow
syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
-
syn case match
+
syn match vimHiFontname contained "[a-zA-Z\-*]\+"
syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
syn match vimHiGuiRgb contained "#\x\{6}"
" Highlighting: hi group key=arg ... {{{2
-syn cluster vimHiCluster
contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
+syn cluster vimHiCluster
contains=vimGroup,vimHiGroup,vimHiNone,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
syn region vimHiKeyList contained start="\i\+" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|" excludenl end="$"
contains=@vimContinue,@vimHiCluster
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
syn match vimHiKeyError contained "\i\+="he=e-1
@@ -1476,7 +1500,12 @@ if !exists("skip_vim_syntax_inits")
hi def link vimShebangError vimError
hi def link vimSubstFlagErr vimError
hi def link vimSynCaseError vimError
- hi def link vimSynFoldMethodError vimError
+ hi def link vimSyncError vimError
+ hi def link vimSynConcealError vimError
+ hi def link vimSynError vimError
+ hi def link vimSynFoldlevelError vimError
+ hi def link vimSynIskeywordError vimError
+ hi def link vimSynSpellError vimError
hi def link vimBufnrWarn vimWarn
hi def link vim9TypeAliasError vimError
@@ -1543,7 +1572,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimFuncScope vimVarScope
hi def link vimFuncSID vimNotation
hi def link vimGroupAdd vimSynOption
- hi def link vimGroupName vimGroup
+ hi def link vimGroupName Normal
hi def link vimGroupRem vimSynOption
hi def link vimGroupSpecial Special
hi def link vimGroup Type
@@ -1562,11 +1591,11 @@ if !exists("skip_vim_syntax_inits")
hi def link vimHiGuiRgb vimNumber
hi def link vimHiGui vimHiTerm
hi def link vimHiNmbr Number
+ hi def link vimHiNone vimGroup
hi def link vimHiStartStop vimHiTerm
hi def link vimHiTerm Type
hi def link vimHLGroup vimGroup
hi def link vimInsert vimString
- hi def link vimIskSep Delimiter
hi def link vim9KeymapLineComment vimKeymapLineComment
hi def link vimKeymapLineComment vimComment
hi def link vimKeymapTailComment vimComment
@@ -1650,31 +1679,38 @@ if !exists("skip_vim_syntax_inits")
hi def link vimSubstSubstr SpecialChar
hi def link vimSubstTwoBS vimString
hi def link vimSubst vimCommand
- hi def link vimSynCaseError Error
hi def link vimSynCase Type
- hi def link vimSyncC Type
- hi def link vimSyncError Error
- hi def link vimSyncGroupName vimGroupName
+ hi def link vimSyncCcomment Type
+ hi def link vimSynCchar vimSynOption
+ hi def link vimSynCcharValue Character
+ hi def link vimSyncClear Type
+ hi def link vimSyncFromstart Type
hi def link vimSyncGroup vimGroupName
+ hi def link vimSyncGroupName vimGroupName
hi def link vimSyncKey Type
+ hi def link vimSyncLinebreak Type
+ hi def link vimSyncLinecont Type
+ hi def link vimSyncLines Type
+ hi def link vimSyncMatch Type
hi def link vimSyncNone Type
+ hi def link vimSynConceal Type
hi def link vimSynContains vimSynOption
- hi def link vimSynError Error
- hi def link vimSynFoldMethodError Error
- hi def link vimSynFoldMethod Type
+ hi def link vimSyncRegion Type
+ hi def link vimSynFoldlevel Type
+ hi def link vimSynIskeyword Type
+ hi def link vimSynIskeywordSep Delimiter
hi def link vimSynKeyContainedin vimSynContains
hi def link vimSynKeyOpt vimSynOption
- hi def link vimSynCchar vimSynOption
- hi def link vimSynCcharValue Character
hi def link vimSynMtchGrp vimSynOption
hi def link vimSynMtchOpt vimSynOption
hi def link vimSynNextgroup vimSynOption
hi def link vimSynNotPatRange vimSynRegPat
hi def link vimSynOption Special
hi def link vimSynPatRange vimString
+ hi def link vimSynReg Type
hi def link vimSynRegOpt vimSynOption
hi def link vimSynRegPat vimString
- hi def link vimSynReg Type
+ hi def link vimSynSpell Type
hi def link vimSyntax vimCommand
hi def link vimSynType vimSpecial
hi def link vimThrow vimCommand
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1trjWl-002fXd-0z%40256bit.org.