]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(vim): Update base-syntax and generator, match all default highlight groups
authorDoug Kearns <dougkearns@gmail.com>
Thu, 3 Jul 2025 18:57:03 +0000 (20:57 +0200)
committerChristian Brabandt <cb@256bit.org>
Thu, 3 Jul 2025 18:59:11 +0000 (20:59 +0200)
- Match Conceal, ComplMatchIns, MsgArea, Terminal, and User[1-9]
  highlight groups.
- Generate the vimGroup syntax group from runtime/syncolor.vim.
- Match :SynColor and :SynLink as special user commands.

fixes #17467
closes: #17556

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/syntax/generator/gen_syntax_vim.vim
runtime/syntax/generator/vim.vim.base
runtime/syntax/testdir/dumps/vim_ex_highlight_00.dump
runtime/syntax/testdir/dumps/vim_ex_highlight_01.dump
runtime/syntax/testdir/dumps/vim_ex_highlight_02.dump
runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
runtime/syntax/testdir/dumps/vim_ex_highlight_04.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim_ex_highlight_05.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim_ex_highlight_06.dump [new file with mode: 0644]
runtime/syntax/testdir/input/vim_ex_highlight.vim
runtime/syntax/vim.vim

index af1b9b492c6849bc2c4abb193ef69229a5a63f58..78c71057e5317e62eacf51eb1d59ae7f8cd22d59 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file generator
 " Language:             Vim script
 " Maintainer:  Hirohito Higashi (h_east)
-" Last Change: 2025 Jun 24
+" Last Change: 2025 Jul 03
 
 let s:keepcpo= &cpo
 set cpo&vim
@@ -517,6 +517,33 @@ function s:parse_vim_function(li)
        endtry
 endfunc
 
+" ------------------------------------------------------------------------------
+function s:parse_vim_group(li)
+       try
+               let file_name = $VIM_SRCDIR . '/../runtime/syntax/syncolor.vim'
+               let item = {}
+
+               new
+               exec 'read ' . file_name
+               g!/^\s*Syn\%(Color\|Link\)/d
+               %s/^\s*Syn\%(Color\|Link\)\s\+\(\w\+\).*/\1/
+
+               for group in getline(1, line('$'))->sort()->uniq()
+                       let item.name = group
+                       call add(a:li, copy(item))
+               endfor
+
+               quit!
+
+               if empty(a:li)
+                       throw 'group is empty'
+               endif
+       catch /.*/
+               call s:err_gen('')
+               throw 'exit'
+       endtry
+endfunc
+
 " ------------------------------------------------------------------------------
 function s:parse_vim_hlgroup(li)
        try
@@ -568,15 +595,19 @@ function s:parse_vim_hlgroup(li)
 
                " The following highlight groups cannot be extracted from highlight.c
                " (TODO: extract from HIGHLIGHT_INIT ?)
-               let item.name = 'LineNrAbove'
-               let item.type = 'both'
-               call add(a:li, copy(item))
+               for group in ['ComplMatchIns', 'LineNrAbove', 'LineNrBelow', 'MsgArea', 'Terminal']
+                       let item.name = group
+                       let item.type = 'both'
+                       call add(a:li, copy(item))
+               endfor
 
-               let item.name = 'LineNrBelow'
-               let item.type = 'both'
-               call add(a:li, copy(item))
+               for n in range(1, 9)
+                       let item.name = 'User' .. n
+                       let item.type = 'both'
+                       call add(a:li, copy(item))
+               endfor
 
