blob: f5e2110a29aafcff773cf453be08a26c331f26eb [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 Kearnsce064932024-04-13 18:24:01 +02006" Last Change: 2024 Apr 12
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'
194 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
195 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
196 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
197endif
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
247" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
248" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100249syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
250syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
251syn cluster vimFuncBodyList contains=@vimCmdList,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimLetHereDoc,vimLineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
252syn cluster vimDefBodyList contains=@vimCmdList,vimCmplxRepeat,vim9Comment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vim9LineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
253
254syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
255syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
256syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
257
258syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
259syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300260syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100261
262syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
263syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
264
265syn match vimFuncBang contained "!"
266syn match vimFuncSID contained "\c<sid>"
267syn match vimFuncSID contained "\<[sg]:"
268syn keyword vimFuncKey contained fu[nction]
269syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300270syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100271
272syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
273syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
274syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
275syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
276
277syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
278syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
279
280syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
281syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
282
283syn match vimEndfunction "\<endf\%[unction]\>"
284syn match vimEnddef "\<enddef\>"
h-east9b53c052024-02-13 21:09:22 +0100285
286if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns35e6f4c2024-03-22 06:41:10 +1100287 syn region vimFuncFold start="\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="\<endf\%[unction]\>" contains=vimFunction fold keepend transparent
dkearnse43ace52024-04-10 05:19:41 +1000288 syn region vimFuncFold start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="\<enddef\>" contains=vimDef fold keepend transparent
289 syn region vimFuncFold start="\<def\s\+new\i\+(" end="\<enddef\>" contains=vimDef fold keepend transparent
h-east9b53c052024-02-13 21:09:22 +0100290endif
dkearns35e6f4c2024-03-22 06:41:10 +1100291
292syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100293syn match vimFuncBlank contained "\s\+"
294
dkearns35e6f4c2024-03-22 06:41:10 +1100295" Types: {{{2
296" =====
h-east9b53c052024-02-13 21:09:22 +0100297" vimTypes : new for vim9
dkearns35e6f4c2024-03-22 06:41:10 +1100298syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
299syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
300
301syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
302syn keyword vimType contained any blob bool channel float job number string void
303syn match vimType contained "\<func\>"
304syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
305syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
306syn match vimUserType contained "\<\u\w*\>"
307
308syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100309
dkearns04e53632024-04-11 06:18:37 +1000310" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100311" =======
312
dkearns04e53632024-04-11 06:18:37 +1000313syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100314syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
315syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
316syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000317
318" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
319if s:vim9script
320 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
321else
322 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
323endif
324syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100325
326syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
327
328" Special Filenames, Modifiers, Extension Removal: {{{2
329" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100330syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
331syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
332syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
333syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
334syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
335syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100336syn match vimSpecFileMod "\(:[phtre]\)\+" contained
337
338" User-Specified Commands: {{{2
339" =======================
dkearns04e53632024-04-11 06:18:37 +1000340syn 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 +0100341syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000342syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
343syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100344syn match vimUserAttrbError contained "-\a\+\ze\s"
345syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
346syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
347syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
348syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
349syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
350syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
351syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
352syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
353if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
354 syn match vimUserCmdError contained "\S\+\>"
355endif
356syn case ignore
357syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
358" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
359syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
360syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
361
362syn case match
363syn match vimUserAttrbCmplt contained "custom,\u\w*"
364
dkearns04e53632024-04-11 06:18:37 +1000365syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
366
h-east9b53c052024-02-13 21:09:22 +0100367" Lower Priority Comments: after some vim commands... {{{2
368" =======================
dkearns04e53632024-04-11 06:18:37 +1000369syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
370
371if s:vim9script
372 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
373 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
374 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
375 " Vim9 comments - TODO: might be highlighted while they don't work
376 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
377 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
378 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
379 " Vim9 comment inside expression
380 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
381 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
382 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
383
384 syn cluster vimComment contains=vim9Comment
385else
386 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
387 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
388 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
389 " Vim9 comments - TODO: might be highlighted while they don't work
390 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
391 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
392 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
393 " Vim9 comment inside expression
394 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
395 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
396 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
397
398 syn cluster vimComment contains=vimComment
399endif
h-east9b53c052024-02-13 21:09:22 +0100400
401" Environment Variables: {{{2
402" =====================
403syn match vimEnvvar "\$\I\i*"
404syn match vimEnvvar "\${\I\i*}"
405
406" In-String Specials: {{{2
407" Try to catch strings, if nothing else matches (therefore it must precede the others!)
408" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
409syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
410syn match vimPatSepErr contained "\\)"
411syn match vimPatSep contained "\\|"
412syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
413syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
414syn match vimNotPatSep contained "\\\\"
415syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
416syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
417syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100418"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
419syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
420syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
421syn match vimEscape contained "\\."
422" syn match vimEscape contained +\\[befnrt\"]+
423syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
424syn match vimEscape contained "\\<" contains=vimNotation
425syn match vimEscape contained "\\<\*[^>]*>\=>"
426
dkearnsb1427b42024-02-28 05:59:30 +1100427syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
428syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
429syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
430syn match vimStringInterpolationBrace contained "{{"
431syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100432
433" Substitutions: {{{2
434" =============
435syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
436syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
437syn cluster vimSubstList add=vimCollection
dkearns2c51e152024-02-27 07:10:18 +1100438syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
439syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
440syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
441syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
442syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
443syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
444" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
445" : # is allowed but "not recommended" (see :h pattern-delimiter)
446syn 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
447syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
448syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
449syn match vimCollClassErr contained "\[:.\{-\}:\]"
450syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
451syn match vimSubstSubstr contained "\\z\=\d"
452syn match vimSubstTwoBS contained "\\\\"
453syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
454syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100455
456" 'String': {{{2
457syn match vimString "[^(,]'[^']\{-}\zs'"
458
459" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100460syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
461syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
462syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
463syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
464syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
465syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100466syn match vimPlainMark contained "'[a-zA-Z0-9]"
467syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
468
469syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
470syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
471syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
472syn match vimRegister '@"'
473syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
474syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
475
476syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
477syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
478
479syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
480syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
481syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
482
483" Complex Repeats: (:h complex-repeat) {{{2
484" ===============
485syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
486syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
487
488" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000489syn 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 +0100490syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
491syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
492syn match vimSetSep contained "[,:]"
493syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
494
495" Let And Var: {{{2
496" ===========
497syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
498syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
499syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
500
501syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
502syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
503syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
504
505VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$'
506syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
507
508" For: {{{2
509" ===
510syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100511
h-east9b53c052024-02-13 21:09:22 +0100512" Abbreviations: {{{2
513" =============
514" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100515" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100516
517" Autocmd: {{{2
518" =======
519syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
520syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000521syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100522syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000523syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
524syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100525
526" Echo And Execute: -- prefer strings! {{{2
527" ================
dkearns61887b32024-03-15 23:45:48 +1100528" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100529
dkearns61887b32024-03-15 23:45:48 +1100530syn region vimEcho
531 \ matchgroup=vimCommand
532 \ start="\<ec\%[ho]\>"
533 \ start="\<echoe\%[rr]\>"
534 \ start="\<echom\%[sg]\>"
535 \ start="\<echoc\%[onsole]\>"
536 \ start="\<echon\>"
537 \ start="\<echow\%[indow]\>"
538 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
539 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
540
541syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100542syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100543syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100544syn case match
545
dkearns35e6f4c2024-03-22 06:41:10 +1100546syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100547
548syn 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 +1100549
h-east9b53c052024-02-13 21:09:22 +0100550" Maps: {{{2
551" ====
552syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
553syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
554" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100555" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
556syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100557" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100558syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
559syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
560syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100561syn 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 +1100562syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
563" assume a continuation comment introduces the RHS
564syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100565syn case ignore
566syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
567syn case match
568
569" Menus: {{{2
570" =====
dkearns62b26042024-03-10 03:43:28 +1100571" NOTE: tail comments disallowed
572" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
573syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
574syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
575syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100576syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
577syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100578syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
579syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
580syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
581syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
582syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
583
584syn region vimMenutranslate
585 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
586 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
587 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
588 \ contains=@vimContinue,vimMenutranslateName keepend transparent
589" oneline is sufficient to match the current formatting in runtime/lang/*.vim
590syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
591syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100592
593" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
594" ======================
595syn case ignore
596syn 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
597
598syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
599syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
600syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
601syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
602syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
603syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
604syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
605
606syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
607syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
608syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
609syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
610syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
611syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
612
613syn match vimBracket contained "[\\<>]"
614syn case match
615
616" User Function Highlighting: {{{2
617" (following Gautam Iyer's suggestion)
618" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100619syn 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 +0300620syn 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 +1100621syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100622
623" User Command Highlighting: {{{2
624syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
625
626" Errors And Warnings: {{{2
627" ====================
628if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300629 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300630 " TODO: The |builtin-object-methods| exception should only apply to method
631 " definitions.
632 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 +0100633 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
634 syn match vimElseIfErr "\<else\s\+if\>"
635 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
636endif
637
638syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
639
640" Norm: {{{2
641" ====
642syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
643syn match vimNormCmds contained ".*$"
644
645" Syntax: {{{2
646"=======
647syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
648syn 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
649syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
650
651if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
652 syn match vimSynError contained "\i\+"
653 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
654endif
655syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
656syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
657syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
658if has("conceal")
659 " no whitespace allowed after '='
660 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
661 syn match vimSynCcharValue contained "\S"
662endif
663
dkearns04e53632024-04-11 06:18:37 +1000664syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100665syn cluster vimFuncBodyList add=vimSyntax
666
667" Syntax: case {{{2
668syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
669if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
670 syn match vimSynCaseError contained "\i\+"
671endif
672syn keyword vimSynCase contained ignore match
673
674" Syntax: clear {{{2
675syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
676
677" Syntax: cluster {{{2
678syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
679syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
680syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
681syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100682
683" Syntax: foldlevel {{{2
684syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
685if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
686 syn match vimSynFoldMethodError contained "\i\+"
687endif
688syn keyword vimSynFoldMethod contained start minimum
689
690" Syntax: iskeyword {{{2
691syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
692syn match vimIskList contained '\S\+' contains=vimIskSep
693syn match vimIskSep contained ','
694
695" Syntax: include {{{2
696syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100697
698" Syntax: keyword {{{2
699syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
700syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
701syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
702syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100703
704" Syntax: match {{{2
705syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
706syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
707syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
708syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100709
710" Syntax: off and on {{{2
711syn keyword vimSynType contained enable list manual off on reset
712
713" Syntax: region {{{2
714syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
715syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
716syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
717syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
718syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
719syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
720syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
721syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
722syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
723syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
724syn match vimSynPatMod contained "lc=\d\+"
725syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
726syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
727syn match vimSynNotPatRange contained "\\\\\|\\\["
728syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100729
730" Syntax: sync {{{2
731" ============
732syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
733if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
734 syn match vimSyncError contained "\i\+"
735endif
736syn keyword vimSyncC contained ccomment clear fromstart
737syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
738syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
739syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
740syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
741syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
742syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
743syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
744syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
745syn keyword vimSyncNone contained NONE
746
747" Additional IsCommand: here by reasons of precedence {{{2
748" ====================
749syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
750
751" Highlighting: {{{2
752" ============
dkearns04e53632024-04-11 06:18:37 +1000753syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100754if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
755 syn match vimHiCtermError contained "\D\i*"
756endif
757syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100758syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100759
760syn match vimHiGroup contained "\i\+"
761syn case ignore
762syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
763syn keyword vimFgBgAttrib contained none bg background fg foreground
764syn case match
765syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
766syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
767syn case ignore
768syn 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
769syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
770
771syn case match
772syn match vimHiFontname contained "[a-zA-Z\-*]\+"
773syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
774syn match vimHiGuiRgb contained "#\x\{6}"
775
776" Highlighting: hi group key=arg ... {{{2
777syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100778syn 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 +0100779if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
780 syn match vimHiKeyError contained "\i\+="he=e-1
781endif
782syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100783syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100784syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
785syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
786syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
787syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
788syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
789syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
790syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
791syn match vimHiTermcap contained "\S\+" contains=vimNotation
792syn match vimHiNmbr contained '\d\+'
793
794" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100795syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100796
797" Highlight: link {{{2
798" see tst24 (hi def vs hi) (Jul 06, 2018)
799"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 +1100800" TODO: simplify and allow line continuations --djk
801syn 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 +0100802
803" Control Characters: {{{2
804" ==================
805syn match vimCtrlChar "[- -]"
806
807" Beginners - Patterns that involve ^ {{{2
808" =========
dkearns04e53632024-04-11 06:18:37 +1000809if s:vim9script
810 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
811 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
812else
813 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
814 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
815endif
h-east9b53c052024-02-13 21:09:22 +0100816syn 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 +1000817syn 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 +0100818syn match vimContinue "^\s*\zs\\"
819syn match vimContinueComment '^\s*\zs["#]\\ .*' contained
820syn cluster vimContinue contains=vimContinue,vimContinueComment
821syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
822syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000823syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100824
825" Searches And Globals: {{{2
826" ====================
827syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
828syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100829syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
830syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100831
dkearns04e53632024-04-11 06:18:37 +1000832" Vim9 Script Regions: {{{2
833" ==================
834
835if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200836 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
837 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000838
Doug Kearnsce064932024-04-13 18:24:01 +0200839 syn keyword vim9Vim9ScriptArg noclear contained
840 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000841endif
842
h-east9b53c052024-02-13 21:09:22 +0100843" Embedded Scripts: {{{2
844" ================
845" perl,ruby : Benoit Cerrina
846" python,tcl : Johannes Zellner
847" mzscheme, lua : Charles Campbell
848
849" Allows users to specify the type of embedded script highlighting
850" they want: (perl/python/ruby/tcl support)
851" g:vimsyn_embed == 0 : don't embed any scripts
852" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
853" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
854" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
855" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
856" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
857" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
858if !exists("g:vimsyn_embed")
859 let g:vimsyn_embed= "lmpPr"
860endif
861
862" [-- lua --] {{{3
863let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
864if !filereadable(s:luapath)
865 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
866 if filereadable(fnameescape(s:luapath))
867 let s:luapath= fnameescape(s:luapath)
868 break
869 endif
870 endfor
871endif
872if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
873 unlet! b:current_syntax
874 syn cluster vimFuncBodyList add=vimLuaRegion
875 exe "syn include @vimLuaScript ".s:luapath
876 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
877 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
878 syn cluster vimFuncBodyList add=vimLuaRegion
879else
880 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
881 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
882endif
883unlet s:luapath
884
885" [-- perl --] {{{3
886let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
887if !filereadable(s:perlpath)
888 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
889 if filereadable(fnameescape(s:perlpath))
890 let s:perlpath= fnameescape(s:perlpath)
891 break
892 endif
893 endfor
894endif
895if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
896 unlet! b:current_syntax
897 syn cluster vimFuncBodyList add=vimPerlRegion
898 exe "syn include @vimPerlScript ".s:perlpath
899 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
900 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
901 syn cluster vimFuncBodyList add=vimPerlRegion
902else
903 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
904 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
905endif
906unlet s:perlpath
907
908" [-- ruby --] {{{3
909let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
910if !filereadable(s:rubypath)
911 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
912 if filereadable(fnameescape(s:rubypath))
913 let s:rubypath= fnameescape(s:rubypath)
914 break
915 endif
916 endfor
917endif
918if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
919 syn cluster vimFuncBodyList add=vimRubyRegion
920 unlet! b:current_syntax
921 exe "syn include @vimRubyScript ".s:rubypath
922 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
923 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
924 syn cluster vimFuncBodyList add=vimRubyRegion
925else
926 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
927 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
928endif
929unlet s:rubypath
930
931" [-- python --] {{{3
932let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
933if !filereadable(s:pythonpath)
934 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
935 if filereadable(fnameescape(s:pythonpath))
936 let s:pythonpath= fnameescape(s:pythonpath)
937 break
938 endif
939 endfor
940endif
941if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
942 unlet! b:current_syntax
943 syn cluster vimFuncBodyList add=vimPythonRegion
944 exe "syn include @vimPythonScript ".s:pythonpath
945 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
946 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
947 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
948 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
949 syn cluster vimFuncBodyList add=vimPythonRegion
950else
951 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
952 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
953endif
954unlet s:pythonpath
955
956" [-- tcl --] {{{3
957if has("win32") || has("win95") || has("win64") || has("win16")
958 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
959 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
960else
961 let s:trytcl= 1
962endif
963if s:trytcl
964 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
965 if !filereadable(s:tclpath)
966 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
967 if filereadable(fnameescape(s:tclpath))
968 let s:tclpath= fnameescape(s:tclpath)
969 break
970 endif
971 endfor
972 endif
973 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
974 unlet! b:current_syntax
975 syn cluster vimFuncBodyList add=vimTclRegion
976 exe "syn include @vimTclScript ".s:tclpath
977 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
978 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
979 syn cluster vimFuncBodyList add=vimTclScript
980 else
981 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
982 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
983 endif
984 unlet s:tclpath
985else
986 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
987 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
988endif
989unlet s:trytcl
990
991" [-- mzscheme --] {{{3
992let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
993if !filereadable(s:mzschemepath)
994 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
995 if filereadable(fnameescape(s:mzschemepath))
996 let s:mzschemepath= fnameescape(s:mzschemepath)
997 break
998 endif
999 endfor
1000endif
1001if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1002 unlet! b:current_syntax
1003 let s:iskKeep= &isk
1004 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1005 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1006 let &isk= s:iskKeep
1007 unlet s:iskKeep
1008 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1009 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1010 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1011else
1012 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1013 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1014endif
1015unlet s:mzschemepath
1016
1017" Synchronize (speed) {{{2
1018"============
1019if exists("g:vimsyn_minlines")
1020 exe "syn sync minlines=".g:vimsyn_minlines
1021endif
1022exe "syn sync maxlines=".s:vimsyn_maxlines
1023syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001024syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001025syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1026
1027" ====================
1028" Highlighting Settings {{{2
1029" ====================
1030
1031if !exists("skip_vim_syntax_inits")
1032 if !exists("g:vimsyn_noerror")
1033 hi def link vimBehaveError vimError
1034 hi def link vimCollClassErr vimError
1035 hi def link vimErrSetting vimError
1036 hi def link vimEmbedError vimError
1037 hi def link vimFTError vimError
1038 hi def link vimFunctionError vimError
1039 hi def link vimFunc vimError
1040 hi def link vimHiAttribList vimError
1041 hi def link vimHiCtermError vimError
1042 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001043 hi def link vimMapModErr vimError
1044 hi def link vimSubstFlagErr vimError
1045 hi def link vimSynCaseError vimError
1046 hi def link vimSynFoldMethodError vimError
1047 hi def link vimBufnrWarn vimWarn
1048 endif
1049
Doug Kearnsce064932024-04-13 18:24:01 +02001050 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001051 hi def link vimAbb vimCommand
1052 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001053 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001054 hi def link vimAugroupError vimError
1055 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001056 hi def link vimAutoCmd vimCommand
1057 hi def link vimAutoEvent Type
1058 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001059 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001060 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001061 hi def link vimBehaveModel vimBehave
1062 hi def link vimBehave vimCommand
1063 hi def link vimBracket Delimiter
1064 hi def link vimCmplxRepeat SpecialChar
1065 hi def link vimCommand Statement
1066 hi def link vimComment Comment
1067 hi def link vim9Comment Comment
1068 hi def link vimCommentString vimString
1069 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001070 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001071 hi def link vimCondHL vimCommand
1072 hi def link vimConst vimCommand
1073 hi def link vimContinue Special
1074 hi def link vimContinueComment vimComment
1075 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001076 hi def link vimDefComment vimComment
1077 hi def link vimDefKey vimCommand
1078 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001079 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001080 hi def link vimEchohlNone vimGroup
1081 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001082 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001083 hi def link vimEndfunction vimCommand
1084 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001085 hi def link vimEnvvar PreProc
1086 hi def link vimError Error
1087 hi def link vimEscape Special
1088 hi def link vimFBVar vimVar
1089 hi def link vimFgBgAttrib vimHiAttrib
1090 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001091 hi def link vimFor vimCommand
1092 hi def link vimFTCmd vimCommand
1093 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001094 hi def link vimFuncBang vimBang
1095 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001096 hi def link vimFuncKey vimCommand
1097 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001098 hi def link vimFuncMod Special
1099 hi def link vimFuncParam vimVar
1100 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001101 hi def link vimFuncSID Special
1102 hi def link vimFuncVar Identifier
1103 hi def link vimGroupAdd vimSynOption
1104 hi def link vimGroupName vimGroup
1105 hi def link vimGroupRem vimSynOption
1106 hi def link vimGroupSpecial Special
1107 hi def link vimGroup Type
1108 hi def link vimHiAttrib PreProc
1109 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001110 hi def link vimHiClear Type
1111 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001112 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001113 hi def link vimHiCtermfont vimHiTerm
1114 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001115 hi def link vimHiCTerm vimHiTerm
1116 hi def link vimHighlight vimCommand
1117 hi def link vimHiGroup vimGroupName
1118 hi def link vimHiGuiFgBg vimHiTerm
1119 hi def link vimHiGuiFont vimHiTerm
1120 hi def link vimHiGuiRgb vimNumber
1121 hi def link vimHiGui vimHiTerm
1122 hi def link vimHiNmbr Number
1123 hi def link vimHiStartStop vimHiTerm
1124 hi def link vimHiTerm Type
1125 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001126 hi def link vimInsert vimString
1127 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001128 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001129 hi def link vimKeymapLineComment vimComment
1130 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001131 hi def link vimLet vimCommand
1132 hi def link vimLetHereDoc vimString
1133 hi def link vimLetHereDocStart Special
1134 hi def link vimLetHereDocStop Special
1135 hi def link vimLetRegister Special
1136 hi def link vimLineComment vimComment
1137 hi def link vim9LineComment vimComment
1138 hi def link vimMapBang vimBang
1139 hi def link vimMapModKey vimFuncSID
1140 hi def link vimMapMod vimBracket
1141 hi def link vimMap vimCommand
1142 hi def link vimMark Number
1143 hi def link vimMarkNumber vimNumber
1144 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001145 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001146 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001147 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001148 hi def link vimMenu vimCommand
1149 hi def link vimMenuNotation vimNotation
1150 hi def link vimMenuPriority Number
1151 hi def link vimMenuStatus Special
1152 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001153 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001154 hi def link vimMtchComment vimComment
1155 hi def link vimNorm vimCommand
1156 hi def link vimNotation Special
1157 hi def link vimNotFunc vimCommand
1158 hi def link vimNotPatSep vimString
1159 hi def link vimNumber Number
1160 hi def link vimOperError Error
1161 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001162 hi def link vimOption PreProc
1163 hi def link vimParenSep Delimiter
1164 hi def link vimPatSepErr vimError
1165 hi def link vimPatSepR vimPatSep
1166 hi def link vimPatSep SpecialChar
1167 hi def link vimPatSepZone vimString
1168 hi def link vimPatSepZ vimPatSep
1169 hi def link vimPattern Type
1170 hi def link vimPlainMark vimMark
1171 hi def link vimPlainRegister vimRegister
1172 hi def link vimRegister SpecialChar
1173 hi def link vimScriptDelim Comment
1174 hi def link vimSearchDelim Statement
1175 hi def link vimSearch vimString
1176 hi def link vimSep Delimiter
1177 hi def link vimSetMod vimOption
1178 hi def link vimSetSep Statement
1179 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001180 hi def link vim9Vim9Script vimCommand
h-east9b53c052024-02-13 21:09:22 +01001181 hi def link vimSpecFile Identifier
1182 hi def link vimSpecFileMod vimSpecFile
1183 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001184 hi def link vimStringCont vimString
1185 hi def link vimString String
1186 hi def link vimStringEnd vimString
1187 hi def link vimStringInterpolationBrace vimEscape
1188 hi def link vimSubst1 vimSubst
1189 hi def link vimSubstDelim Delimiter
1190 hi def link vimSubstFlags Special
1191 hi def link vimSubstSubstr SpecialChar
1192 hi def link vimSubstTwoBS vimString
1193 hi def link vimSubst vimCommand
1194 hi def link vimSynCaseError Error
1195 hi def link vimSynCase Type
1196 hi def link vimSyncC Type
1197 hi def link vimSyncError Error
1198 hi def link vimSyncGroupName vimGroupName
1199 hi def link vimSyncGroup vimGroupName
1200 hi def link vimSyncKey Type
1201 hi def link vimSyncNone Type
1202 hi def link vimSynContains vimSynOption
1203 hi def link vimSynError Error
1204 hi def link vimSynFoldMethodError Error
1205 hi def link vimSynFoldMethod Type
1206 hi def link vimSynKeyContainedin vimSynContains
1207 hi def link vimSynKeyOpt vimSynOption
1208 hi def link vimSynCchar vimSynOption
1209 hi def link vimSynCcharValue Character
1210 hi def link vimSynMtchGrp vimSynOption
1211 hi def link vimSynMtchOpt vimSynOption
1212 hi def link vimSynNextgroup vimSynOption
1213 hi def link vimSynNotPatRange vimSynRegPat
1214 hi def link vimSynOption Special
1215 hi def link vimSynPatRange vimString
1216 hi def link vimSynRegOpt vimSynOption
1217 hi def link vimSynRegPat vimString
1218 hi def link vimSynReg Type
1219 hi def link vimSyntax vimCommand
1220 hi def link vimSynType vimSpecial
1221 hi def link vimTodo Todo
1222 hi def link vimType Type
1223 hi def link vimUnlet vimCommand
1224 hi def link vimUnletBang vimBang
1225 hi def link vimUnmap vimMap
1226 hi def link vimUserAttrbCmpltFunc Special
1227 hi def link vimUserAttrbCmplt vimSpecial
1228 hi def link vimUserAttrbKey vimOption
1229 hi def link vimUserAttrb vimSpecial
1230 hi def link vimUserAttrbError Error
1231 hi def link vimUserCmdError Error
1232 hi def link vimUserCommand vimCommand
1233 hi def link vimUserFunc Normal
1234 hi def link vimVar Identifier
1235 hi def link vimWarn WarningMsg
1236endif
1237
1238" Current Syntax Variable: {{{2
1239let b:current_syntax = "vim"
1240
1241" ---------------------------------------------------------------------
1242" Cleanup: {{{1
1243delc VimFolda
1244delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001245delc VimFoldh
1246delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001247delc VimFoldl
1248delc VimFoldm
1249delc VimFoldp
1250delc VimFoldP
1251delc VimFoldr
1252delc VimFoldt
1253let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001254unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001255" vim:ts=18 fdm=marker ft=vim