blob: 4f571a49004a1b8d7ff4da346ea731ed71201119 [file] [log] [blame]
h-east9b53c052024-02-13 21:09:22 +01001" Vim syntax file
dkearns982e1912024-03-28 20:06:03 +11002" Language: Vim script
3" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
4" Doug Kearns <dougkearns@gmail.com>
5" URL: https://github.com/vim-jp/syntax-vim-ex
Doug Kearnse85fdc72024-07-07 20:45:37 +02006" Last Change: 2024 Jul 05
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008
9" DO NOT CHANGE DIRECTLY.
10" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
11" (Search string "GEN_SYN_VIM:" in this file)
12
13" Automatically generated keyword lists: {{{1
14
15" Quit when a syntax file was already loaded {{{2
16if exists("b:current_syntax")
17 finish
18endif
h-east9b53c052024-02-13 21:09:22 +010019let s:keepcpo= &cpo
20set cpo&vim
21
dkearns04e53632024-04-11 06:18:37 +100022let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
23
h-east9b53c052024-02-13 21:09:22 +010024" vimTodo: contains common special-notices for comments {{{2
25" Use the vimCommentGroup cluster to add your own.
26syn keyword vimTodo contained COMBAK FIXME TODO XXX
27syn cluster vimCommentGroup contains=vimTodo,@Spell
28
29" regular vim commands {{{2
30" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
31
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030032" Lower priority for _new_ to distinguish constructors from the command.
33syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010034syn match vimCommand contained "\<z[-+^.=]\=\>"
35syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
36
37" vimOptions are caught only when contained in a vimSet {{{2
38" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
39
40" vimOptions: These are the turn-off setting variants {{{2
41" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
42
43" vimOptions: These are the invertible variants {{{2
44" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
45
46" termcap codes (which can also be set) {{{2
47" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
48" term key codes
49syn keyword vimOption contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
50syn match vimOption contained "t_%1"
51syn match vimOption contained "t_#2"
52syn match vimOption contained "t_#4"
53syn match vimOption contained "t_@7"
54syn match vimOption contained "t_*7"
55syn match vimOption contained "t_&8"
56syn match vimOption contained "t_%i"
57syn match vimOption contained "t_k;"
58
59" unsupported settings: some were supported by vi but don't do anything in vim {{{2
60" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
61
62" AutoCmd Events {{{2
63syn case ignore
64" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
65
66" Highlight commonly used Groupnames {{{2
67syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
68
69" Default highlighting groups {{{2
70" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
h_eastc984b2f2024-05-27 22:40:25 +090071syn match vimHLGroup contained "\<Conceal\>"
h-east9b53c052024-02-13 21:09:22 +010072syn case match
73
74" Function Names {{{2
75" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
76
77"--- syntax here and above generated by mkvimvim ---
78" Special Vim Highlighting (not automatic) {{{1
79
80" Set up folding commands for this syntax highlighting file {{{2
Doug Kearnsce064932024-04-13 18:24:01 +020081if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010082 if g:vimsyn_folding =~# 'a'
83 com! -nargs=* VimFolda <args> fold
84 else
85 com! -nargs=* VimFolda <args>
86 endif
87 if g:vimsyn_folding =~# 'f'
88 com! -nargs=* VimFoldf <args> fold
89 else
90 com! -nargs=* VimFoldf <args>
91 endif
92 if g:vimsyn_folding =~# 'h'
93 com! -nargs=* VimFoldh <args> fold
94 else
95 com! -nargs=* VimFoldh <args>
96 endif
Doug Kearnsce064932024-04-13 18:24:01 +020097 if g:vimsyn_folding =~# 'H'
98 com! -nargs=* VimFoldH <args> fold
99 else
100 com! -nargs=* VimFoldH <args>
101 endif
h-east9b53c052024-02-13 21:09:22 +0100102 if g:vimsyn_folding =~# 'l'
103 com! -nargs=* VimFoldl <args> fold
104 else
105 com! -nargs=* VimFoldl <args>
106 endif
107 if g:vimsyn_folding =~# 'm'
108 com! -nargs=* VimFoldm <args> fold
109 else
110 com! -nargs=* VimFoldm <args>
111 endif
112 if g:vimsyn_folding =~# 'p'
113 com! -nargs=* VimFoldp <args> fold
114 else
115 com! -nargs=* VimFoldp <args>
116 endif
117 if g:vimsyn_folding =~# 'P'
118 com! -nargs=* VimFoldP <args> fold
119 else
120 com! -nargs=* VimFoldP <args>
121 endif
122 if g:vimsyn_folding =~# 'r'
123 com! -nargs=* VimFoldr <args> fold
124 else
125 com! -nargs=* VimFoldr <args>
126 endif
127 if g:vimsyn_folding =~# 't'
128 com! -nargs=* VimFoldt <args> fold
129 else
130 com! -nargs=* VimFoldt <args>
131 endif
132else
133 com! -nargs=* VimFolda <args>
134 com! -nargs=* VimFoldf <args>
135 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200136 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100137 com! -nargs=* VimFoldl <args>
138 com! -nargs=* VimFoldm <args>
139 com! -nargs=* VimFoldp <args>
140 com! -nargs=* VimFoldP <args>
141 com! -nargs=* VimFoldr <args>
142 com! -nargs=* VimFoldt <args>
143endif
144
145" Deprecated variable options {{{2
146if exists("g:vim_minlines")
147 let g:vimsyn_minlines= g:vim_minlines
148endif
149if exists("g:vim_maxlines")
150 let g:vimsyn_maxlines= g:vim_maxlines
151endif
152if exists("g:vimsyntax_noerror")
153 let g:vimsyn_noerror= g:vimsyntax_noerror
154endif
155
156" Variable options {{{2
157if exists("g:vim_maxlines")
158 let s:vimsyn_maxlines= g:vim_maxlines
159else
160 let s:vimsyn_maxlines= 60
161endif
162
163" Numbers {{{2
164" =======
dkearns5cd86c62024-03-12 07:40:58 +1100165syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000166syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
167syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
168syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
169syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
170syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
171syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
172syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100173syn case match
h-east9b53c052024-02-13 21:09:22 +0100174
175" All vimCommands are contained by vimIsCommand. {{{2
Doug Kearnse85fdc72024-07-07 20:45:37 +0200176syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
dkearnsc4aef9a2024-03-04 02:42:47 +1100177syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100178syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
179syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
180syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
181syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
182syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
183syn match vimVar "\s\zs&t_k;"
184syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
185syn keyword vimCommand contained in
186
dkearnsb1427b42024-02-28 05:59:30 +1100187syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
188
h-east9b53c052024-02-13 21:09:22 +0100189" Insertions And Appends: insert append {{{2
190" (buftype != nofile test avoids having append, change, insert show up in the command window)
191" =======================
192if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000193 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
194 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
195 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100196endif
197
198" Behave! {{{2
199" =======
h-east9b53c052024-02-13 21:09:22 +0100200if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
201 syn match vimBehaveError contained "[^ ]\+"
202endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100203syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
204syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
205syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100206
dkearnsa3bddb72024-06-14 01:48:10 +1000207" Exception Handling {{{2
208syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
209syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
210syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
211
h-east9b53c052024-02-13 21:09:22 +0100212" Filetypes {{{2
213" =========
214syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
215if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
216 syn match vimFTError contained "\I\i*"
217endif
218syn keyword vimFTCmd contained filet[ype]
219syn keyword vimFTOption contained detect indent off on plugin
220
221" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
222" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000223syn cluster vimAugroupList contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
dkearnsc4aef9a2024-03-04 02:42:47 +1100224syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100225if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100226 syn region vimAugroup fold start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100227else
dkearnsc4aef9a2024-03-04 02:42:47 +1100228 syn region vimAugroup start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100229endif
h-east9b53c052024-02-13 21:09:22 +0100230if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100231 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100232endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100233
234syn match vimAutoCmdGroup contained "\S\+"
235syn match vimAugroupEnd contained "\c\<END\>"
236syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
237syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100238
239" Operators: {{{2
240" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100241syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100242syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
243syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
244syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100245syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100246syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
247if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
248 syn match vimOperError ")"
249endif
250
dkearns4ba70ca2024-04-15 04:32:56 +1000251" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100252" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100253syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
254syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000255
256syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
257syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
258syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
dkearns35e6f4c2024-03-22 06:41:10 +1100259
260syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
261syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
262syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
263
264syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
265syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300266syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100267
268syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
269syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
270
271syn match vimFuncBang contained "!"
272syn match vimFuncSID contained "\c<sid>"
273syn match vimFuncSID contained "\<[sg]:"
274syn keyword vimFuncKey contained fu[nction]
275syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300276syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100277
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200278syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
279syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +1100280syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
281syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
282
283syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200284syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100285
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200286syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
287syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100288
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200289syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
290syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
h-east9b53c052024-02-13 21:09:22 +0100291
292if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000293 syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
294 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
295 syn region vimFuncFold start="^\s*:\=\s*def\s\+new\i\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
h-east9b53c052024-02-13 21:09:22 +0100296endif
dkearns35e6f4c2024-03-22 06:41:10 +1100297
298syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100299syn match vimFuncBlank contained "\s\+"
300
dkearns35e6f4c2024-03-22 06:41:10 +1100301" Types: {{{2
302" =====
h-east9b53c052024-02-13 21:09:22 +0100303" vimTypes : new for vim9
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200304syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
dkearns35e6f4c2024-03-22 06:41:10 +1100305syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
306
307syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
308syn keyword vimType contained any blob bool channel float job number string void
309syn match vimType contained "\<func\>"
310syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
311syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
312syn match vimUserType contained "\<\u\w*\>"
313
314syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100315
dkearns04e53632024-04-11 06:18:37 +1000316" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100317" =======
318
dkearns04e53632024-04-11 06:18:37 +1000319syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100320syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
321syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
322syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000323
324" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
325if s:vim9script
326 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
327else
328 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
329endif
330syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100331
332syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
333
334" Special Filenames, Modifiers, Extension Removal: {{{2
335" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100336syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
337syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
338syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
339syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
340syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
341syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100342syn match vimSpecFileMod "\(:[phtre]\)\+" contained
343
344" User-Specified Commands: {{{2
345" =======================
dkearns04e53632024-04-11 06:18:37 +1000346syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
h-east9b53c052024-02-13 21:09:22 +0100347syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000348syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
349syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100350syn match vimUserAttrbError contained "-\a\+\ze\s"
351syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
352syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
353syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
354syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
355syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
356syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
357syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
358syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
359if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
360 syn match vimUserCmdError contained "\S\+\>"
361endif
362syn case ignore
363syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
364" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
365syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
366syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
367
368syn case match
369syn match vimUserAttrbCmplt contained "custom,\u\w*"
370
dkearns04e53632024-04-11 06:18:37 +1000371syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
372
h-east9b53c052024-02-13 21:09:22 +0100373" Lower Priority Comments: after some vim commands... {{{2
374" =======================
dkearns959c3c82024-06-12 04:18:08 +1000375if get(g:, "vimsyn_comment_strings", 1)
376 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
377endif
dkearns04e53632024-04-11 06:18:37 +1000378
379if s:vim9script
380 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
381 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
382 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
383 " Vim9 comments - TODO: might be highlighted while they don't work
384 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
385 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
386 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
387 " Vim9 comment inside expression
388 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
389 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
390 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
391
392 syn cluster vimComment contains=vim9Comment
393else
394 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
395 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
396 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
397 " Vim9 comments - TODO: might be highlighted while they don't work
398 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
399 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
400 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
401 " Vim9 comment inside expression
402 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
403 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
404 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
405
406 syn cluster vimComment contains=vimComment
407endif
h-east9b53c052024-02-13 21:09:22 +0100408
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200409syn match vim9CommentError contained "#.*"
410syn match vimCommentError contained +".*+
411
h-east9b53c052024-02-13 21:09:22 +0100412" Environment Variables: {{{2
413" =====================
414syn match vimEnvvar "\$\I\i*"
415syn match vimEnvvar "\${\I\i*}"
416
417" In-String Specials: {{{2
418" Try to catch strings, if nothing else matches (therefore it must precede the others!)
419" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
420syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
421syn match vimPatSepErr contained "\\)"
422syn match vimPatSep contained "\\|"
423syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
424syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
425syn match vimNotPatSep contained "\\\\"
426syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
427syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
428syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100429"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
430syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
431syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
432syn match vimEscape contained "\\."
433" syn match vimEscape contained +\\[befnrt\"]+
434syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
435syn match vimEscape contained "\\<" contains=vimNotation
436syn match vimEscape contained "\\<\*[^>]*>\=>"
437
dkearnsb1427b42024-02-28 05:59:30 +1100438syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
439syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
440syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
441syn match vimStringInterpolationBrace contained "{{"
442syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100443
444" Substitutions: {{{2
445" =============
446syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
447syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
448syn cluster vimSubstList add=vimCollection
Doug Kearns92f4e912024-06-05 19:45:43 +0200449syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
450syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
451syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
452syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
dkearns2c51e152024-02-27 07:10:18 +1100453" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
454" : # is allowed but "not recommended" (see :h pattern-delimiter)
455syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline
456syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
457syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
458syn match vimCollClassErr contained "\[:.\{-\}:\]"
459syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
460syn match vimSubstSubstr contained "\\z\=\d"
461syn match vimSubstTwoBS contained "\\\\"
462syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
463syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100464
Doug Kearns92f4e912024-06-05 19:45:43 +0200465" Vi compatibility
466syn match vimSubstDelim contained "\\"
467syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
468
h-east9b53c052024-02-13 21:09:22 +0100469" 'String': {{{2
470syn match vimString "[^(,]'[^']\{-}\zs'"
471
472" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100473syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
474syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
475syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
476syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
477syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
478syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100479syn match vimPlainMark contained "'[a-zA-Z0-9]"
480syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
481
482syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
483syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
484syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
485syn match vimRegister '@"'
486syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
487syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
488
489syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
490syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
491
492syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
493syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
494syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
495
496" Complex Repeats: (:h complex-repeat) {{{2
497" ===============
498syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
499syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
500
501" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000502syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod
h-east9b53c052024-02-13 21:09:22 +0100503syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
504syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
505syn match vimSetSep contained "[,:]"
506syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
507
508" Let And Var: {{{2
509" ===========
510syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
511syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
512syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
513
514syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
515syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
516syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
517
dkearns4ba70ca2024-04-15 04:32:56 +1000518VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend
h-east9b53c052024-02-13 21:09:22 +0100519syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
520
521" For: {{{2
522" ===
523syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100524
h-east9b53c052024-02-13 21:09:22 +0100525" Abbreviations: {{{2
526" =============
527" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100528" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100529
530" Autocmd: {{{2
531" =======
532syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
533syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000534syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100535syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000536syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
537syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100538
539" Echo And Execute: -- prefer strings! {{{2
540" ================
dkearns61887b32024-03-15 23:45:48 +1100541" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100542
dkearns61887b32024-03-15 23:45:48 +1100543syn region vimEcho
544 \ matchgroup=vimCommand
545 \ start="\<ec\%[ho]\>"
546 \ start="\<echoe\%[rr]\>"
547 \ start="\<echom\%[sg]\>"
548 \ start="\<echoc\%[onsole]\>"
549 \ start="\<echon\>"
550 \ start="\<echow\%[indow]\>"
551 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
552 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
553
554syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100555syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100556syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100557syn case match
558
dkearns35e6f4c2024-03-22 06:41:10 +1100559syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100560
561syn region vimExecute matchgroup=vimCommand start="\<exe\%[cute]\>" skip=+\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
dkearnsb1427b42024-02-28 05:59:30 +1100562
h-east9b53c052024-02-13 21:09:22 +0100563" Maps: {{{2
564" ====
565syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
566syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
567" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100568" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
569syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100570" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100571syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
572syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
573syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100574syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
dkearns5d67aef2024-03-10 04:01:22 +1100575syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
576" assume a continuation comment introduces the RHS
577syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100578syn case ignore
579syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
580syn case match
581
582" Menus: {{{2
583" =====
dkearns62b26042024-03-10 03:43:28 +1100584" NOTE: tail comments disallowed
585" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
586syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
587syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
588syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100589syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
590syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100591syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
592syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
593syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
594syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
595syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
596
597syn region vimMenutranslate
598 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
599 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
600 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
601 \ contains=@vimContinue,vimMenutranslateName keepend transparent
602" oneline is sufficient to match the current formatting in runtime/lang/*.vim
603syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
604syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100605
606" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
607" ======================
608syn case ignore
609syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}x\=\%(f\d\{1,2}\|[^ \t:]\|space\|bar\|bslash\|nl\|newline\|lf\|linefeed\|cr\|retu\%[rn]\|enter\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|csi\|right\|paste\%(start\|end\)\|left\|help\|undo\|k\=insert\|ins\|mouse\|[kz]\=home\|[kz]\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\%(page\)\=\%(\|down\|up\|k\d\>\)\)>" contains=vimBracket
610
611syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
612syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
614syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
615syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
616syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
617syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
618
619syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
620syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
621syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
622syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
623syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
624syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
625
626syn match vimBracket contained "[\\<>]"
627syn case match
628
629" User Function Highlighting: {{{2
630" (following Gautam Iyer's suggestion)
631" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100632syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300633syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vimMethodName
dkearns9530fe42024-03-19 05:19:51 +1100634syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100635
636" User Command Highlighting: {{{2
637syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
638
639" Errors And Warnings: {{{2
640" ====================
641if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300642 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300643 " TODO: The |builtin-object-methods| exception should only apply to method
644 " definitions.
645 syn match vimFunctionError "\s\zs\%(empty\|len\|new\|string\)\@![a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
h-east9b53c052024-02-13 21:09:22 +0100646 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
647 syn match vimElseIfErr "\<else\s\+if\>"
648 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
649endif
650
651syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
652
Doug Kearnse85fdc72024-07-07 20:45:37 +0200653" Match: {{{2
654" =====
655syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
656syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
657syn case ignore
658syn keyword vimMatchNone contained none
659syn case match
660syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
661
h-east9b53c052024-02-13 21:09:22 +0100662" Norm: {{{2
663" ====
664syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
665syn match vimNormCmds contained ".*$"
666
Doug Kearns262e25e2024-06-14 20:16:35 +0200667" Sleep: {{{2
668" =====
669syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
670syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
671syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
672
h-east9b53c052024-02-13 21:09:22 +0100673" Syntax: {{{2
674"=======
675syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
676syn region vimGroupList contained start=/^\s*["#]\\ \|^\s*\\\|[^[:space:],]\+\s*,/ skip=/\s*\n\s*\\\|\s*\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ / end=/[^[:space:],]\s*$\|[^[:space:],]\ze\s\+\w/ contains=@vimContinue,vimGroupSpecial
677syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
678
679if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
680 syn match vimSynError contained "\i\+"
681 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
682endif
683syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
684syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
685syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
686if has("conceal")
687 " no whitespace allowed after '='
688 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
689 syn match vimSynCcharValue contained "\S"
690endif
691
dkearns04e53632024-04-11 06:18:37 +1000692syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100693syn cluster vimFuncBodyList add=vimSyntax
694
695" Syntax: case {{{2
696syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
697if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
698 syn match vimSynCaseError contained "\i\+"
699endif
700syn keyword vimSynCase contained ignore match
701
702" Syntax: clear {{{2
703syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
704
705" Syntax: cluster {{{2
706syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
707syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
708syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
709syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100710
711" Syntax: foldlevel {{{2
712syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
713if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
714 syn match vimSynFoldMethodError contained "\i\+"
715endif
716syn keyword vimSynFoldMethod contained start minimum
717
718" Syntax: iskeyword {{{2
719syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
720syn match vimIskList contained '\S\+' contains=vimIskSep
721syn match vimIskSep contained ','
722
723" Syntax: include {{{2
724syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100725
726" Syntax: keyword {{{2
727syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
728syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
729syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
730syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100731
732" Syntax: match {{{2
733syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
734syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
735syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
736syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100737
738" Syntax: off and on {{{2
739syn keyword vimSynType contained enable list manual off on reset
740
741" Syntax: region {{{2
742syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
743syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
744syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
745syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
746syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
747syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
748syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
749syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
750syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
751syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
752syn match vimSynPatMod contained "lc=\d\+"
753syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
754syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
755syn match vimSynNotPatRange contained "\\\\\|\\\["
756syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100757
758" Syntax: sync {{{2
759" ============
760syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
761if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
762 syn match vimSyncError contained "\i\+"
763endif
764syn keyword vimSyncC contained ccomment clear fromstart
765syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
766syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
767syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
768syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
769syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
770syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
771syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
772syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
773syn keyword vimSyncNone contained NONE
774
775" Additional IsCommand: here by reasons of precedence {{{2
776" ====================
777syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
778
779" Highlighting: {{{2
780" ============
dkearns04e53632024-04-11 06:18:37 +1000781syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100782if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
783 syn match vimHiCtermError contained "\D\i*"
784endif
785syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100786syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100787
788syn match vimHiGroup contained "\i\+"
789syn case ignore
790syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
791syn keyword vimFgBgAttrib contained none bg background fg foreground
792syn case match
793syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
794syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
795syn case ignore
796syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey grey40 grey50 grey90 lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred lightyellow magenta red seagreen white yellow
797syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
798
799syn case match
800syn match vimHiFontname contained "[a-zA-Z\-*]\+"
801syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
802syn match vimHiGuiRgb contained "#\x\{6}"
803
804" Highlighting: hi group key=arg ... {{{2
805syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100806syn region vimHiKeyList contained start="\i\+" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster
h-east9b53c052024-02-13 21:09:22 +0100807if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
808 syn match vimHiKeyError contained "\i\+="he=e-1
809endif
810syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100811syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100812syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
813syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
814syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
815syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
816syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
817syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
818syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
819syn match vimHiTermcap contained "\S\+" contains=vimNotation
820syn match vimHiNmbr contained '\d\+'
821
822" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100823syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100824
825" Highlight: link {{{2
826" see tst24 (hi def vs hi) (Jul 06, 2018)
827"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
dkearns9530fe42024-03-19 05:19:51 +1100828" TODO: simplify and allow line continuations --djk
829syn region vimHiLink contained matchgroup=Type start="\%(\<hi\%[ghlight]!\=\s\+\)\@<=\%(\%(def\%[ault]\s\+\)\=link\>\|\<def\%[ault]\>\)" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster
h-east9b53c052024-02-13 21:09:22 +0100830
831" Control Characters: {{{2
832" ==================
833syn match vimCtrlChar "[- -]"
834
835" Beginners - Patterns that involve ^ {{{2
836" =========
dkearns04e53632024-04-11 06:18:37 +1000837if s:vim9script
dkearns059cbe82024-06-12 03:27:53 +1000838 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
839 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000840else
dkearns059cbe82024-06-12 03:27:53 +1000841 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
842 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000843endif
h-east9b53c052024-02-13 21:09:22 +0100844syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
dkearns04e53632024-04-11 06:18:37 +1000845syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
dkearns059cbe82024-06-12 03:27:53 +1000846
dkearnsae321b52024-06-15 23:06:17 +1000847" allowed anywhere in the file
848if !s:vim9script
849 syn match vimShebangError "^\s*\zs#!.*" display
850endif
851syn match vimShebang "\%^#!.*" display
852
h-east9b53c052024-02-13 21:09:22 +0100853syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +1000854syn match vimContinueComment '^\s*\zs["#]\\ .*'
h-east9b53c052024-02-13 21:09:22 +0100855syn cluster vimContinue contains=vimContinue,vimContinueComment
856syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
857syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000858syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100859
860" Searches And Globals: {{{2
861" ====================
862syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
863syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100864syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
865syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100866
dkearns04e53632024-04-11 06:18:37 +1000867" Vim9 Script Regions: {{{2
868" ==================
869
870if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200871 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
872 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000873
Doug Kearnsce064932024-04-13 18:24:01 +0200874 syn keyword vim9Vim9ScriptArg noclear contained
875 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000876endif
877
h-east9b53c052024-02-13 21:09:22 +0100878" Embedded Scripts: {{{2
879" ================
880" perl,ruby : Benoit Cerrina
881" python,tcl : Johannes Zellner
882" mzscheme, lua : Charles Campbell
883
884" Allows users to specify the type of embedded script highlighting
885" they want: (perl/python/ruby/tcl support)
886" g:vimsyn_embed == 0 : don't embed any scripts
h-east84ac2122024-06-17 18:12:30 +0200887" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
888" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
889" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
890" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
891" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
892" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
h-east9b53c052024-02-13 21:09:22 +0100893if !exists("g:vimsyn_embed")
894 let g:vimsyn_embed= "lmpPr"
895endif
896
897" [-- lua --] {{{3
898let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
899if !filereadable(s:luapath)
900 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
901 if filereadable(fnameescape(s:luapath))
902 let s:luapath= fnameescape(s:luapath)
903 break
904 endif
905 endfor
906endif
907if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
908 unlet! b:current_syntax
909 syn cluster vimFuncBodyList add=vimLuaRegion
910 exe "syn include @vimLuaScript ".s:luapath
911 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
912 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
913 syn cluster vimFuncBodyList add=vimLuaRegion
914else
915 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
916 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
917endif
918unlet s:luapath
919
920" [-- perl --] {{{3
921let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
922if !filereadable(s:perlpath)
923 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
924 if filereadable(fnameescape(s:perlpath))
925 let s:perlpath= fnameescape(s:perlpath)
926 break
927 endif
928 endfor
929endif
930if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
931 unlet! b:current_syntax
932 syn cluster vimFuncBodyList add=vimPerlRegion
933 exe "syn include @vimPerlScript ".s:perlpath
934 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
935 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
936 syn cluster vimFuncBodyList add=vimPerlRegion
937else
938 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
939 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
940endif
941unlet s:perlpath
942
943" [-- ruby --] {{{3
944let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
945if !filereadable(s:rubypath)
946 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
947 if filereadable(fnameescape(s:rubypath))
948 let s:rubypath= fnameescape(s:rubypath)
949 break
950 endif
951 endfor
952endif
953if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
954 syn cluster vimFuncBodyList add=vimRubyRegion
955 unlet! b:current_syntax
956 exe "syn include @vimRubyScript ".s:rubypath
957 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
958 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
959 syn cluster vimFuncBodyList add=vimRubyRegion
960else
961 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
962 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
963endif
964unlet s:rubypath
965
966" [-- python --] {{{3
967let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
968if !filereadable(s:pythonpath)
969 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
970 if filereadable(fnameescape(s:pythonpath))
971 let s:pythonpath= fnameescape(s:pythonpath)
972 break
973 endif
974 endfor
975endif
976if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
977 unlet! b:current_syntax
978 syn cluster vimFuncBodyList add=vimPythonRegion
979 exe "syn include @vimPythonScript ".s:pythonpath
980 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
981 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
982 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
983 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
984 syn cluster vimFuncBodyList add=vimPythonRegion
985else
986 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
987 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
988endif
989unlet s:pythonpath
990
991" [-- tcl --] {{{3
992if has("win32") || has("win95") || has("win64") || has("win16")
993 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
994 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
995else
996 let s:trytcl= 1
997endif
998if s:trytcl
999 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
1000 if !filereadable(s:tclpath)
1001 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
1002 if filereadable(fnameescape(s:tclpath))
1003 let s:tclpath= fnameescape(s:tclpath)
1004 break
1005 endif
1006 endfor
1007 endif
1008 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
1009 unlet! b:current_syntax
1010 syn cluster vimFuncBodyList add=vimTclRegion
1011 exe "syn include @vimTclScript ".s:tclpath
1012 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
1013 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
1014 syn cluster vimFuncBodyList add=vimTclScript
1015 else
1016 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1017 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1018 endif
1019 unlet s:tclpath
1020else
1021 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1022 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1023endif
1024unlet s:trytcl
1025
1026" [-- mzscheme --] {{{3
1027let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1028if !filereadable(s:mzschemepath)
1029 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1030 if filereadable(fnameescape(s:mzschemepath))
1031 let s:mzschemepath= fnameescape(s:mzschemepath)
1032 break
1033 endif
1034 endfor
1035endif
1036if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1037 unlet! b:current_syntax
1038 let s:iskKeep= &isk
1039 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1040 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1041 let &isk= s:iskKeep
1042 unlet s:iskKeep
1043 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1044 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1045 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1046else
1047 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1048 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1049endif
1050unlet s:mzschemepath
1051
1052" Synchronize (speed) {{{2
1053"============
1054if exists("g:vimsyn_minlines")
1055 exe "syn sync minlines=".g:vimsyn_minlines
1056endif
1057exe "syn sync maxlines=".s:vimsyn_maxlines
1058syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001059syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001060syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1061
1062" ====================
1063" Highlighting Settings {{{2
1064" ====================
1065
1066if !exists("skip_vim_syntax_inits")
1067 if !exists("g:vimsyn_noerror")
1068 hi def link vimBehaveError vimError
1069 hi def link vimCollClassErr vimError
1070 hi def link vimErrSetting vimError
1071 hi def link vimEmbedError vimError
1072 hi def link vimFTError vimError
1073 hi def link vimFunctionError vimError
1074 hi def link vimFunc vimError
1075 hi def link vimHiAttribList vimError
1076 hi def link vimHiCtermError vimError
1077 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001078 hi def link vimMapModErr vimError
dkearnsae321b52024-06-15 23:06:17 +10001079 hi def link vimShebangError vimError
h-east9b53c052024-02-13 21:09:22 +01001080 hi def link vimSubstFlagErr vimError
1081 hi def link vimSynCaseError vimError
1082 hi def link vimSynFoldMethodError vimError
1083 hi def link vimBufnrWarn vimWarn
1084 endif
1085
Doug Kearnsce064932024-04-13 18:24:01 +02001086 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001087 hi def link vimAbb vimCommand
1088 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001089 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001090 hi def link vimAugroupError vimError
1091 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001092 hi def link vimAutoCmd vimCommand
1093 hi def link vimAutoEvent Type
1094 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001095 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001096 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001097 hi def link vimBehaveModel vimBehave
1098 hi def link vimBehave vimCommand
1099 hi def link vimBracket Delimiter
dkearnsa3bddb72024-06-14 01:48:10 +10001100 hi def link vimCatch vimCommand
h-east9b53c052024-02-13 21:09:22 +01001101 hi def link vimCmplxRepeat SpecialChar
1102 hi def link vimCommand Statement
1103 hi def link vimComment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001104 hi def link vimCommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001105 hi def link vim9Comment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001106 hi def link vim9CommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001107 hi def link vimCommentString vimString
1108 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001109 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001110 hi def link vimCondHL vimCommand
1111 hi def link vimConst vimCommand
1112 hi def link vimContinue Special
1113 hi def link vimContinueComment vimComment
1114 hi def link vimCtrlChar SpecialChar
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001115 hi def link vimDefComment vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +11001116 hi def link vimDefKey vimCommand
1117 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001118 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001119 hi def link vimEchohlNone vimGroup
1120 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001121 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001122 hi def link vimEndfunction vimCommand
1123 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001124 hi def link vimEnvvar PreProc
1125 hi def link vimError Error
1126 hi def link vimEscape Special
1127 hi def link vimFBVar vimVar
1128 hi def link vimFgBgAttrib vimHiAttrib
1129 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001130 hi def link vimFor vimCommand
1131 hi def link vimFTCmd vimCommand
1132 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001133 hi def link vimFuncBang vimBang
1134 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001135 hi def link vimFuncKey vimCommand
1136 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001137 hi def link vimFuncMod Special
1138 hi def link vimFuncParam vimVar
1139 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001140 hi def link vimFuncSID Special
1141 hi def link vimFuncVar Identifier
1142 hi def link vimGroupAdd vimSynOption
1143 hi def link vimGroupName vimGroup
1144 hi def link vimGroupRem vimSynOption
1145 hi def link vimGroupSpecial Special
1146 hi def link vimGroup Type
1147 hi def link vimHiAttrib PreProc
1148 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001149 hi def link vimHiClear Type
1150 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001151 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001152 hi def link vimHiCtermfont vimHiTerm
1153 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001154 hi def link vimHiCTerm vimHiTerm
1155 hi def link vimHighlight vimCommand
1156 hi def link vimHiGroup vimGroupName
1157 hi def link vimHiGuiFgBg vimHiTerm
1158 hi def link vimHiGuiFont vimHiTerm
1159 hi def link vimHiGuiRgb vimNumber
1160 hi def link vimHiGui vimHiTerm
1161 hi def link vimHiNmbr Number
1162 hi def link vimHiStartStop vimHiTerm
1163 hi def link vimHiTerm Type
1164 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001165 hi def link vimInsert vimString
1166 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001167 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001168 hi def link vimKeymapLineComment vimComment
1169 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001170 hi def link vimLet vimCommand
1171 hi def link vimLetHereDoc vimString
1172 hi def link vimLetHereDocStart Special
1173 hi def link vimLetHereDocStop Special
1174 hi def link vimLetRegister Special
1175 hi def link vimLineComment vimComment
1176 hi def link vim9LineComment vimComment
1177 hi def link vimMapBang vimBang
1178 hi def link vimMapModKey vimFuncSID
1179 hi def link vimMapMod vimBracket
1180 hi def link vimMap vimCommand
1181 hi def link vimMark Number
1182 hi def link vimMarkNumber vimNumber
Doug Kearnse85fdc72024-07-07 20:45:37 +02001183 hi def link vimMatch vimCommand
1184 hi def link vimMatchGroup vimGroup
1185 hi def link vimMatchNone vimGroup
h-east9b53c052024-02-13 21:09:22 +01001186 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001187 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001188 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001189 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001190 hi def link vimMenu vimCommand
1191 hi def link vimMenuNotation vimNotation
1192 hi def link vimMenuPriority Number
1193 hi def link vimMenuStatus Special
1194 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001195 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001196 hi def link vimMtchComment vimComment
1197 hi def link vimNorm vimCommand
1198 hi def link vimNotation Special
1199 hi def link vimNotFunc vimCommand
1200 hi def link vimNotPatSep vimString
1201 hi def link vimNumber Number
1202 hi def link vimOperError Error
1203 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001204 hi def link vimOption PreProc
1205 hi def link vimParenSep Delimiter
1206 hi def link vimPatSepErr vimError
1207 hi def link vimPatSepR vimPatSep
1208 hi def link vimPatSep SpecialChar
1209 hi def link vimPatSepZone vimString
1210 hi def link vimPatSepZ vimPatSep
1211 hi def link vimPattern Type
1212 hi def link vimPlainMark vimMark
1213 hi def link vimPlainRegister vimRegister
1214 hi def link vimRegister SpecialChar
1215 hi def link vimScriptDelim Comment
1216 hi def link vimSearchDelim Statement
1217 hi def link vimSearch vimString
1218 hi def link vimSep Delimiter
1219 hi def link vimSetMod vimOption
1220 hi def link vimSetSep Statement
1221 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001222 hi def link vim9Vim9Script vimCommand
dkearnsae321b52024-06-15 23:06:17 +10001223 hi def link vimShebang PreProc
Doug Kearns262e25e2024-06-14 20:16:35 +02001224 hi def link vimSleep vimCommand
1225 hi def link vimSleepArg Constant
1226 hi def link vimSleepBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001227 hi def link vimSpecFile Identifier
1228 hi def link vimSpecFileMod vimSpecFile
1229 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001230 hi def link vimStringCont vimString
1231 hi def link vimString String
1232 hi def link vimStringEnd vimString
1233 hi def link vimStringInterpolationBrace vimEscape
1234 hi def link vimSubst1 vimSubst
1235 hi def link vimSubstDelim Delimiter
1236 hi def link vimSubstFlags Special
1237 hi def link vimSubstSubstr SpecialChar
1238 hi def link vimSubstTwoBS vimString
1239 hi def link vimSubst vimCommand
1240 hi def link vimSynCaseError Error
1241 hi def link vimSynCase Type
1242 hi def link vimSyncC Type
1243 hi def link vimSyncError Error
1244 hi def link vimSyncGroupName vimGroupName
1245 hi def link vimSyncGroup vimGroupName
1246 hi def link vimSyncKey Type
1247 hi def link vimSyncNone Type
1248 hi def link vimSynContains vimSynOption
1249 hi def link vimSynError Error
1250 hi def link vimSynFoldMethodError Error
1251 hi def link vimSynFoldMethod Type
1252 hi def link vimSynKeyContainedin vimSynContains
1253 hi def link vimSynKeyOpt vimSynOption
1254 hi def link vimSynCchar vimSynOption
1255 hi def link vimSynCcharValue Character
1256 hi def link vimSynMtchGrp vimSynOption
1257 hi def link vimSynMtchOpt vimSynOption
1258 hi def link vimSynNextgroup vimSynOption
1259 hi def link vimSynNotPatRange vimSynRegPat
1260 hi def link vimSynOption Special
1261 hi def link vimSynPatRange vimString
1262 hi def link vimSynRegOpt vimSynOption
1263 hi def link vimSynRegPat vimString
1264 hi def link vimSynReg Type
1265 hi def link vimSyntax vimCommand
1266 hi def link vimSynType vimSpecial
dkearnsa3bddb72024-06-14 01:48:10 +10001267 hi def link vimThrow vimCommand
h-east9b53c052024-02-13 21:09:22 +01001268 hi def link vimTodo Todo
1269 hi def link vimType Type
1270 hi def link vimUnlet vimCommand
1271 hi def link vimUnletBang vimBang
1272 hi def link vimUnmap vimMap
1273 hi def link vimUserAttrbCmpltFunc Special
1274 hi def link vimUserAttrbCmplt vimSpecial
1275 hi def link vimUserAttrbKey vimOption
1276 hi def link vimUserAttrb vimSpecial
1277 hi def link vimUserAttrbError Error
1278 hi def link vimUserCmdError Error
1279 hi def link vimUserCommand vimCommand
1280 hi def link vimUserFunc Normal
1281 hi def link vimVar Identifier
1282 hi def link vimWarn WarningMsg
1283endif
1284
1285" Current Syntax Variable: {{{2
1286let b:current_syntax = "vim"
1287
1288" ---------------------------------------------------------------------
1289" Cleanup: {{{1
1290delc VimFolda
1291delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001292delc VimFoldh
1293delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001294delc VimFoldl
1295delc VimFoldm
1296delc VimFoldp
1297delc VimFoldP
1298delc VimFoldr
1299delc VimFoldt
1300let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001301unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001302" vim:ts=18 fdm=marker ft=vim