-               " "Conceal" is an option and cannot be used as keyword, so remove it.
+               " "Conceal" is a :syn option and cannot be used as keyword, so remove it.
                " (Separately specified as 'syn match' in vim.vim.base).
                call filter(a:li, {idx, val -> val.name !=# 'Conceal'})
 
@@ -799,6 +830,11 @@ function s:update_syntax_vim_file(vim_info)
                let lnum = s:search_and_check('vimAutoEvent', base_fname, str_info)
                let lnum = s:append_syn_any(lnum, str_info, li)
 
+               " vimGroup
+               let li = a:vim_info.group
+               let lnum = s:search_and_check('vimGroup', base_fname, str_info)
+               let lnum = s:append_syn_any(lnum, str_info, li)
+
                " vimHLGroup
                let li = a:vim_info.hlgroup
                let lnum = s:search_and_check('vimHLGroup', base_fname, str_info)
@@ -1001,6 +1037,7 @@ try
        let s:vim_info.cmd = []
        let s:vim_info.event = []
        let s:vim_info.func = []
+       let s:vim_info.group = []
        let s:vim_info.hlgroup = []
        let s:vim_info.compl_name = []
        let s:vim_info.addr_name = []
@@ -1013,6 +1050,7 @@ try
                silent call s:parse_vim_command(s:vim_info.cmd)
                silent call s:parse_vim_event(s:vim_info.event)
                silent call s:parse_vim_function(s:vim_info.func)
+               silent call s:parse_vim_group(s:vim_info.group)
                silent call s:parse_vim_hlgroup(s:vim_info.hlgroup)
                silent call s:parse_vim_complete_name(s:vim_info.compl_name)
                silent call s:parse_vim_addr_name(s:vim_info.addr_name)
index e01e5f9d0f96f3c31088520d96e1fd0fc0214176..08ddd11612e971fee61b6c1237fd7530b64bcf1a 100644 (file)
@@ -88,7 +88,7 @@ syn keyword   vimAutoEvent    contained       User    skipwhite nextgroup=vimUserAutoEvent
 syn match      vimUserAutoEvent        contained       "\<\h\w*\>"     skipwhite nextgroup=vimUserAutoEventSep,vimAutocmdMod,vimAutocmdBlock
 
 " Highlight commonly used Groupnames {{{2
-syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
+" GEN_SYN_VIM: vimGroup, START_STR='syn keyword vimGroup contained', END_STR=''
 
 " Default highlighting groups {{{2
 " GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
@@ -230,7 +230,7 @@ syn match   vimNumber       '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'    skipwhite nextgroup=@vi
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
 syn cluster vim9CmdList        contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep    "\\\@1<!|"      skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
 syn match vimCmdSep    ":\+"   skipwhite nextgroup=@vimCmdList,vimSubst1
@@ -1423,7 +1423,13 @@ syn match        vimSynMenuPath  contained       ".*\ze:"        nextgroup=vimSynMenuColon contains=v
 syn match      vimSynMenuColon contained       ":"     nextgroup=vimSynMenuName
 syn match      vimSynMenuName  contained       "\w\+"
 
-syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu
+" runtime/syntax/syncolor.vim
+syn match      vimSynColor             "\<SynColor\>"  skipwhite nextgroup=vimSynColorGroup
+syn match      vimSynColorGroup        contained       "\<\h\w*\>"     skipwhite nextgroup=vimHiKeyList        contains=vimGroup
+syn match      vimSynLink              "\<SynLink\>"   skipwhite nextgroup=vimSynLinkGroup
+syn match      vimSynLinkGroup contained       "\<\h\w*\>"     skipwhite nextgroup=vimGroup    contains=vimGroup
+
+syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynColor,vimSynLink,vimSynMenu
 
 " Errors And Warnings: {{{2
 " ====================
@@ -1671,8 +1677,9 @@ endif
 syn match      vimHighlight    "\<hi\%[ghlight]\>"     skipwhite nextgroup=vimHiBang,@vimHighlightCluster
 syn match      vimHiBang       contained       "\a\@1<=!"      skipwhite nextgroup=@vimHighlightCluster
 
-syn match      vimHiGroup      contained       "\i\+"
 syn case ignore
+" Conceal is a generated low-priority match
+syn match      vimHiGroup      contained       "\%(\<Conceal\>\)\@!\i\+"
 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
@@ -2499,6 +2506,8 @@ if !exists("skip_vim_syntax_inits")
  hi def link vim9Vim9Script    vimCommand
 
  hi def link vimCompilerSet    vimCommand
+ hi def link vimSynColor vimCommand
+ hi def link vimSynLink vimCommand
  hi def link vimSynMenu        vimCommand
  hi def link vimSynMenuPath    vimMenuName
 endif
index fb33314525cfa4bff19d0f4fd5e690aff4251b43..e58e4b0c8d47abdcce483d6d10ea5835ec681f28 100644 (file)
@@ -1,20 +1,20 @@
 >"+0#0000e05#ffffff0| |V|i|m| |:|h|i|g|h|l|i|g|h|t| |c|o|m@1|a|n|d| +0#0000000&@50
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|H|i|G|r|o|u|p| |T|o|d|o| +0#0000000&@34
+@75
 @75
 |"+0#0000e05&| |l|i|s|t| +0#0000000&@68
+@75
 |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@65
 |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@57
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|n|c|e|a|l| +0#0000000&@57
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@56
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@61
+@75
 @75
 |"+0#0000e05&| |r|e|s|e|t| +0#0000000&@67
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@59
 @75
-|"+0#0000e05&| |d|i|s|a|b|l|e| +0#0000000&@65
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@51
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@50
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@52
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@59
 @75
-|"+0#0000e05&| |a|d@1|/|m|o|d|i|f|y| +0#0000000&@62
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@41
-|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
+|"+0#0000e05&| |d|i|s|a|b|l|e| +0#0000000&@65
 @57|1|,|1| @10|T|o|p| 
index 6454f5561a78e7e4c7c5282de048eb154f727c1c..6a593e7745815e3c9221e43398603eddbf3ca6fe 100644 (file)
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |a|d@1|/|m|o|d|i|f|y| +0#0000000&@62
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@41
-|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
+|"+0#0000e05#ffffff0| |r|e|s|e|t| +0#0000000&@67
+@75
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&@59
+@75
+@75
+>"+0#0000e05&| |d|i|s|a|b|l|e| +0#0000000&@65
 @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|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
-|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F|o@1| |E+0#00e0003&|r@1|o|r|M|s|g| +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| |E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@46
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@51
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|C+0#00e0003&|o|n|c|e|a|l| +0#0000000&@51
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@50
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|c+0#00e0003&|l|e|a|r| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@55
 @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|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
-|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| |E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@39
-@57|1|9|,|1| @9|3|1|%| 
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@52
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|n|c|e|a|l| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@52
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&|N+0#00e0003&|O|N|E| +0#0000000&@51
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|N+0#00e0003&|O|N|E| +0#0000000&@56
+@75
+@75
+|"+0#0000e05&| |a|d@1|/|m|o|d|i|f|y| +0#0000000&@62
+@57|1|9|,|1| @9|1|4|%| 
index 3c71c7c6e85be1b58e2744563fefdf3c52d3a859..a06876473b5cc5e3dcc904d4f13a9dfe499eaf9f 100644 (file)
@@ -1,20 +1,20 @@
-|h+0#af5f00255#ffffff0|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| |E+0#00e0003&|r@1|o|r|M|s|g| +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| |E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@38
+|"+0#0000e05#ffffff0| |a|d@1|/|m|o|d|i|f|y| +0#0000000&@62
 @75
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@41
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|C+0#00e0003&|o|n|c|e|a|l| +0#0000000&|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@41
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@40
+>h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|c+0#00e0003&|t|e|r|m|=+0#0000000&|u+0#e000e06&|n|d|e|r|l|i|n|e| +0#0000000&@45
 @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
-> @74
-|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@58
+|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
+|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|n|c|e|a|l| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +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| +0#0000000&|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@38
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@42
 @75
-|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
-@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +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&@45
-@57|3|7|,|0|-|1| @7|7|5|%| 
+@75
+|"+0#0000e05&| |l|i|n|k| +0#0000000&@68
+@75
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|N+0#00e0003&|O|N|E| +0#0000000&@50
+@57|3|7|,|1| @9|3|4|%| 
index e306443892164b63048813f19f326c6269169d1f..d82e771d6d23e8b02cf0f18a5e6e570fa03f3385 100644 (file)
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +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&@45
+|h+0#af5f00255#ffffff0|i|g|h|l|i|g|h|t|!| +0#0000000&|l+0#00e0003&|i|n|k| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|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+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|E+0#00e0003&|r@1|o|r|M|s|g| +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#0000001#ffff4012|o@1| +0#0000000#ffffff0|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@46
 @75
-|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|o@1| @63
-@6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59
+>"+0#0000e05&| |d|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@60
 @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|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
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5@1|,|7| @9|B|o|t| 
+|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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#0000001#ffff4012|o@1| +0#0000000#ffffff0|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+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|E+0#00e0003&|r@1|o|r|M|s|g| +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#0000001#ffff4012|o@1| +0#0000000#ffffff0|E+0#00e0003&|r@1|o|r|M|s|g| +0#0000000&@38
+@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
+@75
+|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@57|5@1|,|1| @9|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_04.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_04.dump
new file mode 100644 (file)
index 0000000..72ff60d
--- /dev/null
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
+@6>\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@58
+@75
+|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
+@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
+@6|\+0#e000e06&| +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&@45
+@75
+|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#0000001#ffff4012|o@1| +0#0000000#ffffff0@63
+@6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59
+@75
+@57|7|3|,|7| @9|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_05.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_05.dump
new file mode 100644 (file)
index 0000000..50c41e1
--- /dev/null
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|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#0000001#ffff4012|o@1| +0#0000000#ffffff0@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
+@75
+> @74
+|"+0#0000e05&| |'|s|t|a|t|u|s|l|i|n|e|'| |u|s|e|r| |g|r|o|u|p|s| +0#0000000&@48
+@75
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|1| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|b+0#e000002&|l|a|c|k| +0#0000000&@45
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|2| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|b|l|u|e| +0#0000000&@42
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|3| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|g|r|e@1|n| +0#0000000&@41
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|4| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|c|y|a|n| +0#0000000&@42
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|5| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|r|e|d| +0#0000000&@43
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|6| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|m|a|g|e|n|t|a| +0#0000000&@39
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|7| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|y|e|l@1|o|w| +0#0000000&@40
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|8| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|l+0#e000002&|i|g|h|t|g|r|a|y| +0#0000000&@41
+|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&|U+0#00e0003&|s|e|r|9| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|d+0#e000002&|a|r|k|g|r|a|y| +0#0000000&@42
+@75
+@75
+@57|9|1|,|0|-|1| @7|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_06.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_06.dump
new file mode 100644 (file)
index 0000000..5f6791d
--- /dev/null
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|"+0#0000e05&| |:|t|e|r|m|i|n|a|l| |g|r|o|u|p| +0#0000000&@57
+@75
+|h+0#af5f00255&|i| +0#0000000&|T+0#00e0003&|e|r|m|i|n|a|l| +0#0000000&|c+0#00e0003&|t|e|r|m|b|g|=+0#0000000&|r+0#e000002&|e|d| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|b+0#e000002&|l|u|e| +0#0000000&@38
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|8|,|0|-|1| @6|B|o|t| 
index ecfea4adcb3ce95bedf7c3b05f8287669d5b4b50..51a618df4417e959ee394a409502ac3b0a01a0c4 100644 (file)
@@ -1,22 +1,49 @@
 " Vim :highlight command
+" VIM_TEST_SETUP hi link vimHiGroup Todo
+
 
 " list
+
 highlight
 highlight Comment
+highlight Conceal
+highlight ErrorMsg
+highlight Foo
+
 
 " reset
+
 highlight clear
 
+
 " disable
+
 highlight clear Comment
+highlight clear Conceal
 highlight clear ErrorMsg
+highlight clear Foo
+
 highlight Comment NONE
+highlight Conceal NONE
+highlight ErrorMsg NONE
+highlight Foo NONE
+
 
 " add/modify
+
 highlight Comment cterm=underline
+highlight Conceal cterm=underline
+highlight ErrorMsg cterm=underline
+highlight Foo cterm=underline
+
 highlight default Comment term=bold
+highlight default Conceal term=bold
+highlight default ErrorMsg term=bold
+highlight Foo ErrorMsg term=bold
+
 
 " link
+
 highlight link Foo Comment
 highlight! link Foo Comment
 highlight link Foo NONE
@@ -24,7 +51,9 @@ highlight! link Foo NONE
 highlight link Foo ErrorMsg
 highlight! link Foo ErrorMsg
 
+
 " default link
+
 highlight default link Foo Comment
 highlight! default link Foo Comment
 highlight default link Foo NONE
@@ -58,3 +87,22 @@ hi default link
 hi default link
       \ Foo
       \ Comment | echo "Foo"
+
+
+" 'statusline' user groups
+
+highlight User1 ctermfg=black
+highlight User2 ctermfg=darkblue
+highlight User3 ctermfg=darkgreen
+highlight User4 ctermfg=darkcyan
+highlight User5 ctermfg=darkred
+highlight User6 ctermfg=darkmagenta
+highlight User7 ctermfg=darkyellow
+highlight User8 ctermfg=lightgray
+highlight User9 ctermfg=darkgray
+
+
+" :terminal group
+
+hi Terminal ctermbg=red ctermfg=blue
+
index 78cf018a5f2fad6a873db831cd78d6f6a61d2f52..38dc61a2ebc67f35bfd46af074454d483d0248ec 100644 (file)
@@ -128,12 +128,13 @@ syn keyword       vimAutoEvent    contained       User    skipwhite nextgroup=vimUserAutoEvent
 syn match      vimUserAutoEvent        contained       "\<\h\w*\>"     skipwhite nextgroup=vimUserAutoEventSep,vimAutocmdMod,vimAutocmdBlock
 
 " Highlight commonly used Groupnames {{{2
-syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
+" GEN_SYN_VIM: vimGroup, START_STR='syn keyword vimGroup contained', END_STR=''
+syn keyword vimGroup contained Added Boolean Changed Character Comment Conditional Constant Debug Define Delimiter Error Exception Float Function Identifier Ignore Include Keyword Label Macro Number Operator PreCondit PreProc Removed Repeat Special SpecialChar SpecialComment Statement StorageClass String Structure Tag Todo Type Typedef Underlined
 
 " Default highlighting groups {{{2
 " GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
 syn keyword vimHLGroup contained ErrorMsg IncSearch ModeMsg NonText StatusLine StatusLineNC EndOfBuffer VertSplit VisualNOS DiffText DiffTextAdd PmenuSbar TabLineSel TabLineFill TabPanel TabPanelSel TabPanelFill Cursor lCursor QuickFixLine CursorLineSign CursorLineFold CurSearch PmenuKind PmenuKindSel PmenuMatch PmenuMatchSel PmenuExtra PmenuExtraSel PopupSelected MessageWindow PopupNotification Normal Directory LineNr CursorLineNr MoreMsg Question Search SpellBad SpellCap SpellRare SpellLocal PmenuThumb Pmenu PmenuSel SpecialKey Title WarningMsg WildMenu Folded FoldColumn SignColumn Visual DiffAdd DiffChange DiffDelete TabLine CursorColumn CursorLine ColorColumn MatchParen StatusLineTerm StatusLineTermNC ToolbarLine ToolbarButton Menu Tooltip Scrollbar CursorIM
-syn keyword vimHLGroup contained LineNrAbove LineNrBelow
+syn keyword vimHLGroup contained ComplMatchIns LineNrAbove LineNrBelow MsgArea Terminal User1 User2 User3 User4 User5 User6 User7 User8 User9
 syn match vimHLGroup contained "\<Conceal\>"
 syn case match
 
@@ -283,7 +284,7 @@ syn match   vimNumber       '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'    skipwhite nextgroup=@vi
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
 syn cluster vim9CmdList        contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep    "\\\@1<!|"      skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
 syn match vimCmdSep    ":\+"   skipwhite nextgroup=@vimCmdList,vimSubst1
@@ -1484,7 +1485,13 @@ syn match        vimSynMenuPath  contained       ".*\ze:"        nextgroup=vimSynMenuColon contains=v
 syn match      vimSynMenuColon contained       ":"     nextgroup=vimSynMenuName
 syn match      vimSynMenuName  contained       "\w\+"
 
-syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu
+" runtime/syntax/syncolor.vim
+syn match      vimSynColor             "\<SynColor\>"  skipwhite nextgroup=vimSynColorGroup
+syn match      vimSynColorGroup        contained       "\<\h\w*\>"     skipwhite nextgroup=vimHiKeyList        contains=vimGroup
+syn match      vimSynLink              "\<SynLink\>"   skipwhite nextgroup=vimSynLinkGroup
+syn match      vimSynLinkGroup contained       "\<\h\w*\>"     skipwhite nextgroup=vimGroup    contains=vimGroup
+
+syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynColor,vimSynLink,vimSynMenu
 
 " Errors And Warnings: {{{2
 " ====================
@@ -1732,8 +1739,9 @@ endif
 syn match      vimHighlight    "\<hi\%[ghlight]\>"     skipwhite nextgroup=vimHiBang,@vimHighlightCluster
 syn match      vimHiBang       contained       "\a\@1<=!"      skipwhite nextgroup=@vimHighlightCluster
 
-syn match      vimHiGroup      contained       "\i\+"
 syn case ignore
+" Conceal is a generated low-priority match
+syn match      vimHiGroup      contained       "\%(\<Conceal\>\)\@!\i\+"
 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
@@ -2560,6 +2568,8 @@ if !exists("skip_vim_syntax_inits")
  hi def link vim9Vim9Script    vimCommand
 
  hi def link vimCompilerSet    vimCommand
+ hi def link vimSynColor vimCommand
+ hi def link vimSynLink vimCommand
  hi def link vimSynMenu        vimCommand
  hi def link vimSynMenuPath    vimMenuName
 endif