runtime(vim): Update base syntax, improve :@ highlighting
Commit:
https://github.com/vim/vim/commit/842c7788a5af903df6f8c0dffefaf1607c8c8ed8
Author: Doug Kearns <[email protected]>
Date: Sun Oct 26 13:50:05 2025 +0000
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 <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/syntax/generator/vim.vim.base
b/runtime/syntax/generator/vim.vim.base
index 722766eb4..650f41613 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,7 +2,7 @@
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <[email protected]>
-" Last Change: 2025 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<!|" skipwhite
nextgroup=@vimCmdList,vimSubst1,@vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@@ -1029,7 +1029,13 @@ syn match vimComFilter contained
"|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vi
" Complex Repeats: (:h complex-repeat) {{{2
" ===============
syn match vimCmplxRepeat '[^a-zA-Z_/\()]q[0-9a-zA-Z"]\>'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 6da90f821..48b1b931b 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 b3d628efc..e407c48cf 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 000000000..d5b99a61e
--- /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 000000000..f151b1e61
--- /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 000000000..eb953944f
--- /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 000000000..bdfe8cb74
--- /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 1818e0f9f..f76ed95f8 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 45e5149cd..71de8142a 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 c22fb7195..90da5e812 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 000000000..5994088ec
--- /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 351e20ad8..96199acbb 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 a2b8d171f..2fcfc8dd7 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<!|" skipwhite
nextgroup=@vimCmdList,vimSubst1,@vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@@ -1085,7 +1085,13 @@ syn match vimComFilter contained
"|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vi
" Complex Repeats: (:h complex-repeat) {{{2
" ===============
syn match vimCmplxRepeat '[^a-zA-Z_/\()]q[0-9a-zA-Z"]\>'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
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1vD52C-0040dR-DY%40256bit.org.