|
2 | 2 | " Language: Vim script |
3 | 3 | " Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com> |
4 | 4 | |
5 | | -" Last Change: 2025 Nov 11 |
| 5 | +" Last Change: 2025 Nov 13 |
6 | 6 | " Former Maintainer: Charles E. Campbell |
7 | 7 |
|
8 | 8 | " DO NOT CHANGE DIRECTLY. |
@@ -36,7 +36,7 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell |
36 | 36 | " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang' |
37 | 37 |
|
38 | 38 | " Lower priority :syn-match to allow for :command/function() distinction |
39 | | -syn match vimCommand "\<chd\%[ir]\>" nextgroup=vimBang |
| 39 | +" :chdir is handled specially elsewhere |
40 | 40 | syn match vimCommand "\<co\%[py]\>" nextgroup=vimBang |
41 | 41 | syn match vimCommand "\<d\%[elete]\>" nextgroup=vimBang |
42 | 42 | syn match vimCommand "\<j\%[oin]\>" nextgroup=vimBang |
@@ -246,7 +246,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi |
246 | 246 | syn case match |
247 | 247 |
|
248 | 248 | " All vimCommands are contained by vimIsCommand. {{{2 |
249 | | -syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@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,vimPrompt,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 |
| 249 | +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@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,vimPrompt,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 |
250 | 250 | syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var |
251 | 251 | syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc |
252 | 252 | syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1 |
@@ -311,6 +311,20 @@ syn keyword vimBehaveModel contained mswin xterm |
311 | 311 | " ==== |
312 | 312 | syn match vimCall "\<call\=\>" skipwhite nextgroup=vimVar,@vimFunc |
313 | 313 |
|
| 314 | +" Cd: {{{2 |
| 315 | +" == |
| 316 | +" GEN_SYN_VIM: vimCommand cd, START_STR='syn keyword vimCd', END_STR='skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep' |
| 317 | +syn match vimCd "\<chd\%[ir]\>" skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep |
| 318 | +syn region vimCdArg contained |
| 319 | + \ start=+["#|]\@!\S+ |
| 320 | + \ end="\ze\s*$" |
| 321 | + \ end=+\ze\s*\\\@1<!["#|]+ |
| 322 | + \ skipwhite nextgroup=vimComment,vim9Comment,vimCmdSep |
| 323 | + \ contains=vimSpecfile,@vimWildCard |
| 324 | + \ oneline |
| 325 | + |
| 326 | +syn match vimCdBang contained "\a\@1<=!" skipwhite nextgroup=vimCdArg,vimComment,vim9Comment,vimCmdSep |
| 327 | + |
314 | 328 | " Debuggreedy {{{2 |
315 | 329 | " =========== |
316 | 330 | " TODO: special-cased until generalised range/count support is implemented |
@@ -825,6 +839,10 @@ syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1 |
825 | 839 | syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1 |
826 | 840 | syn match vimSpecFileMod "\(:[phtre]\)\+" contained |
827 | 841 |
|
| 842 | +syn match vimSpecFile contained "%[ \t:]"me=e-1 nextgroup=vimSpecFileMod |
| 843 | +syn match vimSpecFile contained excludenl "%$" nextgroup=vimSpecFileMod |
| 844 | +syn match vimSpecFile contained "%<"me=e-1 nextgroup=vimSpecFileMod |
| 845 | + |
828 | 846 | " User-Specified Commands: {{{2 |
829 | 847 | " ======================= |
830 | 848 | syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,@vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange |
@@ -2370,6 +2388,8 @@ if !exists("skip_vim_syntax_inits") |
2370 | 2388 | hi def link vimBracket Delimiter |
2371 | 2389 | hi def link vimCall vimCommand |
2372 | 2390 | hi def link vimCatch vimCommand |
| 2391 | + hi def link vimCd vimCommand |
| 2392 | + hi def link vimCdBang vimBang |
2373 | 2393 | hi def link vimCmplxRepeat SpecialChar |
2374 | 2394 | hi def link vimCommand Statement |
2375 | 2395 | hi def link vimCommandModifier vimCommand |
|
0 commit comments