From 842c7788a5af903df6f8c0dffefaf1607c8c8ed8 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Sun, 26 Oct 2025 13:50:05 +0000 Subject: [PATCH] runtime(vim): Update base syntax, improve :@ highlighting - Highlight :@ as a normal Ex command rather than something special. - Fix erroneous matching of the Ex command as a register variable. closes: #18624 Signed-off-by: Doug Kearns Signed-off-by: Christian Brabandt --- runtime/syntax/generator/vim.vim.base | 14 +++- .../testdir/dumps/vim9_ex_commands_00.dump | 4 +- .../testdir/dumps/vim9_ex_commands_01.dump | 4 +- .../syntax/testdir/dumps/vim_ex_at_00.dump | 20 ++++++ .../syntax/testdir/dumps/vim_ex_at_01.dump | 20 ++++++ .../syntax/testdir/dumps/vim_ex_at_02.dump | 20 ++++++ .../syntax/testdir/dumps/vim_ex_at_03.dump | 20 ++++++ .../testdir/dumps/vim_ex_commands_00.dump | 4 +- .../testdir/dumps/vim_ex_commands_01.dump | 4 +- .../syntax/testdir/input/vim9_ex_commands.vim | 4 +- runtime/syntax/testdir/input/vim_ex_at.vim | 66 +++++++++++++++++++ .../syntax/testdir/input/vim_ex_commands.vim | 4 +- runtime/syntax/vim.vim | 12 +++- 13 files changed, 179 insertions(+), 17 deletions(-) create mode 100644 runtime/syntax/testdir/dumps/vim_ex_at_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_at_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_at_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_at_03.dump create mode 100644 runtime/syntax/testdir/input/vim_ex_at.vim diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index 722766eb46..650f416137 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 " Doug Kearns -" Last Change: 2025 Oct 09 +" Last Change: 2025 Oct 22 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -246,7 +246,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,vimDefer,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,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'lc=1 -syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' + +" NOTE: :* as an alias for :@ is not supported, this is considered a :range, +" see :help cpo-star +syn match vimAtArg contained +@\@1<=[0-9a-z".=*+:@]+ +syn match vimAt +@[0-9a-z".=*+:@]\ze\s*\%($\|[|"#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment contains=vimAtArg +" Vim9: avoid LHS assignment mismatching of :@["#] +syn match vimAt +@\ze\s*\%($\||\|\s["#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment " Set command and associated set-options (vimOptions) with comment {{{2 syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimCmdSep,vimComment,vimSetArgs @@ -2309,6 +2315,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimAbb vimCommand hi def link vimAddress vimMark + hi def link vimAt vimCommand + hi def link vimAtArg Special hi def link vimAugroupBang vimBang hi def link vimAugroupError vimError hi def link vimAugroupKey vimCommand diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump index 6da90f8216..48b1b931bf 100644 --- a/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump +++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump @@ -3,8 +3,6 @@ @75 @75 |#+0#0000e05&| |S|T|A|R|T| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@55 -|:|@| @72 -|:|@+0#e000e06&@1| +0#0000000&@71 |:|N|e|x|t| @69 |:|X| @72 |#+0#0000e05&| |E|N|D| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@57 @@ -14,6 +12,8 @@ |:| |h+0#af5f00255&|e|l|p| +0#0000000&@68 @1|:+0#af5f00255&| +0#0000000&|h+0#00e0e07&|e|l|p| +0#0000000&|#+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@59 @75 +|:|@+0#af5f00255&| +0#0000000&@72 +@75 |:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63 |:|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@66 |:|a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@64 diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump index b3d628efc2..e407c48cf3 100644 --- a/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump @@ -1,5 +1,5 @@ -|:+0&#ffffff0| |h+0#af5f00255&|e|l|p| +0#0000000&@68 -@1|:+0#af5f00255&| +0#0000000&|h+0#00e0e07&|e|l|p| +0#0000000&|#+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@59 +| +0&#ffffff0@74 +|:|@+0#af5f00255&| +0#0000000&@72 @75 |:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63 |:|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@66 diff --git a/runtime/syntax/testdir/dumps/vim_ex_at_00.dump b/runtime/syntax/testdir/dumps/vim_ex_at_00.dump new file mode 100644 index 0000000000..d5b99a61e3 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_at_00.dump @@ -0,0 +1,20 @@ +>"+0#0000e05#ffffff0| |V|i|m| |:|@| |c|o|m@1|a|n|d| +0#0000000&@58 +@75 +@75 +|@+0#af5f00255&|0+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|1+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|2+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|3+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|4+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|5+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|6+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|7+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|8+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|9+0#e000e06&| +0#0000000&@72 +@75 +|@+0#af5f00255&|a+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|k+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|z+0#e000e06&| +0#0000000&@72 +@75 +|@+0#af5f00255&|"+0#e000e06&| +0#0000000&@72 +@57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_at_01.dump b/runtime/syntax/testdir/dumps/vim_ex_at_01.dump new file mode 100644 index 0000000000..f151b1e612 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_at_01.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +|@+0#af5f00255&|a+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|k+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|z+0#e000e06&| +0#0000000&@72 +@75 +>@+0#af5f00255&|"+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|.+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|=+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|*+0#e000e06&| +0#0000000&@72 +|@+0#af5f00255&|++0#e000e06&| +0#0000000&@72 +@75 +|@+0#af5f00255&|:+0#e000e06&| +0#0000000&@72 +@75 +|"+0#0000e05&| |r|e|p|e|a|t|s| +0#0000000&@65 +|@+0#af5f00255&| +0#0000000&@73 +|@+0#af5f00255&|@+0#e000e06&| +0#0000000&@72 +@75 +|@+0#af5f00255&|a+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@59 +|@+0#af5f00255&|a+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@62 +@57|1|9|,|1| @9|2|7|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_at_02.dump b/runtime/syntax/testdir/dumps/vim_ex_at_02.dump new file mode 100644 index 0000000000..eb953944f2 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_at_02.dump @@ -0,0 +1,20 @@ +|@+0#af5f00255#ffffff0|a+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@62 +@75 +@75 +|d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57 +@2|:|@+0#af5f00255&|0+0#e000e06&| +0#0000000&@69 +@2>:|@+0#af5f00255&|1+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|2+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|3+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|4+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|5+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|6+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|7+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|8+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|9+0#e000e06&| +0#0000000&@69 +@75 +@2|:|@+0#af5f00255&|a+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|k+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|z+0#e000e06&| +0#0000000&@69 +@75 +@57|3|7|,|3| @9|6|5|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_at_03.dump b/runtime/syntax/testdir/dumps/vim_ex_at_03.dump new file mode 100644 index 0000000000..bdfe8cb747 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_at_03.dump @@ -0,0 +1,20 @@ +| +0&#ffffff0@74 +@2|:|@+0#af5f00255&|"+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|.+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|=+0#e000e06&| +0#0000000&@69 +@2|:|@+0#af5f00255&|*+0#e000e06&| +0#0000000&@69 +@2>:|@+0#af5f00255&|++0#e000e06&| +0#0000000&@69 +@75 +@2|:|@+0#af5f00255&|:+0#e000e06&| +0#0000000&@69 +@75 +@2|#+0#0000e05&| |r|e|p|e|a|t|s| +0#0000000&@63 +@2|:|@+0#af5f00255&| +0#0000000&@70 +@2|:|@+0#af5f00255&|@+0#e000e06&| +0#0000000&@69 +@75 +@2|:|@+0#af5f00255&|a+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@56 +@2|:|@+0#af5f00255&|a+0#e000e06&| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@59 +|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 +@75 +|~+0#4040ff13&| @73 +|~| @73 +| +0#0000000&@56|5@1|,|3| @9|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump index 1818e0f9f8..f76ed95f83 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_commands_00.dump @@ -2,8 +2,6 @@ @75 @75 |"+0#0000e05&| |S|T|A|R|T| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@55 -|:|@| @72 -|:|@+0#e000e06&@1| +0#0000000&@71 |:|N|e|x|t| @69 |:|P|r|i|n|t| @68 |:|X| @72 @@ -14,6 +12,8 @@ |:| |h+0#af5f00255&|e|l|p| +0#0000000&@68 @1|:+0#af5f00255&| +0#0000000&|h+0#00e0e07&|e|l|p| +0#0000000&|#| |F|I|X|M|E| @59 @75 +|:|@+0#af5f00255&| +0#0000000&@72 +@75 |:+0#af5f00255&|a|p@1|e|n|d| +0#0000000&@67 | +0#e000002&@3|t|e|x|t| +0#0000000&@66 |.+0#af5f00255&| +0#0000000&@73 diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_01.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_01.dump index 45e5149cdb..71de8142a6 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_commands_01.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_commands_01.dump @@ -1,5 +1,5 @@ -|:+0&#ffffff0| |h+0#af5f00255&|e|l|p| +0#0000000&@68 -@1|:+0#af5f00255&| +0#0000000&|h+0#00e0e07&|e|l|p| +0#0000000&|#| |F|I|X|M|E| @59 +| +0&#ffffff0@74 +|:|@+0#af5f00255&| +0#0000000&@72 @75 |:+0#af5f00255&|a|p@1|e|n|d| +0#0000000&@67 | +0#e000002&@3|t|e|x|t| +0#0000000&@66 diff --git a/runtime/syntax/testdir/input/vim9_ex_commands.vim b/runtime/syntax/testdir/input/vim9_ex_commands.vim index c22fb71952..90da5e812b 100644 --- a/runtime/syntax/testdir/input/vim9_ex_commands.vim +++ b/runtime/syntax/testdir/input/vim9_ex_commands.vim @@ -3,8 +3,6 @@ vim9script # START NOT MATCHED -:@ -:@@ :Next :X # END NOT MATCHED @@ -14,6 +12,8 @@ vim9script : help : help # FIXME +:@ + :abbreviate :abclear :aboveleft diff --git a/runtime/syntax/testdir/input/vim_ex_at.vim b/runtime/syntax/testdir/input/vim_ex_at.vim new file mode 100644 index 0000000000..5994088ec2 --- /dev/null +++ b/runtime/syntax/testdir/input/vim_ex_at.vim @@ -0,0 +1,66 @@ +" Vim :@ command + + +@0 +@1 +@2 +@3 +@4 +@5 +@6 +@7 +@8 +@9 + +@a +@k +@z + +@" +@. +@= +@* +@+ + +@: + +" repeats +@ +@@ + +@a | echo "..." +@a " comment + + +def Vim9Context() + :@0 + :@1 + :@2 + :@3 + :@4 + :@5 + :@6 + :@7 + :@8 + :@9 + + :@a + :@k + :@z + + :@" + :@. + :@= + :@* + :@+ + + :@: + + # repeats + :@ + :@@ + + :@a | echo "..." + :@a # comment +enddef + diff --git a/runtime/syntax/testdir/input/vim_ex_commands.vim b/runtime/syntax/testdir/input/vim_ex_commands.vim index 351e20ad83..96199acbb5 100644 --- a/runtime/syntax/testdir/input/vim_ex_commands.vim +++ b/runtime/syntax/testdir/input/vim_ex_commands.vim @@ -2,8 +2,6 @@ " START NOT MATCHED -:@ -:@@ :Next :Print :X @@ -14,6 +12,8 @@ : help : help # FIXME +:@ + :append text . diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index a2b8d171f4..2fcfc8dd79 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -300,7 +300,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,vimDefer,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,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'lc=1 -syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' + +" NOTE: :* as an alias for :@ is not supported, this is considered a :range, +" see :help cpo-star +syn match vimAtArg contained +@\@1<=[0-9a-z".=*+:@]+ +syn match vimAt +@[0-9a-z".=*+:@]\ze\s*\%($\|[|"#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment contains=vimAtArg +" Vim9: avoid LHS assignment mismatching of :@["#] +syn match vimAt +@\ze\s*\%($\||\|\s["#]\)+ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment " Set command and associated set-options (vimOptions) with comment {{{2 syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimCmdSep,vimComment,vimSetArgs @@ -2371,6 +2377,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimAbb vimCommand hi def link vimAddress vimMark + hi def link vimAt vimCommand + hi def link vimAtArg Special hi def link vimAugroupBang vimBang hi def link vimAugroupError vimError hi def link vimAugroupKey vimCommand -- 2.47.3