0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

runtime(vim): Update base-syntax, improve :profile highlighting

Match full :profile and :profdel commands.

closes: #17420

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Doug Kearns 2025-06-01 18:26:39 +02:00 committed by Christian Brabandt
parent 086b3b5b79
commit 0aaf6f8bbb
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
7 changed files with 170 additions and 8 deletions

View File

@ -1,7 +1,7 @@
" Vim syntax file generator " Vim syntax file generator
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi (h_east) " Maintainer: Hirohito Higashi (h_east)
" Last Change: 2025 May 28 " Last Change: 2025 Jun 01
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
@ -318,6 +318,8 @@ function s:get_vim_command_type(cmd_name)
perl perl
perldo perldo
popup popup
profdel
profile
public public
python python
pyfile pyfile

View File

@ -2,7 +2,7 @@
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com> " Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com> " Doug Kearns <dougkearns@gmail.com>
" Last Change: 2025 May 29 " Last Change: 2025 Jun 01
" Former Maintainer: Charles E. Campbell " Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY. " DO NOT CHANGE DIRECTLY.
@ -233,7 +233,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
syn case match syn case match
" All vimCommands are contained by vimIsCommand. {{{2 " All vimCommands are contained by vimIsCommand. {{{2
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFuncFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFuncFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,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 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 "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1 syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@ -1338,6 +1338,27 @@ syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,
syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue
" Profile: {{{2
" =======
syn match vimProfileBang contained "\a\@1<=!" skipwhite nextgroup=vimProfileArg
syn keyword vimProfileArg contained start skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained stop pause skipwhite nextgroup=vimCmdSep,@vimComment
syn keyword vimProfileArg contained continue dump skipwhite nextgroup=vimCmdSep,@vimComment
" TODO: match file pattern
syn region vimProfilePattern contained
\ start="\S"
\ skip=+\\[|"#]+
\ end="$" end=+\ze\s*[|"#]+
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
syn match vimProfile "\<prof\%[ile]\>" skipwhite nextgroup=vimProfileBang,vimProfileArg
syn keyword vimProfdelArg func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg here skipwhite nextgroup=vimCmdSep,@vimComment
syn match vimProfdel "\<profd\%[el]\>" skipwhite nextgroup=vimProfdelArg
" Redir: {{{2 " Redir: {{{2
" ===== " =====
syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
@ -2156,6 +2177,11 @@ if !exists("skip_vim_syntax_inits")
hi def link vimPerl vimCommand hi def link vimPerl vimCommand
hi def link vimPlainMark vimMark hi def link vimPlainMark vimMark
hi def link vimPlainRegister vimRegister hi def link vimPlainRegister vimRegister
hi def link vimProfile vimCommand
hi def link vimProfileArg vimSpecial
hi def link vimProfileBang vimBang
hi def link vimProfdel vimCommand
hi def link vimProfdelArg vimSpecial
hi def link vimPython vimCommand hi def link vimPython vimCommand
hi def link vimPython3 vimCommand hi def link vimPython3 vimCommand
hi def link vimPythonX vimCommand hi def link vimPythonX vimCommand

View File

@ -0,0 +1,20 @@
>"+0#0000e05#ffffff0| |V|i|m| |:|p|r|o|f|i|l|e| |a|n|d| |:|p|r|o|f|d|e|l| |c|o|m@1|a|n|d|s| +0#0000000&@38
@75
@75
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|a|r|t| +0#0000000&|/|t|m|p|/|m|y|p|r|o|f|i|l|e| @45
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|o|p| +0#0000000&@61
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|p+0#00e0003&|a|u|s|e| +0#0000000&@60
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|c+0#00e0003&|o|n|t|i|n|u|e| +0#0000000&@57
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @54
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @48
|p+0#af5f00255&|r|o|f|i|l|e|!| +0#0000000&|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @48
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|d+0#00e0003&|u|m|p| +0#0000000&@61
@75
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @54
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @48
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|h+0#00e0003&|e|r|e| +0#0000000&@61
@75
@75
|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@60
@75
@57|1|,|1| @10|T|o|p|

View File

@ -0,0 +1,20 @@
|p+0#af5f00255#ffffff0|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @48
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|h+0#00e0003&|e|r|e| +0#0000000&@61
@75
@75
|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@60
> @74
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|a|r|t| +0#0000000&|/|t|m|p|/|m|y|p|r|o|f|i|l|e| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|o|p| +0#0000000&@16|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|p+0#00e0003&|a|u|s|e| +0#0000000&@15|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|c+0#00e0003&|o|n|t|i|n|u|e| +0#0000000&@12|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @9|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e|!| +0#0000000&|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|d+0#00e0003&|u|m|p| +0#0000000&@16|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
@75
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @9|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|h+0#00e0003&|e|r|e| +0#0000000&@16|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@35
@75
@57|1|9|,|0|-|1| @7|4@1|%|

View File

@ -0,0 +1,20 @@
| +0&#ffffff0@74
@75
|"+0#0000e05&| |t|r|a|i|l|i|n|g| |c|o|m@1|a|n|d| +0#0000000&@56
@75
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|a|r|t| +0#0000000&|/|t|m|p|/|m|y|p|r|o|f|i|l|e| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
>p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|s+0#00e0003&|t|o|p| +0#0000000&@16||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|p+0#00e0003&|a|u|s|e| +0#0000000&@15||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|c+0#00e0003&|o|n|t|i|n|u|e| +0#0000000&@12||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @9||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e|!| +0#0000000&|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@1|d+0#00e0003&|u|m|p| +0#0000000&@16||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
@75
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|u|n|c| +0#0000000&|M|y|F|u|n|c| @9||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|f+0#00e0003&|i|l|e| +0#0000000&|M|y|S|c|r|i|p|t|.|v|i|m| @3||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@1|h+0#00e0003&|e|r|e| +0#0000000&@16||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@32
@75
|~+0#4040ff13&| @73
|~| @73
| +0#0000000&@56|3|7|,|1| @9|B|o|t|

View File

@ -0,0 +1,48 @@
" Vim :profile and :profdel commands
profile start /tmp/myprofile
profile stop
profile pause
profile continue
profile func MyFunc
profile file MyScript.vim
profile! file MyScript.vim
profile dump
profdel func MyFunc
profdel file MyScript.vim
profdel here
" tail comment
profile start /tmp/myprofile " comment
profile stop " comment
profile pause " comment
profile continue " comment
profile func MyFunc " comment
profile file MyScript.vim " comment
profile! file MyScript.vim " comment
profile dump " comment
profdel func MyFunc " comment
profdel file MyScript.vim " comment
profdel here " comment
" trailing command
profile start /tmp/myprofile | echo "Foo"
profile stop | echo "Foo"
profile pause | echo "Foo"
profile continue | echo "Foo"
profile func MyFunc | echo "Foo"
profile file MyScript.vim | echo "Foo"
profile! file MyScript.vim | echo "Foo"
profile dump | echo "Foo"
profdel func MyFunc | echo "Foo"
profdel file MyScript.vim | echo "Foo"
profdel here | echo "Foo"

View File

@ -2,7 +2,7 @@
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com> " Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com> " Doug Kearns <dougkearns@gmail.com>
" Last Change: 2025 May 29 " Last Change: 2025 Jun 01
" Former Maintainer: Charles E. Campbell " Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY. " DO NOT CHANGE DIRECTLY.
@ -36,9 +36,9 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
syn keyword vimCommand contained abo[veleft] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] conf[irm] nextgroup=vimBang syn keyword vimCommand contained abo[veleft] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] conf[irm] nextgroup=vimBang
syn keyword vimCommand contained cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] defc[ompile] defe[r] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage] f[ile] files filet[ype] fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] hor[izontal] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] j[oin] ju[mps] kee[pmarks] keepj[umps] keepp[atterns] nextgroup=vimBang syn keyword vimCommand contained cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] defc[ompile] defe[r] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage] f[ile] files filet[ype] fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] hor[izontal] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] j[oin] ju[mps] kee[pmarks] keepj[umps] keepp[atterns] nextgroup=vimBang
syn keyword vimCommand contained keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] nextgroup=vimBang syn keyword vimCommand contained keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] nextgroup=vimBang
syn keyword vimCommand contained pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sp[lit] spe[llgood] spelld[ump] nextgroup=vimBang syn keyword vimCommand contained pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] nextgroup=vimBang
syn keyword vimCommand contained spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] te[aroff] ter[minal] tf[irst] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] nextgroup=vimBang syn keyword vimCommand contained spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] te[aroff] ter[minal] tf[irst] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] nextgroup=vimBang
syn keyword vimCommand contained wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang syn keyword vimCommand contained wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
" Lower priority for _new_ to distinguish constructors from the command. " Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!" syn match vimCommand contained "\<new\>(\@!"
@ -286,7 +286,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
syn case match syn case match
" All vimCommands are contained by vimIsCommand. {{{2 " All vimCommands are contained by vimIsCommand. {{{2
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFuncFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFuncFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,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 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 "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1 syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@ -1399,6 +1399,27 @@ syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,
syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue
" Profile: {{{2
" =======
syn match vimProfileBang contained "\a\@1<=!" skipwhite nextgroup=vimProfileArg
syn keyword vimProfileArg contained start skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained stop pause skipwhite nextgroup=vimCmdSep,@vimComment
syn keyword vimProfileArg contained continue dump skipwhite nextgroup=vimCmdSep,@vimComment
" TODO: match file pattern
syn region vimProfilePattern contained
\ start="\S"
\ skip=+\\[|"#]+
\ end="$" end=+\ze\s*[|"#]+
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
syn match vimProfile "\<prof\%[ile]\>" skipwhite nextgroup=vimProfileBang,vimProfileArg
syn keyword vimProfdelArg func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg here skipwhite nextgroup=vimCmdSep,@vimComment
syn match vimProfdel "\<profd\%[el]\>" skipwhite nextgroup=vimProfdelArg
" Redir: {{{2 " Redir: {{{2
" ===== " =====
syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
@ -2217,6 +2238,11 @@ if !exists("skip_vim_syntax_inits")
hi def link vimPerl vimCommand hi def link vimPerl vimCommand
hi def link vimPlainMark vimMark hi def link vimPlainMark vimMark
hi def link vimPlainRegister vimRegister hi def link vimPlainRegister vimRegister
hi def link vimProfile vimCommand
hi def link vimProfileArg vimSpecial
hi def link vimProfileBang vimBang
hi def link vimProfdel vimCommand
hi def link vimProfdelArg vimSpecial
hi def link vimPython vimCommand hi def link vimPython vimCommand
hi def link vimPython3 vimCommand hi def link vimPython3 vimCommand
hi def link vimPythonX vimCommand hi def link vimPythonX vimCommand