runtime(vim): Update base-syntax, improve :syntax highlighting

Commit: 
https://github.com/vim/vim/commit/0fab89117fe409759e541087a4ef2ba77c9b23e5
Author: Doug Kearns <dougkea...@gmail.com>
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 <dougkea...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

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 <dougkea...@gmail.com>
-" 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 <dougkea...@gmail.com>
-" 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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1trjWl-002fXd-0z%40256bit.org.

Raspunde prin e-mail lui