22" Language: Vim script
33" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
445- " Last Change: 2024 Dec 21
5+ " Last Change: 2025 Jan 09
66" Former Maintainer: Charles E. Campbell
77
88" DO NOT CHANGE DIRECTLY.
@@ -26,7 +26,7 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
2626syn cluster vimCommentGroup contains =vimTodo,@Spell
2727
2828" regular vim commands {{{2
29- " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
29+ " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang '
3030
3131" Lower priority for _new_ to distinguish constructors from the command.
3232syn match vimCommand contained " \< new\> (\@ !"
@@ -205,7 +205,7 @@ syn case match
205205syn cluster vimCmdList contains =vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
206206syn cluster vim9CmdList contains =vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
207207syn match vimCmdSep " [:|]\+ " skipwhite nextgroup =@vimCmdList,vimSubst1
208- syn match vimIsCommand " \<\% (\h\w *\| [23]mat\% [ch]\)\> " contains =vimCommand
208+ syn match vimIsCommand " \<\% (\h\w *\| [23]mat\% [ch]\)\> " nextgroup = vimBang contains =vimCommand
209209syn match vimBang contained " !"
210210syn match vimVar contained " \<\h [a-zA-Z0-9#_]*\> "
211211syn match vimVar " \< [bwglstav]:\h [a-zA-Z0-9#_]*\> "
@@ -214,7 +214,6 @@ syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
214214syn match vimVar " \s\z s&t_k;"
215215syn match vimFBVar contained " \< [bwglstav]:\h [a-zA-Z0-9#_]*\> "
216216syn keyword vimCommand contained in
217- syn match vimBang contained " !"
218217
219218syn cluster vimExprList contains =vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
220219syn cluster vim9ExprList contains =vim9Boolean,vim9Null
@@ -282,7 +281,8 @@ syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBan
282281" Operators: {{{2
283282" =========
284283syn cluster vimOperGroup contains =vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
285- syn match vimOper " ||\| &&\| [-+*/%.!]" skipwhite nextgroup =vimString,vimSpecFile
284+ syn match vimOper " \a\@ <!!" skipwhite nextgroup =vimString,vimSpecFile
285+ syn match vimOper " ||\| &&\| [-+*/%.]" skipwhite nextgroup =vimString,vimSpecFile
286286syn match vimOper " \% #=1\( ==\| !=\| >=\| <=\| =\~\| !\~\| >\| <\| =\| !\~ #\) [?#]\{ 0,2}" skipwhite nextgroup =vimString,vimSpecFile
287287syn match vimOper " \(\< is\|\< isnot\) [?#]\{ 0,2}\> " skipwhite nextgroup =vimString,vimSpecFile
288288syn region vimOperParen matchgroup =vimParenSep start =" (" end =" )" contains =@vimOperGroup
@@ -558,8 +558,8 @@ syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\
558558syn region vimPatRegion contained transparent matchgroup =vimPatSepR start =" \\ [z%]\= (" end =" \\ )" contains =@vimSubstList oneline
559559syn match vimNotPatSep contained " \\\\ "
560560syn cluster vimStringGroup contains =vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
561- syn region vimString oneline keepend start =+ [^a-zA-Z>! \\ @]"+ lc =1 skip =+ \\\\\|\\ "+ matchgroup =vimStringEnd end =+ "+ contains =@vimStringGroup extend
562- syn region vimString oneline keepend start =+ [^a-zA-Z>! \\ @]'+ lc =1 end =+ '+ extend
561+ syn region vimString oneline keepend start =+ [^a-zA-Z>\\ @]"+ lc =1 skip =+ \\\\\|\\ "+ matchgroup =vimStringEnd end =+ "+ contains =@vimStringGroup extend
562+ syn region vimString oneline keepend start =+ [^a-zA-Z>\\ @]'+ lc =1 end =+ '+ extend
563563" syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
564564syn match vimString contained + "[^"]*\\ $+ skipnl nextgroup =vimStringCont
565565syn match vimStringCont contained + \(\\\\\| .\)\{ -}[^\\ ]"+
@@ -681,10 +681,12 @@ endif
681681
682682" Autocmd: {{{2
683683" =======
684- syn match vimAutoEventList contained " \( !\s\+\)\=\(\a\+ ,\) *\a\+ " contains =vimAutoEvent nextgroup =vimAutoCmdSpace
684+ syn match vimAutoCmdBang contained " \a\@ 1<=!" skipwhite nextgroup =vimAutoEventList
685+ syn match vimAutoEventList contained " \% (\a\+ ,\) *\a\+ " contains =vimAutoEvent nextgroup =vimAutoCmdSpace
685686syn match vimAutoCmdSpace contained " \s\+ " nextgroup =vimAutoCmdSfxList
686687syn match vimAutoCmdSfxList contained " \S *" skipwhite nextgroup =vimAutoCmdMod,vimAutoCmdBlock
687- syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup =vimAutoEventList
688+ syn keyword vimAutoCmd au[tocmd] skipwhite nextgroup =vimAutoCmdBang,vimAutoEventList
689+ syn keyword vimAutoCmd do[autocmd] doautoa[ll] skipwhite nextgroup =vimAutoEventList
688690syn match vimAutoCmdMod " \( ++\)\=\( once\| nested\) " skipwhite nextgroup =vimAutoCmdBlock
689691syn region vimAutoCmdBlock contained matchgroup =vimSep start =" {" end =" }" contains =@vimDefBodyList
690692
@@ -1269,6 +1271,7 @@ if !exists("skip_vim_syntax_inits")
12691271 hi def link vimAugroupError vimError
12701272 hi def link vimAugroupKey vimCommand
12711273 hi def link vimAutoCmd vimCommand
1274+ hi def link vimAutoCmdBang vimBang
12721275 hi def link vimAutoEvent Type
12731276 hi def link vimAutoCmdMod Special
12741277 hi def link vimBang vimOper
0 commit comments