]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(vim): Update base-syntax, match :CompilerSet and :SynMenu commands
authorDoug Kearns <dougkearns@gmail.com>
Sun, 23 Feb 2025 14:48:52 +0000 (15:48 +0100)
committerChristian Brabandt <cb@256bit.org>
Sun, 23 Feb 2025 14:48:52 +0000 (15:48 +0100)
closes: #16713

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/syntax/generator/vim.vim.base
runtime/syntax/testdir/dumps/vim_ex_set_01.dump
runtime/syntax/testdir/dumps/vim_ex_set_02.dump
runtime/syntax/testdir/dumps/vim_ex_set_03.dump
runtime/syntax/testdir/dumps/vim_ex_set_04.dump
runtime/syntax/testdir/dumps/vim_ex_set_05.dump
runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump [new file with mode: 0644]
runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump [new file with mode: 0644]
runtime/syntax/testdir/input/vim_ex_set.vim
runtime/syntax/testdir/input/vim_predefined_user_commands.vim [new file with mode: 0644]
runtime/syntax/vim.vim

index 009b2083b98fc10b97d47116688149104b8c4e82..47e22400c0fc158fc4674724937c69d19e281622 100644 (file)
@@ -2,7 +2,7 @@
 " Language:       Vim script
 " Maintainer:     Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "         Doug Kearns <dougkearns@gmail.com>
-" Last Change:    2025 Feb 16
+" Last Change:    2025 Feb 23
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -202,7 +202,7 @@ syn match   vimNumber       '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'    skipwhite nextgroup=vim
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
 syn cluster vim9CmdList        contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep    "[:|]\+"        skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimCount     contained       "\d\+"
@@ -904,6 +904,19 @@ syn match  vimMap  "\<map\%(\s\+(\)\@="    skipwhite nextgroup=vimMapBang,vimMapMod,v
 " User Command Highlighting: {{{2
 syn match vimUsrCmd    '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
 
+" Vim user commands
+
+" Compiler plugins
+syn match      vimCompilerSet  "\<CompilerSet\>"       skipwhite nextgroup=vimSetRegion
+
+" runtime/makemenu.vim
+syn match      vimSynMenu              "\<SynMenu\>"   skipwhite nextgroup=vimSynMenuPath
+syn match      vimSynMenuPath  contained       ".*\ze:"        nextgroup=vimSynMenuColon contains=vimMenuNotation
+syn match      vimSynMenuColon contained       ":"     nextgroup=vimSynMenuName
+syn match      vimSynMenuName  contained       "\w\+"
+
+syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu
+
 " Errors And Warnings: {{{2
 " ====================
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
@@ -1628,6 +1641,10 @@ if !exists("skip_vim_syntax_inits")
  hi def link vim9Var   vimCommand
  hi def link vim9Vim9ScriptArg Special
  hi def link vim9Vim9Script    vimCommand
+
+ hi def link vimCompilerSet    vimCommand
+ hi def link vimSynMenu        vimCommand
+ hi def link vimSynMenuPath    vimMenuName
 endif
 
 " Current Syntax Variable: {{{2
index 012170ecce587fa8bb061c426c01d7cf938bc5f4..bb5989d86110982ef30848efcc5cf5ca5af87733 100644 (file)
@@ -17,4 +17,4 @@
 |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|++0#af5f00255&|=|9+0#0000000&|6| @61
 |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|^+0#af5f00255&|=|2+0#0000000&| @62
 |s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|-+0#af5f00255&|=|9+0#0000000&|6| @61
-@57|1|9|,|1| @9|1|7|%| 
+@57|1|9|,|1| @9|1|5|%| 
index d6328d2dba30bdb1b361f9bf208ce521711e79cb..81f282cea920e55299cf868c320091a160b424cd 100644 (file)
@@ -17,4 +17,4 @@
 |"+0#0000e05&| |:|h|e|l|p| |o|p|t|i|o|n|-|b|a|c|k|s|l|a|s|h| +0#0000000&@50
 @75
 |"+0#0000e05&| |W|h|e|n| |s|e|t@1|i|n|g| |o|p|t|i|o|n|s| |u|s|i|n|g| |||:|l|e|t||| |a|n|d| |||l|i|t|e|r|a|l|-|s|t|r|i|n|g|||,| |y|o|u| |n|e@1|d| |t|o| |u|s|@+0#4040ff13&@2
-| +0#0000000&@56|3|7|,|0|-|1| @7|4|1|%| 
+| +0#0000000&@56|3|7|,|0|-|1| @7|3|7|%| 
index fb013bc992245f88822dd230e6d7f58771203007..0f3d999fc7deb4320c44b573ad7dc86cee8d23ed 100644 (file)
@@ -17,4 +17,4 @@
 |"+0#0000e05&| |T|h|i|s| |e|x|a|m|p|l|e| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|||t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@15
 |s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|i|t|l|e|s|t|r|i|n|g|=+0#af5f00255&|h+0#0000000&|i|\|||t|h|e|r|e| @49
 |"+0#0000e05&| |T|h|i|s| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|"| +0#0000e05&|a|n|d| |'|i|c|o|n|s|t|r|i|n|g|'| |t|o| |"+0#e000002&|t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@1
