blob: 90e1ee59bb2c2e3f5f663746284a3b3c00542917 [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
dkearns4ba70ca2024-04-15 04:32:56 +10006" Last Change: 2024 Apr 13
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
32syn keyword vimCommand contained 2mat[ch] 3mat[ch]
33
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030034" Lower priority for _new_ to distinguish constructors from the command.
35syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010036syn match vimCommand contained "\<z[-+^.=]\=\>"
37syn 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
38
39" vimOptions are caught only when contained in a vimSet {{{2
40" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
41
42" vimOptions: These are the turn-off setting variants {{{2
43" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
44
45" vimOptions: These are the invertible variants {{{2
46" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
47
48" termcap codes (which can also be set) {{{2
49" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
50" term key codes
51syn 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
52syn match vimOption contained "t_%1"
53syn match vimOption contained "t_#2"
54syn match vimOption contained "t_#4"
55syn match vimOption contained "t_@7"
56syn match vimOption contained "t_*7"
57syn match vimOption contained "t_&8"
58syn match vimOption contained "t_%i"
59syn match vimOption contained "t_k;"
60
61" unsupported settings: some were supported by vi but don't do anything in vim {{{2
62" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
63
64" AutoCmd Events {{{2
65syn case ignore
66" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
67
68" Highlight commonly used Groupnames {{{2
69syn 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
70
71" Default highlighting groups {{{2
72" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
73syn case match
74
75" Function Names {{{2
76" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
77
78"--- syntax here and above generated by mkvimvim ---
79" Special Vim Highlighting (not automatic) {{{1
80
81" Set up folding commands for this syntax highlighting file {{{2
Doug Kearnsce064932024-04-13 18:24:01 +020082if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010083 if g:vimsyn_folding =~# 'a'
84 com! -nargs=* VimFolda <args> fold
85 else
86 com! -nargs=* VimFolda <args>
87 endif
88 if g:vimsyn_folding =~# 'f'
89 com! -nargs=* VimFoldf <args> fold
90 else
91 com! -nargs=* VimFoldf <args>
92 endif
93 if g:vimsyn_folding =~# 'h'
94 com! -nargs=* VimFoldh <args> fold
95 else
96 com! -nargs=* VimFoldh <args>
97 endif
Doug Kearnsce064932024-04-13 18:24:01 +020098 if g:vimsyn_folding =~# 'H'
99 com! -nargs=* VimFoldH <args> fold
100 else
101 com! -nargs=* VimFoldH <args>
102 endif
h-east9b53c052024-02-13 21:09:22 +0100103 if g:vimsyn_folding =~# 'l'
104 com! -nargs=* VimFoldl <args> fold
105 else
106 com! -nargs=* VimFoldl <args>
107 endif
108 if g:vimsyn_folding =~# 'm'
109 com! -nargs=* VimFoldm <args> fold
110 else
111 com! -nargs=* VimFoldm <args>
112 endif
113 if g:vimsyn_folding =~# 'p'
114 com! -nargs=* VimFoldp <args> fold
115 else
116 com! -nargs=* VimFoldp <args>
117 endif
118 if g:vimsyn_folding =~# 'P'
119 com! -nargs=* VimFoldP <args> fold
120 else
121 com! -nargs=* VimFoldP <args>
122 endif
123 if g:vimsyn_folding =~# 'r'
124 com! -nargs=* VimFoldr <args> fold
125 else
126 com! -nargs=* VimFoldr <args>
127 endif
128 if g:vimsyn_folding =~# 't'
129 com! -nargs=* VimFoldt <args> fold
130 else
131 com! -nargs=* VimFoldt <args>
132 endif
133else
134 com! -nargs=* VimFolda <args>
135 com! -nargs=* VimFoldf <args>
136 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200137 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100138 com! -nargs=* VimFoldl <args>
139 com! -nargs=* VimFoldm <args>
140 com! -nargs=* VimFoldp <args>
141 com! -nargs=* VimFoldP <args>
142 com! -nargs=* VimFoldr <args>
143 com! -nargs=* VimFoldt <args>
144endif
145
146" Deprecated variable options {{{2
147if exists("g:vim_minlines")
148 let g:vimsyn_minlines= g:vim_minlines
149endif
150if exists("g:vim_maxlines")
151 let g:vimsyn_maxlines= g:vim_maxlines
152endif
153if exists("g:vimsyntax_noerror")
154 let g:vimsyn_noerror= g:vimsyntax_noerror
155endif
156
157" Variable options {{{2
158if exists("g:vim_maxlines")
159 let s:vimsyn_maxlines= g:vim_maxlines
160else
161 let s:vimsyn_maxlines= 60
162endif
163
164" Numbers {{{2
165" =======
dkearns5cd86c62024-03-12 07:40:58 +1100166syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000167syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
168syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
169syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
170syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
171syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
172syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
173syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100174syn case match
h-east9b53c052024-02-13 21:09:22 +0100175
176" All vimCommands are contained by vimIsCommand. {{{2
dkearns35e6f4c2024-03-22 06:41:10 +1100177syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
dkearnsc4aef9a2024-03-04 02:42:47 +1100178syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100179syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
180syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
181syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
182syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
183syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
184syn match vimVar "\s\zs&t_k;"
185syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
186syn keyword vimCommand contained in
187
dkearnsb1427b42024-02-28 05:59:30 +1100188syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
189
h-east9b53c052024-02-13 21:09:22 +0100190" Insertions And Appends: insert append {{{2
191" (buftype != nofile test avoids having append, change, insert show up in the command window)
192" =======================
193if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000194 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
195 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
196 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100197endif
198
199" Behave! {{{2
200" =======
h-east9b53c052024-02-13 21:09:22 +0100201if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
202 syn match vimBehaveError contained "[^ ]\+"
203endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100204syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
205syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
206syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100207
208" Filetypes {{{2
209" =========
210syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
211if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
212 syn match vimFTError contained "\I\i*"
213endif
214syn keyword vimFTCmd contained filet[ype]
215syn keyword vimFTOption contained detect indent off on plugin
216
217" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
218" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000219syn 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 +1100220syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100221if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100222 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 +0100223else
dkearnsc4aef9a2024-03-04 02:42:47 +1100224 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 +0100225endif
h-east9b53c052024-02-13 21:09:22 +0100226if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100227 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100228endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100229
230syn match vimAutoCmdGroup contained "\S\+"
231syn match vimAugroupEnd contained "\c\<END\>"
232syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
233syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100234
235" Operators: {{{2
236" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100237syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100238syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
239syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
240syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100241syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100242syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
243if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
244 syn match vimOperError ")"
245endif
246
dkearns4ba70ca2024-04-15 04:32:56 +1000247" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100248" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100249syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
250syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000251
252syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
253syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
254syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
dkearns35e6f4c2024-03-22 06:41:10 +1100255
256syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
257syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
258syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
259
260syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
261syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300262syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100263
264syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
265syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
266
267syn match vimFuncBang contained "!"
268syn match vimFuncSID contained "\c<sid>"
269syn match vimFuncSID contained "\<[sg]:"
270syn keyword vimFuncKey contained fu[nction]
271syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300272syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100273
274syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
275syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
276syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
277syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
278
279syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
280syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
281
282syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
283syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
284
285syn match vimEndfunction "\<endf\%[unction]\>"
286syn match vimEnddef "\<enddef\>"
h-east9b53c052024-02-13 21:09:22 +0100287
288if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000289 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
290 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
291 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 +0100292endif
dkearns35e6f4c2024-03-22 06:41:10 +1100293
294syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100295syn match vimFuncBlank contained "\s\+"
296
dkearns35e6f4c2024-03-22 06:41:10 +1100297" Types: {{{2
298" =====
h-east9b53c052024-02-13 21:09:22 +0100299" vimTypes : new for vim9
dkearns35e6f4c2024-03-22 06:41:10 +1100300syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
301syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
302
303syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
304syn keyword vimType contained any blob bool channel float job number string void
305syn match vimType contained "\<func\>"
306syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
307syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
308syn match vimUserType contained "\<\u\w*\>"
309
310syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100311
dkearns04e53632024-04-11 06:18:37 +1000312" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100313" =======
314
dkearns04e53632024-04-11 06:18:37 +1000315syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100316syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
317syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
318syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000319
320" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
321if s:vim9script
322 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
323else
324 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
325endif
326syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100327
328syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
329
330" Special Filenames, Modifiers, Extension Removal: {{{2
331" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100332syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
333syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
334syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
335syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
336syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
337syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100338syn match vimSpecFileMod "\(:[phtre]\)\+" contained
339
340" User-Specified Commands: {{{2
341" =======================
dkearns04e53632024-04-11 06:18:37 +1000342syn 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 +0100343syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000344syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
345syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100346syn match vimUserAttrbError contained "-\a\+\ze\s"
347syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
348syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
349syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
350syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
351syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
352syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
353syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
354syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
355if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
356 syn match vimUserCmdError contained "\S\+\>"
357endif
358syn case ignore
359syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
360" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
361syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
362syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
363
364syn case match
365syn match vimUserAttrbCmplt contained "custom,\u\w*"
366
dkearns04e53632024-04-11 06:18:37 +1000367syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
368
h-east9b53c052024-02-13 21:09:22 +0100369" Lower Priority Comments: after some vim commands... {{{2
370" =======================
dkearns04e53632024-04-11 06:18:37 +1000371syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
372
373if s:vim9script
374 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
375 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
376 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
377 " Vim9 comments - TODO: might be highlighted while they don't work
378 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
379 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
380 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
381 " Vim9 comment inside expression
382 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
383 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
384 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
385
386 syn cluster vimComment contains=vim9Comment
387else
388 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
389 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
390 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
391 " Vim9 comments - TODO: might be highlighted while they don't work
392 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
393 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
394 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
395 " Vim9 comment inside expression
396 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
397 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
398 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
399
400 syn cluster vimComment contains=vimComment
401endif
h-east9b53c052024-02-13 21:09:22 +0100402
403" Environment Variables: {{{2
404" =====================
405syn match vimEnvvar "\$\I\i*"
406syn match vimEnvvar "\${\I\i*}"
407
408" In-String Specials: {{{2
409" Try to catch strings, if nothing else matches (therefore it must precede the others!)
410" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
411syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
412syn match vimPatSepErr contained "\\)"
413syn match vimPatSep contained "\\|"
414syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
415syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
416syn match vimNotPatSep contained "\\\\"
417syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
418syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
419syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100420"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
421syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
422syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
423syn match vimEscape contained "\\."
424" syn match vimEscape contained +\\[befnrt\"]+
425syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
426syn match vimEscape contained "\\<" contains=vimNotation
427syn match vimEscape contained "\\<\*[^>]*>\=>"
428
dkearnsb1427b42024-02-28 05:59:30 +1100429syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
430syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
431syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
432syn match vimStringInterpolationBrace contained "{{"
433syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100434
435" Substitutions: {{{2
436" =============
437syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
438syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
439syn cluster vimSubstList add=vimCollection
dkearns2c51e152024-02-27 07:10:18 +1100440syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
441syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
442syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
443syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
444syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
445syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
446" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
447" : # is allowed but "not recommended" (see :h pattern-delimiter)
448syn 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
449syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
450syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
451syn match vimCollClassErr contained "\[:.\{-\}:\]"
452syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
453syn match vimSubstSubstr contained "\\z\=\d"
454syn match vimSubstTwoBS contained "\\\\"
455syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
456syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100457
458" 'String': {{{2
459syn match vimString "[^(,]'[^']\{-}\zs'"
460
461" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100462syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
463syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
464syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
465syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
466syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
467syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100468syn match vimPlainMark contained "'[a-zA-Z0-9]"
469syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
470
471syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
472syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
473syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
474syn match vimRegister '@"'
475syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
476syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
477
478syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
479syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
480
481syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
482syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
483syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
484
485" Complex Repeats: (:h complex-repeat) {{{2
486" ===============
487syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
488syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
489
490" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000491syn 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 +0100492syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
493syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
494syn match vimSetSep contained "[,:]"
495syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
496
497" Let And Var: {{{2
498" ===========
499syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
500syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
501syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
502
503syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
504syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
505syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
506
dkearns4ba70ca2024-04-15 04:32:56 +1000507VimFoldh 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 +0100508syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
509
510" For: {{{2
511" ===
512syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100513
h-east9b53c052024-02-13 21:09:22 +0100514" Abbreviations: {{{2
515" =============
516" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100517" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100518
519" Autocmd: {{{2
520" =======
521syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
522syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000523syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100524syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000525syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
526syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100527
528" Echo And Execute: -- prefer strings! {{{2
529" ================
dkearns61887b32024-03-15 23:45:48 +1100530" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100531
dkearns61887b32024-03-15 23:45:48 +1100532syn region vimEcho
533 \ matchgroup=vimCommand
534 \ start="\<ec\%[ho]\>"
535 \ start="\<echoe\%[rr]\>"
536 \ start="\<echom\%[sg]\>"
537 \ start="\<echoc\%[onsole]\>"
538 \ start="\<echon\>"
539 \ start="\<echow\%[indow]\>"
540 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
541 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
542
543syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100544syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100545syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100546syn case match
547
dkearns35e6f4c2024-03-22 06:41:10 +1100548syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100549
550syn 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 +1100551
h-east9b53c052024-02-13 21:09:22 +0100552" Maps: {{{2
553" ====
554syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
555syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
556" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100557" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
558syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100559" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100560syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
561syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
562syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100563syn 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 +1100564syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
565" assume a continuation comment introduces the RHS
566syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100567syn case ignore
568syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
569syn case match
570
571" Menus: {{{2
572" =====
dkearns62b26042024-03-10 03:43:28 +1100573" NOTE: tail comments disallowed
574" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
575syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
576syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
577syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100578syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
579syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100580syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
581syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
582syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
583syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
584syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
585
586syn region vimMenutranslate
587 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
588 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
589 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
590 \ contains=@vimContinue,vimMenutranslateName keepend transparent
591" oneline is sufficient to match the current formatting in runtime/lang/*.vim
592syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
593syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100594
595" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
596" ======================
597syn case ignore
598syn 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
599
600syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
601syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
602syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
603syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
604syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
605syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
606syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
607
608syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
609syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
610syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
611syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
612syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
614
615syn match vimBracket contained "[\\<>]"
616syn case match
617
618" User Function Highlighting: {{{2
619" (following Gautam Iyer's suggestion)
620" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100621syn 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 +0300622syn 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 +1100623syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100624
625" User Command Highlighting: {{{2
626syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
627
628" Errors And Warnings: {{{2
629" ====================
630if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300631 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300632 " TODO: The |builtin-object-methods| exception should only apply to method
633 " definitions.
634 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 +0100635 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
636 syn match vimElseIfErr "\<else\s\+if\>"
637 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
638endif
639
640syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
641
642" Norm: {{{2
643" ====
644syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
645syn match vimNormCmds contained ".*$"
646
647" Syntax: {{{2
648"=======
649syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
650syn 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
651syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
652
653if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
654 syn match vimSynError contained "\i\+"
655 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
656endif
657syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
658syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
659syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
660if has("conceal")
661 " no whitespace allowed after '='
662 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
663 syn match vimSynCcharValue contained "\S"
664endif
665
dkearns04e53632024-04-11 06:18:37 +1000666syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100667syn cluster vimFuncBodyList add=vimSyntax
668
669" Syntax: case {{{2
670syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
671if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
672 syn match vimSynCaseError contained "\i\+"
673endif
674syn keyword vimSynCase contained ignore match
675
676" Syntax: clear {{{2
677syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
678
679" Syntax: cluster {{{2
680syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
681syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
682syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
683syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100684
685" Syntax: foldlevel {{{2
686syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
687if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
688 syn match vimSynFoldMethodError contained "\i\+"
689endif
690syn keyword vimSynFoldMethod contained start minimum
691
692" Syntax: iskeyword {{{2
693syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
694syn match vimIskList contained '\S\+' contains=vimIskSep
695syn match vimIskSep contained ','
696
697" Syntax: include {{{2
698syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100699
700" Syntax: keyword {{{2
701syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
702syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
703syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
704syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100705
706" Syntax: match {{{2
707syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
708syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
709syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
710syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100711
712" Syntax: off and on {{{2
713syn keyword vimSynType contained enable list manual off on reset
714
715" Syntax: region {{{2
716syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
717syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
718syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
719syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
720syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
721syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
722syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
723syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
724syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
725syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
726syn match vimSynPatMod contained "lc=\d\+"
727syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
728syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
729syn match vimSynNotPatRange contained "\\\\\|\\\["
730syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100731
732" Syntax: sync {{{2
733" ============
734syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
735if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
736 syn match vimSyncError contained "\i\+"
737endif
738syn keyword vimSyncC contained ccomment clear fromstart
739syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
740syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
741syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
742syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
743syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
744syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
745syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
746syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
747syn keyword vimSyncNone contained NONE
748
749" Additional IsCommand: here by reasons of precedence {{{2
750" ====================
751syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
752
753" Highlighting: {{{2
754" ============
dkearns04e53632024-04-11 06:18:37 +1000755syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100756if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
757 syn match vimHiCtermError contained "\D\i*"
758endif
759syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100760syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100761
762syn match vimHiGroup contained "\i\+"
763syn case ignore
764syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
765syn keyword vimFgBgAttrib contained none bg background fg foreground
766syn case match
767syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
768syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
769syn case ignore
770syn 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
771syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
772
773syn case match
774syn match vimHiFontname contained "[a-zA-Z\-*]\+"
775syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
776syn match vimHiGuiRgb contained "#\x\{6}"
777
778" Highlighting: hi group key=arg ... {{{2
779syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100780syn 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 +0100781if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
782 syn match vimHiKeyError contained "\i\+="he=e-1
783endif
784syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100785syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100786syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
787syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
788syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
789syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
790syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
791syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
792syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
793syn match vimHiTermcap contained "\S\+" contains=vimNotation
794syn match vimHiNmbr contained '\d\+'
795
796" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100797syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100798
799" Highlight: link {{{2
800" see tst24 (hi def vs hi) (Jul 06, 2018)
801"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 +1100802" TODO: simplify and allow line continuations --djk
803syn 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 +0100804
805" Control Characters: {{{2
806" ==================
807syn match vimCtrlChar "[- -]"
808
809" Beginners - Patterns that involve ^ {{{2
810" =========
dkearns04e53632024-04-11 06:18:37 +1000811if s:vim9script
812 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
813 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
814else
815 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
816 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
817endif
h-east9b53c052024-02-13 21:09:22 +0100818syn 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 +1000819syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
h-east9b53c052024-02-13 21:09:22 +0100820syn match vimContinue "^\s*\zs\\"
821syn match vimContinueComment '^\s*\zs["#]\\ .*' contained
822syn cluster vimContinue contains=vimContinue,vimContinueComment
823syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
824syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000825syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100826
827" Searches And Globals: {{{2
828" ====================
829syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
830syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100831syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
832syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100833
dkearns04e53632024-04-11 06:18:37 +1000834" Vim9 Script Regions: {{{2
835" ==================
836
837if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200838 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
839 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000840
Doug Kearnsce064932024-04-13 18:24:01 +0200841 syn keyword vim9Vim9ScriptArg noclear contained
842 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000843endif
844
h-east9b53c052024-02-13 21:09:22 +0100845" Embedded Scripts: {{{2
846" ================
847" perl,ruby : Benoit Cerrina
848" python,tcl : Johannes Zellner
849" mzscheme, lua : Charles Campbell
850
851" Allows users to specify the type of embedded script highlighting
852" they want: (perl/python/ruby/tcl support)
853" g:vimsyn_embed == 0 : don't embed any scripts
854" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
855" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
856" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
857" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
858" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
859" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
860if !exists("g:vimsyn_embed")
861 let g:vimsyn_embed= "lmpPr"
862endif
863
864" [-- lua --] {{{3
865let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
866if !filereadable(s:luapath)
867 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
868 if filereadable(fnameescape(s:luapath))
869 let s:luapath= fnameescape(s:luapath)
870 break
871 endif
872 endfor
873endif
874if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
875 unlet! b:current_syntax
876 syn cluster vimFuncBodyList add=vimLuaRegion
877 exe "syn include @vimLuaScript ".s:luapath
878 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
879 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
880 syn cluster vimFuncBodyList add=vimLuaRegion
881else
882 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
883 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
884endif
885unlet s:luapath
886
887" [-- perl --] {{{3
888let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
889if !filereadable(s:perlpath)
890 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
891 if filereadable(fnameescape(s:perlpath))
892 let s:perlpath= fnameescape(s:perlpath)
893 break
894 endif
895 endfor
896endif
897if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
898 unlet! b:current_syntax
899 syn cluster vimFuncBodyList add=vimPerlRegion
900 exe "syn include @vimPerlScript ".s:perlpath
901 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
902 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
903 syn cluster vimFuncBodyList add=vimPerlRegion
904else
905 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
906 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
907endif
908unlet s:perlpath
909
910" [-- ruby --] {{{3
911let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
912if !filereadable(s:rubypath)
913 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
914 if filereadable(fnameescape(s:rubypath))
915 let s:rubypath= fnameescape(s:rubypath)
916 break
917 endif
918 endfor
919endif
920if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
921 syn cluster vimFuncBodyList add=vimRubyRegion
922 unlet! b:current_syntax
923 exe "syn include @vimRubyScript ".s:rubypath
924 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
925 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
926 syn cluster vimFuncBodyList add=vimRubyRegion
927else
928 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
929 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
930endif
931unlet s:rubypath
932
933" [-- python --] {{{3
934let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
935if !filereadable(s:pythonpath)
936 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
937 if filereadable(fnameescape(s:pythonpath))
938 let s:pythonpath= fnameescape(s:pythonpath)
939 break
940 endif
941 endfor
942endif
943if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
944 unlet! b:current_syntax
945 syn cluster vimFuncBodyList add=vimPythonRegion
946 exe "syn include @vimPythonScript ".s:pythonpath
947 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
948 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
949 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
950 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
951 syn cluster vimFuncBodyList add=vimPythonRegion
952else
953 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
954 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
955endif
956unlet s:pythonpath
957
958" [-- tcl --] {{{3
959if has("win32") || has("win95") || has("win64") || has("win16")
960 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
961 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
962else
963 let s:trytcl= 1
964endif
965if s:trytcl
966 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
967 if !filereadable(s:tclpath)
968 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
969 if filereadable(fnameescape(s:tclpath))
970 let s:tclpath= fnameescape(s:tclpath)
971 break
972 endif
973 endfor
974 endif
975 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
976 unlet! b:current_syntax
977 syn cluster vimFuncBodyList add=vimTclRegion
978 exe "syn include @vimTclScript ".s:tclpath
979 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
980 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
981 syn cluster vimFuncBodyList add=vimTclScript
982 else
983 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
984 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
985 endif
986 unlet s:tclpath
987else
988 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
989 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
990endif
991unlet s:trytcl
992
993" [-- mzscheme --] {{{3
994let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
995if !filereadable(s:mzschemepath)
996 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
997 if filereadable(fnameescape(s:mzschemepath))
998 let s:mzschemepath= fnameescape(s:mzschemepath)
999 break
1000 endif
1001 endfor
1002endif
1003if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1004 unlet! b:current_syntax
1005 let s:iskKeep= &isk
1006 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1007 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1008 let &isk= s:iskKeep
1009 unlet s:iskKeep
1010 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1011 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1012 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1013else
1014 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1015 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1016endif
1017unlet s:mzschemepath
1018
1019" Synchronize (speed) {{{2
1020"============
1021if exists("g:vimsyn_minlines")
1022 exe "syn sync minlines=".g:vimsyn_minlines
1023endif
1024exe "syn sync maxlines=".s:vimsyn_maxlines
1025syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001026syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001027syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1028
1029" ====================
1030" Highlighting Settings {{{2
1031" ====================
1032
1033if !exists("skip_vim_syntax_inits")
1034 if !exists("g:vimsyn_noerror")
1035 hi def link vimBehaveError vimError
1036 hi def link vimCollClassErr vimError
1037 hi def link vimErrSetting vimError
1038 hi def link vimEmbedError vimError
1039 hi def link vimFTError vimError
1040 hi def link vimFunctionError vimError
1041 hi def link vimFunc vimError
1042 hi def link vimHiAttribList vimError
1043 hi def link vimHiCtermError vimError
1044 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001045 hi def link vimMapModErr vimError
1046 hi def link vimSubstFlagErr vimError
1047 hi def link vimSynCaseError vimError
1048 hi def link vimSynFoldMethodError vimError
1049 hi def link vimBufnrWarn vimWarn
1050 endif
1051
Doug Kearnsce064932024-04-13 18:24:01 +02001052 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001053 hi def link vimAbb vimCommand
1054 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001055 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001056 hi def link vimAugroupError vimError
1057 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001058 hi def link vimAutoCmd vimCommand
1059 hi def link vimAutoEvent Type
1060 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001061 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001062 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001063 hi def link vimBehaveModel vimBehave
1064 hi def link vimBehave vimCommand
1065 hi def link vimBracket Delimiter
1066 hi def link vimCmplxRepeat SpecialChar
1067 hi def link vimCommand Statement
1068 hi def link vimComment Comment
1069 hi def link vim9Comment Comment
1070 hi def link vimCommentString vimString
1071 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001072 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001073 hi def link vimCondHL vimCommand
1074 hi def link vimConst vimCommand
1075 hi def link vimContinue Special
1076 hi def link vimContinueComment vimComment
1077 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001078 hi def link vimDefComment vimComment
1079 hi def link vimDefKey vimCommand
1080 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001081 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001082 hi def link vimEchohlNone vimGroup
1083 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001084 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001085 hi def link vimEndfunction vimCommand
1086 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001087 hi def link vimEnvvar PreProc
1088 hi def link vimError Error
1089 hi def link vimEscape Special
1090 hi def link vimFBVar vimVar
1091 hi def link vimFgBgAttrib vimHiAttrib
1092 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001093 hi def link vimFor vimCommand
1094 hi def link vimFTCmd vimCommand
1095 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001096 hi def link vimFuncBang vimBang
1097 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001098 hi def link vimFuncKey vimCommand
1099 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001100 hi def link vimFuncMod Special
1101 hi def link vimFuncParam vimVar
1102 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001103 hi def link vimFuncSID Special
1104 hi def link vimFuncVar Identifier
1105 hi def link vimGroupAdd vimSynOption
1106 hi def link vimGroupName vimGroup
1107 hi def link vimGroupRem vimSynOption
1108 hi def link vimGroupSpecial Special
1109 hi def link vimGroup Type
1110 hi def link vimHiAttrib PreProc
1111 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001112 hi def link vimHiClear Type
1113 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001114 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001115 hi def link vimHiCtermfont vimHiTerm
1116 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001117 hi def link vimHiCTerm vimHiTerm
1118 hi def link vimHighlight vimCommand
1119 hi def link vimHiGroup vimGroupName
1120 hi def link vimHiGuiFgBg vimHiTerm
1121 hi def link vimHiGuiFont vimHiTerm
1122 hi def link vimHiGuiRgb vimNumber
1123 hi def link vimHiGui vimHiTerm
1124 hi def link vimHiNmbr Number
1125 hi def link vimHiStartStop vimHiTerm
1126 hi def link vimHiTerm Type
1127 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001128 hi def link vimInsert vimString
1129 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001130 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001131 hi def link vimKeymapLineComment vimComment
1132 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001133 hi def link vimLet vimCommand
1134 hi def link vimLetHereDoc vimString
1135 hi def link vimLetHereDocStart Special
1136 hi def link vimLetHereDocStop Special
1137 hi def link vimLetRegister Special
1138 hi def link vimLineComment vimComment
1139 hi def link vim9LineComment vimComment
1140 hi def link vimMapBang vimBang
1141 hi def link vimMapModKey vimFuncSID
1142 hi def link vimMapMod vimBracket
1143 hi def link vimMap vimCommand
1144 hi def link vimMark Number
1145 hi def link vimMarkNumber vimNumber
1146 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001147 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001148 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001149 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001150 hi def link vimMenu vimCommand
1151 hi def link vimMenuNotation vimNotation
1152 hi def link vimMenuPriority Number
1153 hi def link vimMenuStatus Special
1154 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001155 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001156 hi def link vimMtchComment vimComment
1157 hi def link vimNorm vimCommand
1158 hi def link vimNotation Special
1159 hi def link vimNotFunc vimCommand
1160 hi def link vimNotPatSep vimString
1161 hi def link vimNumber Number
1162 hi def link vimOperError Error
1163 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001164 hi def link vimOption PreProc
1165 hi def link vimParenSep Delimiter
1166 hi def link vimPatSepErr vimError
1167 hi def link vimPatSepR vimPatSep
1168 hi def link vimPatSep SpecialChar
1169 hi def link vimPatSepZone vimString
1170 hi def link vimPatSepZ vimPatSep
1171 hi def link vimPattern Type
1172 hi def link vimPlainMark vimMark
1173 hi def link vimPlainRegister vimRegister
1174 hi def link vimRegister SpecialChar
1175 hi def link vimScriptDelim Comment
1176 hi def link vimSearchDelim Statement
1177 hi def link vimSearch vimString
1178 hi def link vimSep Delimiter
1179 hi def link vimSetMod vimOption
1180 hi def link vimSetSep Statement
1181 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001182 hi def link vim9Vim9Script vimCommand
h-east9b53c052024-02-13 21:09:22 +01001183 hi def link vimSpecFile Identifier
1184 hi def link vimSpecFileMod vimSpecFile
1185 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001186 hi def link vimStringCont vimString
1187 hi def link vimString String
1188 hi def link vimStringEnd vimString
1189 hi def link vimStringInterpolationBrace vimEscape
1190 hi def link vimSubst1 vimSubst
1191 hi def link vimSubstDelim Delimiter
1192 hi def link vimSubstFlags Special
1193 hi def link vimSubstSubstr SpecialChar
1194 hi def link vimSubstTwoBS vimString
1195 hi def link vimSubst vimCommand
1196 hi def link vimSynCaseError Error
1197 hi def link vimSynCase Type
1198 hi def link vimSyncC Type
1199 hi def link vimSyncError Error
1200 hi def link vimSyncGroupName vimGroupName
1201 hi def link vimSyncGroup vimGroupName
1202 hi def link vimSyncKey Type
1203 hi def link vimSyncNone Type
1204 hi def link vimSynContains vimSynOption
1205 hi def link vimSynError Error
1206 hi def link vimSynFoldMethodError Error
1207 hi def link vimSynFoldMethod Type
1208 hi def link vimSynKeyContainedin vimSynContains
1209 hi def link vimSynKeyOpt vimSynOption
1210 hi def link vimSynCchar vimSynOption
1211 hi def link vimSynCcharValue Character
1212 hi def link vimSynMtchGrp vimSynOption
1213 hi def link vimSynMtchOpt vimSynOption
1214 hi def link vimSynNextgroup vimSynOption
1215 hi def link vimSynNotPatRange vimSynRegPat
1216 hi def link vimSynOption Special
1217 hi def link vimSynPatRange vimString
1218 hi def link vimSynRegOpt vimSynOption
1219 hi def link vimSynRegPat vimString
1220 hi def link vimSynReg Type
1221 hi def link vimSyntax vimCommand
1222 hi def link vimSynType vimSpecial
1223 hi def link vimTodo Todo
1224 hi def link vimType Type
1225 hi def link vimUnlet vimCommand
1226 hi def link vimUnletBang vimBang
1227 hi def link vimUnmap vimMap
1228 hi def link vimUserAttrbCmpltFunc Special
1229 hi def link vimUserAttrbCmplt vimSpecial
1230 hi def link vimUserAttrbKey vimOption
1231 hi def link vimUserAttrb vimSpecial
1232 hi def link vimUserAttrbError Error
1233 hi def link vimUserCmdError Error
1234 hi def link vimUserCommand vimCommand
1235 hi def link vimUserFunc Normal
1236 hi def link vimVar Identifier
1237 hi def link vimWarn WarningMsg
1238endif
1239
1240" Current Syntax Variable: {{{2
1241let b:current_syntax = "vim"
1242
1243" ---------------------------------------------------------------------
1244" Cleanup: {{{1
1245delc VimFolda
1246delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001247delc VimFoldh
1248delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001249delc VimFoldl
1250delc VimFoldm
1251delc VimFoldp
1252delc VimFoldP
1253delc VimFoldr
1254delc VimFoldt
1255let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001256unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001257" vim:ts=18 fdm=marker ft=vim