-@57|5|4|,|1| @9|6|5|%| 
+@57|5|4|,|1| @9|5|9|%| 
index 6280f6af4e4385264ec54ba6852a02292afee8dd..f67789f8016c8ff45d396613ddd338088f3fb4a5 100644 (file)
@@ -17,4 +17,4 @@
 |s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @54
 @6|"+0#0000e05&|\| |d|e|f| |i|s| |t|h|e| |'|d|e|f|i|n|e|'| |o|p|t|i|o|n| +0#0000000&@39
 @6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|e|f|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @51
-@57|7|2|,|1| @9|8|9|%| 
+@57|7|2|,|1| @9|8|0|%| 
index 3f675294e624e20f9089ed62211a16d27bc54af6..4a884247359aa85aaf6de38fafce3142f884e1d1 100644 (file)
@@ -7,14 +7,14 @@
 |s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&| +0#0000000&@65
 @6|"+0#0000e05&|\| |d|e|f| |i|s| |a| |'|p|a|t|h|'| |d|i|r|e|c|t|o|r|y| |v|a|l|u|e| +0#0000000&@34
 @6|\+0#e000e06&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f| @60
+@75
+@75
+|"+0#0000e05&| |C|o|m|p|i|l|e|r|S|e|t| +0#0000000&@61
+@75
+|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|a+0#0000000&|n|t| @51
+|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|e+0#e000e06&|r@1|o|r|f|o|r|m|a|t|=+0#af5f00255&|\+0#0000000&| |%|#|[|%|.|%|#|]|\| |%|#|%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|%+0#0000000&|v|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|\+0#0000000&| |%|t|%|[|%|^|:+0#e000e06&|]+0#0000000&|%|#|:+0#e000e06&|%+0#0000000&|m|,+0#e000e06&
+| +0#0000000&@3|\+0#e000e06&|%+0#0000000&|A|\| |%|#|[|%|.|%|#|]|\| |%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|\+0#0000000&| |%|m|,+0#e000e06&|%+0#0000000&|-|Z|\| |%|#|[|%|.|%|#|]|\| |%|p|^|,+0#e000e06&|%+0#0000000&|C|\| |%|#|[|%|.|%|#|]|\| |%|#|%|m| @7
+@75
 |~+0#4040ff13&| @73
 |~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
 | +0#0000000&@56|9|0|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_00.dump
new file mode 100644 (file)
index 0000000..8d0e81c
--- /dev/null
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |p|r|e|d|e|f|i|n|e|d| |u|s|e|r| |c|o|m@1|a|n|d|s| +0#0000000&@44
+@75
+@75
+|"+0#0000e05&| |:|C|o|m|p|i|l|e|r|S|e|t| |-| |r|u|n|t|i|m|e|/|c|o|m|p|i|l|e|r|/| +0#0000000&@40
+@75
+|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|a+0#0000000&|n|t| @51
+|C+0#af5f00255&|o|m|p|i|l|e|r|S|e|t| +0#0000000&|e+0#e000e06&|r@1|o|r|f|o|r|m|a|t|=+0#af5f00255&|\+0#0000000&| |%|#|[|%|.|%|#|]|\| |%|#|%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|%+0#0000000&|v|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|%+0#0000000&|*|\@1|d|:+0#e000e06&|\+0#0000000&| |%|t|%|[|%|^|:+0#e000e06&|]+0#0000000&|%|#|:+0#e000e06&|%+0#0000000&|m|,+0#e000e06&
+| +0#0000000&@3|\+0#e000e06&|%+0#0000000&|A|\| |%|#|[|%|.|%|#|]|\| |%|f|:+0#e000e06&|%+0#0000000&|l|:+0#e000e06&|\+0#0000000&| |%|m|,+0#e000e06&|%+0#0000000&|-|Z|\| |%|#|[|%|.|%|#|]|\| |%|p|^|,+0#e000e06&|%+0#0000000&|C|\| |%|#|[|%|.|%|#|]|\| |%|#|%|m| @7
+@75
+@75
+|"+0#0000e05&| |:|S|y|n|M|e|n|u| |-| |r|u|n|t|i|m|e|/|m|a|k|e|m|e|n|u|.|v|i|m| +0#0000000&@41
+@75
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|2|p|s|\| |c|o|n|f|i|g|:+0#0000000&|a|2|p|s| @46
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|a|p|:+0#0000000&|a@1|p| @56
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|A|P|/|4|:+0#0000000&|a|b|a|p| @52
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|b|a|q|u|s|:+0#0000000&|a|b|a|q|u|s| @50
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|C|\| |m|u|s|i|c|\| |n|o|t|a|t|i|o|n|:+0#0000000&|a|b|c| @39
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|E|L|:+0#0000000&|a|b|e|l| @54
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|c|e|D|B|\| |m|o|d|e|l|:+0#0000000&|a|c|e|d|b| @45
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump b/runtime/syntax/testdir/dumps/vim_predefined_user_commands_01.dump
new file mode 100644 (file)
index 0000000..3947563
--- /dev/null
@@ -0,0 +1,20 @@
+|S+0#af5f00255#ffffff0|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|a|p|:+0#0000000&|a@1|p| @56
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|A|P|/|4|:+0#0000000&|a|b|a|p| @52
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|b|a|q|u|s|:+0#0000000&|a|b|a|q|u|s| @50
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|C|\| |m|u|s|i|c|\| |n|o|t|a|t|i|o|n|:+0#0000000&|a|b|c| @39
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|B|E|L|:+0#0000000&|a|b|e|l| @54
+>S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|c|e|D|B|\| |m|o|d|e|l|:+0#0000000&|a|c|e|d|b| @45
+|S+0#af5f00255&|y|n|M|e|n|u| +0#e000e06&|A|B|.|A|d|a|:+0#0000000&|a|d|a| @56
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
index 00e53a0d36f00dd57b89f24d84c5903cea1c5de4..5bdf2165d0e55ebca90eab763049c0e818424eb0 100644 (file)
@@ -91,3 +91,11 @@ set path=abc,
 set path=
       "\ def is a 'path' directory value
       \abc,def
+
+
+" CompilerSet
+
+CompilerSet makeprg=ant
+CompilerSet errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
+    \%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m
+
diff --git a/runtime/syntax/testdir/input/vim_predefined_user_commands.vim b/runtime/syntax/testdir/input/vim_predefined_user_commands.vim
new file mode 100644 (file)
index 0000000..8b17890
--- /dev/null
@@ -0,0 +1,21 @@
+" Vim predefined user commands
+
+
+" :CompilerSet - runtime/compiler/
+
+CompilerSet makeprg=ant
+CompilerSet errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
+    \%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m
+
+
+" :SynMenu - runtime/makemenu.vim
+
+SynMenu AB.A2ps\ config:a2ps
+SynMenu AB.Aap:aap
+SynMenu AB.ABAP/4:abap
+SynMenu AB.Abaqus:abaqus
+SynMenu AB.ABC\ music\ notation:abc
+SynMenu AB.ABEL:abel
+SynMenu AB.AceDB\ model:acedb
+SynMenu AB.Ada:ada
+
index 7047373e5bef7c97dcfecb5fe302edd9ab455b13..143d54ac88bfcaaf1be14ef1518d0943ee9e315a 100644 (file)
@@ -2,7 +2,7 @@
 " Language:       Vim script
 " Maintainer:     Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "         Doug Kearns <dougkearns@gmail.com>
-" Last Change:    2025 Feb 16
+" Last Change:    2025 Feb 23
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -95,7 +95,7 @@ syn keyword vimGroup contained        Comment Constant String Character Number Boolean
 
 " 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 PmenuSbar TabLineSel TabLineFill Cursor lCursor QuickFixLine CursorLineSign CursorLineFold CurSearch PmenuKind PmenuKindSel PmenuMatch PmenuMatchSel PmenuExtra PmenuExtraSel 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 LineNrAbove LineNrBelow
+syn keyword vimHLGroup contained ErrorMsg IncSearch ModeMsg NonText StatusLine StatusLineNC EndOfBuffer VertSplit VisualNOS DiffText PmenuSbar TabLineSel TabLineFill 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 LineNrAbove LineNrBelow
 syn match vimHLGroup contained "\<Conceal\>"
 syn case match
 
@@ -240,7 +240,7 @@ syn match   vimNumber       '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'    skipwhite nextgroup=vim
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimLockvar,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList
 syn cluster vim9CmdList        contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
 syn match vimCmdSep    "[:|]\+"        skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimCount     contained       "\d\+"
@@ -950,6 +950,19 @@ syn match  vimMap  "\<map\%(\s\+(\)\@="    skipwhite nextgroup=vimMapBang,vimMapMod,v
 " User Command Highlighting: {{{2
 syn match vimUsrCmd    '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
 
+" Vim user commands
+
+" Compiler plugins
+syn match      vimCompilerSet  "\<CompilerSet\>"       skipwhite nextgroup=vimSetRegion
+
+" runtime/makemenu.vim
+syn match      vimSynMenu              "\<SynMenu\>"   skipwhite nextgroup=vimSynMenuPath
+syn match      vimSynMenuPath  contained       ".*\ze:"        nextgroup=vimSynMenuColon contains=vimMenuNotation
+syn match      vimSynMenuColon contained       ":"     nextgroup=vimSynMenuName
+syn match      vimSynMenuName  contained       "\w\+"
+
+syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu
+
 " Errors And Warnings: {{{2
 " ====================
 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
@@ -1674,6 +1687,10 @@ if !exists("skip_vim_syntax_inits")
  hi def link vim9Var   vimCommand
  hi def link vim9Vim9ScriptArg Special
  hi def link vim9Vim9Script    vimCommand
+
+ hi def link vimCompilerSet    vimCommand
+ hi def link vimSynMenu        vimCommand
+ hi def link vimSynMenuPath    vimMenuName
 endif
 
 " Current Syntax Variable: {{{2