blob: adfd68ee62b4ed76c24a0b3fbd124e668106a694 [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
h-east84ac2122024-06-17 18:12:30 +02006" Last Change: 2024 Jun 17
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=''
h_eastc984b2f2024-05-27 22:40:25 +090073syn match vimHLGroup contained "\<Conceal\>"
h-east9b53c052024-02-13 21:09:22 +010074syn case match
75
76" Function Names {{{2
77" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
78
79"--- syntax here and above generated by mkvimvim ---
80" Special Vim Highlighting (not automatic) {{{1
81
82" Set up folding commands for this syntax highlighting file {{{2
Doug Kearnsce064932024-04-13 18:24:01 +020083if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010084 if g:vimsyn_folding =~# 'a'
85 com! -nargs=* VimFolda <args> fold
86 else
87 com! -nargs=* VimFolda <args>
88 endif
89 if g:vimsyn_folding =~# 'f'
90 com! -nargs=* VimFoldf <args> fold
91 else
92 com! -nargs=* VimFoldf <args>
93 endif
94 if g:vimsyn_folding =~# 'h'
95 com! -nargs=* VimFoldh <args> fold
96 else
97 com! -nargs=* VimFoldh <args>
98 endif
Doug Kearnsce064932024-04-13 18:24:01 +020099 if g:vimsyn_folding =~# 'H'
100 com! -nargs=* VimFoldH <args> fold
101 else
102 com! -nargs=* VimFoldH <args>
103 endif
h-east9b53c052024-02-13 21:09:22 +0100104 if g:vimsyn_folding =~# 'l'
105 com! -nargs=* VimFoldl <args> fold
106 else
107 com! -nargs=* VimFoldl <args>
108 endif
109 if g:vimsyn_folding =~# 'm'
110 com! -nargs=* VimFoldm <args> fold
111 else
112 com! -nargs=* VimFoldm <args>
113 endif
114 if g:vimsyn_folding =~# 'p'
115 com! -nargs=* VimFoldp <args> fold
116 else
117 com! -nargs=* VimFoldp <args>
118 endif
119 if g:vimsyn_folding =~# 'P'
120 com! -nargs=* VimFoldP <args> fold
121 else
122 com! -nargs=* VimFoldP <args>
123 endif
124 if g:vimsyn_folding =~# 'r'
125 com! -nargs=* VimFoldr <args> fold
126 else
127 com! -nargs=* VimFoldr <args>
128 endif
129 if g:vimsyn_folding =~# 't'
130 com! -nargs=* VimFoldt <args> fold
131 else
132 com! -nargs=* VimFoldt <args>
133 endif
134else
135 com! -nargs=* VimFolda <args>
136 com! -nargs=* VimFoldf <args>
137 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200138 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100139 com! -nargs=* VimFoldl <args>
140 com! -nargs=* VimFoldm <args>
141 com! -nargs=* VimFoldp <args>
142 com! -nargs=* VimFoldP <args>
143 com! -nargs=* VimFoldr <args>
144 com! -nargs=* VimFoldt <args>
145endif
146
147" Deprecated variable options {{{2
148if exists("g:vim_minlines")
149 let g:vimsyn_minlines= g:vim_minlines
150endif
151if exists("g:vim_maxlines")
152 let g:vimsyn_maxlines= g:vim_maxlines
153endif
154if exists("g:vimsyntax_noerror")
155 let g:vimsyn_noerror= g:vimsyntax_noerror
156endif
157
158" Variable options {{{2
159if exists("g:vim_maxlines")
160 let s:vimsyn_maxlines= g:vim_maxlines
161else
162 let s:vimsyn_maxlines= 60
163endif
164
165" Numbers {{{2
166" =======
dkearns5cd86c62024-03-12 07:40:58 +1100167syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000168syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
169syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
170syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
171syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
172syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
173syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
174syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100175syn case match
h-east9b53c052024-02-13 21:09:22 +0100176
177" All vimCommands are contained by vimIsCommand. {{{2
Doug Kearns262e25e2024-06-14 20:16:35 +0200178syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
dkearnsc4aef9a2024-03-04 02:42:47 +1100179syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100180syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
181syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
182syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
183syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
184syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
185syn match vimVar "\s\zs&t_k;"
186syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
187syn keyword vimCommand contained in
188
dkearnsb1427b42024-02-28 05:59:30 +1100189syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
190
h-east9b53c052024-02-13 21:09:22 +0100191" Insertions And Appends: insert append {{{2
192" (buftype != nofile test avoids having append, change, insert show up in the command window)
193" =======================
194if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000195 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
196 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
197 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100198endif
199
200" Behave! {{{2
201" =======
h-east9b53c052024-02-13 21:09:22 +0100202if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
203 syn match vimBehaveError contained "[^ ]\+"
204endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100205syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
206syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
207syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100208
dkearnsa3bddb72024-06-14 01:48:10 +1000209" Exception Handling {{{2
210syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
211syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
212syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
213
h-east9b53c052024-02-13 21:09:22 +0100214" Filetypes {{{2
215" =========
216syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
217if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
218 syn match vimFTError contained "\I\i*"
219endif
220syn keyword vimFTCmd contained filet[ype]
221syn keyword vimFTOption contained detect indent off on plugin
222
223" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
224" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000225syn 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 +1100226syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100227if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100228 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 +0100229else
dkearnsc4aef9a2024-03-04 02:42:47 +1100230 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 +0100231endif
h-east9b53c052024-02-13 21:09:22 +0100232if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100233 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100234endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100235
236syn match vimAutoCmdGroup contained "\S\+"
237syn match vimAugroupEnd contained "\c\<END\>"
238syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
239syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100240
241" Operators: {{{2
242" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100243syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100244syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
245syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
246syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100247syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100248syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
249if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
250 syn match vimOperError ")"
251endif
252
dkearns4ba70ca2024-04-15 04:32:56 +1000253" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100254" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100255syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
256syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000257
258syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
259syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
260syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
dkearns35e6f4c2024-03-22 06:41:10 +1100261
262syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
263syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
264syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
265
266syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
267syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300268syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100269
270syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
271syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
272
273syn match vimFuncBang contained "!"
274syn match vimFuncSID contained "\c<sid>"
275syn match vimFuncSID contained "\<[sg]:"
276syn keyword vimFuncKey contained fu[nction]
277syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300278syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100279
280syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
281syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
282syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
283syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
284
285syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
286syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
287
288syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
289syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
290
291syn match vimEndfunction "\<endf\%[unction]\>"
292syn match vimEnddef "\<enddef\>"
h-east9b53c052024-02-13 21:09:22 +0100293
294if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000295 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
296 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
297 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 +0100298endif
dkearns35e6f4c2024-03-22 06:41:10 +1100299
300syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100301syn match vimFuncBlank contained "\s\+"
302
dkearns35e6f4c2024-03-22 06:41:10 +1100303" Types: {{{2
304" =====
h-east9b53c052024-02-13 21:09:22 +0100305" vimTypes : new for vim9
dkearns35e6f4c2024-03-22 06:41:10 +1100306syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
307syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
308
309syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
310syn keyword vimType contained any blob bool channel float job number string void
311syn match vimType contained "\<func\>"
312syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
313syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
314syn match vimUserType contained "\<\u\w*\>"
315
316syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100317
dkearns04e53632024-04-11 06:18:37 +1000318" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100319" =======
320
dkearns04e53632024-04-11 06:18:37 +1000321syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100322syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
323syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
324syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000325
326" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
327if s:vim9script
328 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
329else
330 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
331endif
332syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100333
334syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
335
336" Special Filenames, Modifiers, Extension Removal: {{{2
337" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100338syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
339syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
340syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
341syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
342syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
343syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100344syn match vimSpecFileMod "\(:[phtre]\)\+" contained
345
346" User-Specified Commands: {{{2
347" =======================
dkearns04e53632024-04-11 06:18:37 +1000348syn 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 +0100349syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000350syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
351syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100352syn match vimUserAttrbError contained "-\a\+\ze\s"
353syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
354syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
355syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
356syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
357syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
358syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
359syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
360syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
361if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
362 syn match vimUserCmdError contained "\S\+\>"
363endif
364syn case ignore
365syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
366" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
367syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
368syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
369
370syn case match
371syn match vimUserAttrbCmplt contained "custom,\u\w*"
372
dkearns04e53632024-04-11 06:18:37 +1000373syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
374
h-east9b53c052024-02-13 21:09:22 +0100375" Lower Priority Comments: after some vim commands... {{{2
376" =======================
dkearns959c3c82024-06-12 04:18:08 +1000377if get(g:, "vimsyn_comment_strings", 1)
378 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
379endif
dkearns04e53632024-04-11 06:18:37 +1000380
381if s:vim9script
382 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
383 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
384 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
385 " Vim9 comments - TODO: might be highlighted while they don't work
386 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
387 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
388 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
389 " Vim9 comment inside expression
390 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
391 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
392 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
393
394 syn cluster vimComment contains=vim9Comment
395else
396 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
397 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
398 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
399 " Vim9 comments - TODO: might be highlighted while they don't work
400 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
401 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
402 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
403 " Vim9 comment inside expression
404 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
405 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
406 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
407
408 syn cluster vimComment contains=vimComment
409endif
h-east9b53c052024-02-13 21:09:22 +0100410
411" Environment Variables: {{{2
412" =====================
413syn match vimEnvvar "\$\I\i*"
414syn match vimEnvvar "\${\I\i*}"
415
416" In-String Specials: {{{2
417" Try to catch strings, if nothing else matches (therefore it must precede the others!)
418" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
419syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
420syn match vimPatSepErr contained "\\)"
421syn match vimPatSep contained "\\|"
422syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
423syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
424syn match vimNotPatSep contained "\\\\"
425syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
426syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
427syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100428"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
429syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
430syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
431syn match vimEscape contained "\\."
432" syn match vimEscape contained +\\[befnrt\"]+
433syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
434syn match vimEscape contained "\\<" contains=vimNotation
435syn match vimEscape contained "\\<\*[^>]*>\=>"
436
dkearnsb1427b42024-02-28 05:59:30 +1100437syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
438syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
439syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
440syn match vimStringInterpolationBrace contained "{{"
441syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100442
443" Substitutions: {{{2
444" =============
445syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
446syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
447syn cluster vimSubstList add=vimCollection
Doug Kearns92f4e912024-06-05 19:45:43 +0200448syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
449syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
450syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
451syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
dkearns2c51e152024-02-27 07:10:18 +1100452" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
453" : # is allowed but "not recommended" (see :h pattern-delimiter)
454syn 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
455syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
456syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
457syn match vimCollClassErr contained "\[:.\{-\}:\]"
458syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
459syn match vimSubstSubstr contained "\\z\=\d"
460syn match vimSubstTwoBS contained "\\\\"
461syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
462syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100463
Doug Kearns92f4e912024-06-05 19:45:43 +0200464" Vi compatibility
465syn match vimSubstDelim contained "\\"
466syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
467
h-east9b53c052024-02-13 21:09:22 +0100468" 'String': {{{2
469syn match vimString "[^(,]'[^']\{-}\zs'"
470
471" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100472syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
473syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
474syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
475syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
476syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
477syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100478syn match vimPlainMark contained "'[a-zA-Z0-9]"
479syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
480
481syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
482syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
483syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
484syn match vimRegister '@"'
485syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
486syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
487
488syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
489syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
490
491syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
492syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
493syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
494
495" Complex Repeats: (:h complex-repeat) {{{2
496" ===============
497syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
498syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
499
500" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000501syn 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 +0100502syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
503syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
504syn match vimSetSep contained "[,:]"
505syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
506
507" Let And Var: {{{2
508" ===========
509syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
510syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
511syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
512
513syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
514syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
515syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
516
dkearns4ba70ca2024-04-15 04:32:56 +1000517VimFoldh 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 +0100518syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
519
520" For: {{{2
521" ===
522syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100523
h-east9b53c052024-02-13 21:09:22 +0100524" Abbreviations: {{{2
525" =============
526" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100527" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100528
529" Autocmd: {{{2
530" =======
531syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
532syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000533syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100534syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000535syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
536syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100537
538" Echo And Execute: -- prefer strings! {{{2
539" ================
dkearns61887b32024-03-15 23:45:48 +1100540" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100541
dkearns61887b32024-03-15 23:45:48 +1100542syn region vimEcho
543 \ matchgroup=vimCommand
544 \ start="\<ec\%[ho]\>"
545 \ start="\<echoe\%[rr]\>"
546 \ start="\<echom\%[sg]\>"
547 \ start="\<echoc\%[onsole]\>"
548 \ start="\<echon\>"
549 \ start="\<echow\%[indow]\>"
550 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
551 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
552
553syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100554syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100555syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100556syn case match
557
dkearns35e6f4c2024-03-22 06:41:10 +1100558syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100559
560syn 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 +1100561
h-east9b53c052024-02-13 21:09:22 +0100562" Maps: {{{2
563" ====
564syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
565syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
566" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100567" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
568syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100569" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100570syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
571syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
572syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100573syn 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 +1100574syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
575" assume a continuation comment introduces the RHS
576syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100577syn case ignore
578syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
579syn case match
580
581" Menus: {{{2
582" =====
dkearns62b26042024-03-10 03:43:28 +1100583" NOTE: tail comments disallowed
584" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
585syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
586syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
587syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100588syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
589syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100590syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
591syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
592syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
593syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
594syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
595
596syn region vimMenutranslate
597 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
598 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
599 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
600 \ contains=@vimContinue,vimMenutranslateName keepend transparent
601" oneline is sufficient to match the current formatting in runtime/lang/*.vim
602syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
603syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100604
605" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
606" ======================
607syn case ignore
608syn 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
609
610syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
611syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
612syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
614syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
615syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
616syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
617
618syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
619syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
620syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
621syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
622syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
623syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
624
625syn match vimBracket contained "[\\<>]"
626syn case match
627
628" User Function Highlighting: {{{2
629" (following Gautam Iyer's suggestion)
630" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100631syn 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 +0300632syn 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 +1100633syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100634
635" User Command Highlighting: {{{2
636syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
637
638" Errors And Warnings: {{{2
639" ====================
640if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300641 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300642 " TODO: The |builtin-object-methods| exception should only apply to method
643 " definitions.
644 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 +0100645 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
646 syn match vimElseIfErr "\<else\s\+if\>"
647 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
648endif
649
650syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
651
652" Norm: {{{2
653" ====
654syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
655syn match vimNormCmds contained ".*$"
656
Doug Kearns262e25e2024-06-14 20:16:35 +0200657" Sleep: {{{2
658" =====
659syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
660syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
661syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
662
h-east9b53c052024-02-13 21:09:22 +0100663" Syntax: {{{2
664"=======
665syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
666syn 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
667syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
668
669if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
670 syn match vimSynError contained "\i\+"
671 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
672endif
673syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
674syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
675syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
676if has("conceal")
677 " no whitespace allowed after '='
678 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
679 syn match vimSynCcharValue contained "\S"
680endif
681
dkearns04e53632024-04-11 06:18:37 +1000682syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100683syn cluster vimFuncBodyList add=vimSyntax
684
685" Syntax: case {{{2
686syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
687if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
688 syn match vimSynCaseError contained "\i\+"
689endif
690syn keyword vimSynCase contained ignore match
691
692" Syntax: clear {{{2
693syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
694
695" Syntax: cluster {{{2
696syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
697syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
698syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
699syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100700
701" Syntax: foldlevel {{{2
702syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
703if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
704 syn match vimSynFoldMethodError contained "\i\+"
705endif
706syn keyword vimSynFoldMethod contained start minimum
707
708" Syntax: iskeyword {{{2
709syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
710syn match vimIskList contained '\S\+' contains=vimIskSep
711syn match vimIskSep contained ','
712
713" Syntax: include {{{2
714syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100715
716" Syntax: keyword {{{2
717syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
718syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
719syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
720syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100721
722" Syntax: match {{{2
723syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
724syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
725syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
726syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100727
728" Syntax: off and on {{{2
729syn keyword vimSynType contained enable list manual off on reset
730
731" Syntax: region {{{2
732syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
733syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
734syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
735syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
736syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
737syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
738syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
739syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
740syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
741syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
742syn match vimSynPatMod contained "lc=\d\+"
743syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
744syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
745syn match vimSynNotPatRange contained "\\\\\|\\\["
746syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100747
748" Syntax: sync {{{2
749" ============
750syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
751if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
752 syn match vimSyncError contained "\i\+"
753endif
754syn keyword vimSyncC contained ccomment clear fromstart
755syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
756syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
757syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
758syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
759syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
760syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
761syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
762syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
763syn keyword vimSyncNone contained NONE
764
765" Additional IsCommand: here by reasons of precedence {{{2
766" ====================
767syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
768
769" Highlighting: {{{2
770" ============
dkearns04e53632024-04-11 06:18:37 +1000771syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100772if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
773 syn match vimHiCtermError contained "\D\i*"
774endif
775syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100776syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100777
778syn match vimHiGroup contained "\i\+"
779syn case ignore
780syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
781syn keyword vimFgBgAttrib contained none bg background fg foreground
782syn case match
783syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
784syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
785syn case ignore
786syn 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
787syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
788
789syn case match
790syn match vimHiFontname contained "[a-zA-Z\-*]\+"
791syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
792syn match vimHiGuiRgb contained "#\x\{6}"
793
794" Highlighting: hi group key=arg ... {{{2
795syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100796syn 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 +0100797if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
798 syn match vimHiKeyError contained "\i\+="he=e-1
799endif
800syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100801syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100802syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
803syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
804syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
805syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
806syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
807syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
808syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
809syn match vimHiTermcap contained "\S\+" contains=vimNotation
810syn match vimHiNmbr contained '\d\+'
811
812" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100813syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100814
815" Highlight: link {{{2
816" see tst24 (hi def vs hi) (Jul 06, 2018)
817"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 +1100818" TODO: simplify and allow line continuations --djk
819syn 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 +0100820
821" Control Characters: {{{2
822" ==================
823syn match vimCtrlChar "[- -]"
824
825" Beginners - Patterns that involve ^ {{{2
826" =========
dkearns04e53632024-04-11 06:18:37 +1000827if s:vim9script
dkearns059cbe82024-06-12 03:27:53 +1000828 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
829 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000830else
dkearns059cbe82024-06-12 03:27:53 +1000831 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
832 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000833endif
h-east9b53c052024-02-13 21:09:22 +0100834syn 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 +1000835syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
dkearns059cbe82024-06-12 03:27:53 +1000836
dkearnsae321b52024-06-15 23:06:17 +1000837" allowed anywhere in the file
838if !s:vim9script
839 syn match vimShebangError "^\s*\zs#!.*" display
840endif
841syn match vimShebang "\%^#!.*" display
842
h-east9b53c052024-02-13 21:09:22 +0100843syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +1000844syn match vimContinueComment '^\s*\zs["#]\\ .*'
h-east9b53c052024-02-13 21:09:22 +0100845syn cluster vimContinue contains=vimContinue,vimContinueComment
846syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
847syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000848syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100849
850" Searches And Globals: {{{2
851" ====================
852syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
853syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100854syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
855syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100856
dkearns04e53632024-04-11 06:18:37 +1000857" Vim9 Script Regions: {{{2
858" ==================
859
860if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200861 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
862 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000863
Doug Kearnsce064932024-04-13 18:24:01 +0200864 syn keyword vim9Vim9ScriptArg noclear contained
865 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000866endif
867
h-east9b53c052024-02-13 21:09:22 +0100868" Embedded Scripts: {{{2
869" ================
870" perl,ruby : Benoit Cerrina
871" python,tcl : Johannes Zellner
872" mzscheme, lua : Charles Campbell
873
874" Allows users to specify the type of embedded script highlighting
875" they want: (perl/python/ruby/tcl support)
876" g:vimsyn_embed == 0 : don't embed any scripts
h-east84ac2122024-06-17 18:12:30 +0200877" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
878" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
879" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
880" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
881" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
882" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
h-east9b53c052024-02-13 21:09:22 +0100883if !exists("g:vimsyn_embed")
884 let g:vimsyn_embed= "lmpPr"
885endif
886
887" [-- lua --] {{{3
888let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
889if !filereadable(s:luapath)
890 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
891 if filereadable(fnameescape(s:luapath))
892 let s:luapath= fnameescape(s:luapath)
893 break
894 endif
895 endfor
896endif
897if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
898 unlet! b:current_syntax
899 syn cluster vimFuncBodyList add=vimLuaRegion
900 exe "syn include @vimLuaScript ".s:luapath
901 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
902 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
903 syn cluster vimFuncBodyList add=vimLuaRegion
904else
905 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
906 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
907endif
908unlet s:luapath
909
910" [-- perl --] {{{3
911let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
912if !filereadable(s:perlpath)
913 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
914 if filereadable(fnameescape(s:perlpath))
915 let s:perlpath= fnameescape(s:perlpath)
916 break
917 endif
918 endfor
919endif
920if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
921 unlet! b:current_syntax
922 syn cluster vimFuncBodyList add=vimPerlRegion
923 exe "syn include @vimPerlScript ".s:perlpath
924 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
925 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
926 syn cluster vimFuncBodyList add=vimPerlRegion
927else
928 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
929 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
930endif
931unlet s:perlpath
932
933" [-- ruby --] {{{3
934let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
935if !filereadable(s:rubypath)
936 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
937 if filereadable(fnameescape(s:rubypath))
938 let s:rubypath= fnameescape(s:rubypath)
939 break
940 endif
941 endfor
942endif
943if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
944 syn cluster vimFuncBodyList add=vimRubyRegion
945 unlet! b:current_syntax
946 exe "syn include @vimRubyScript ".s:rubypath
947 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
948 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
949 syn cluster vimFuncBodyList add=vimRubyRegion
950else
951 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
952 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
953endif
954unlet s:rubypath
955
956" [-- python --] {{{3
957let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
958if !filereadable(s:pythonpath)
959 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
960 if filereadable(fnameescape(s:pythonpath))
961 let s:pythonpath= fnameescape(s:pythonpath)
962 break
963 endif
964 endfor
965endif
966if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
967 unlet! b:current_syntax
968 syn cluster vimFuncBodyList add=vimPythonRegion
969 exe "syn include @vimPythonScript ".s:pythonpath
970 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
971 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
972 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
973 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
974 syn cluster vimFuncBodyList add=vimPythonRegion
975else
976 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
977 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
978endif
979unlet s:pythonpath
980
981" [-- tcl --] {{{3
982if has("win32") || has("win95") || has("win64") || has("win16")
983 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
984 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
985else
986 let s:trytcl= 1
987endif
988if s:trytcl
989 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
990 if !filereadable(s:tclpath)
991 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
992 if filereadable(fnameescape(s:tclpath))
993 let s:tclpath= fnameescape(s:tclpath)
994 break
995 endif
996 endfor
997 endif
998 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
999 unlet! b:current_syntax
1000 syn cluster vimFuncBodyList add=vimTclRegion
1001 exe "syn include @vimTclScript ".s:tclpath
1002 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
1003 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
1004 syn cluster vimFuncBodyList add=vimTclScript
1005 else
1006 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1007 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1008 endif
1009 unlet s:tclpath
1010else
1011 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1012 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1013endif
1014unlet s:trytcl
1015
1016" [-- mzscheme --] {{{3
1017let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1018if !filereadable(s:mzschemepath)
1019 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1020 if filereadable(fnameescape(s:mzschemepath))
1021 let s:mzschemepath= fnameescape(s:mzschemepath)
1022 break
1023 endif
1024 endfor
1025endif
1026if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1027 unlet! b:current_syntax
1028 let s:iskKeep= &isk
1029 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1030 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1031 let &isk= s:iskKeep
1032 unlet s:iskKeep
1033 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1034 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1035 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1036else
1037 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1038 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1039endif
1040unlet s:mzschemepath
1041
1042" Synchronize (speed) {{{2
1043"============
1044if exists("g:vimsyn_minlines")
1045 exe "syn sync minlines=".g:vimsyn_minlines
1046endif
1047exe "syn sync maxlines=".s:vimsyn_maxlines
1048syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001049syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001050syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1051
1052" ====================
1053" Highlighting Settings {{{2
1054" ====================
1055
1056if !exists("skip_vim_syntax_inits")
1057 if !exists("g:vimsyn_noerror")
1058 hi def link vimBehaveError vimError
1059 hi def link vimCollClassErr vimError
1060 hi def link vimErrSetting vimError
1061 hi def link vimEmbedError vimError
1062 hi def link vimFTError vimError
1063 hi def link vimFunctionError vimError
1064 hi def link vimFunc vimError
1065 hi def link vimHiAttribList vimError
1066 hi def link vimHiCtermError vimError
1067 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001068 hi def link vimMapModErr vimError
dkearnsae321b52024-06-15 23:06:17 +10001069 hi def link vimShebangError vimError
h-east9b53c052024-02-13 21:09:22 +01001070 hi def link vimSubstFlagErr vimError
1071 hi def link vimSynCaseError vimError
1072 hi def link vimSynFoldMethodError vimError
1073 hi def link vimBufnrWarn vimWarn
1074 endif
1075
Doug Kearnsce064932024-04-13 18:24:01 +02001076 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001077 hi def link vimAbb vimCommand
1078 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001079 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001080 hi def link vimAugroupError vimError
1081 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001082 hi def link vimAutoCmd vimCommand
1083 hi def link vimAutoEvent Type
1084 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001085 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001086 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001087 hi def link vimBehaveModel vimBehave
1088 hi def link vimBehave vimCommand
1089 hi def link vimBracket Delimiter
dkearnsa3bddb72024-06-14 01:48:10 +10001090 hi def link vimCatch vimCommand
h-east9b53c052024-02-13 21:09:22 +01001091 hi def link vimCmplxRepeat SpecialChar
1092 hi def link vimCommand Statement
1093 hi def link vimComment Comment
1094 hi def link vim9Comment Comment
1095 hi def link vimCommentString vimString
1096 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001097 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001098 hi def link vimCondHL vimCommand
1099 hi def link vimConst vimCommand
1100 hi def link vimContinue Special
1101 hi def link vimContinueComment vimComment
1102 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001103 hi def link vimDefComment vimComment
1104 hi def link vimDefKey vimCommand
1105 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001106 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001107 hi def link vimEchohlNone vimGroup
1108 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001109 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001110 hi def link vimEndfunction vimCommand
1111 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001112 hi def link vimEnvvar PreProc
1113 hi def link vimError Error
1114 hi def link vimEscape Special
1115 hi def link vimFBVar vimVar
1116 hi def link vimFgBgAttrib vimHiAttrib
1117 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001118 hi def link vimFor vimCommand
1119 hi def link vimFTCmd vimCommand
1120 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001121 hi def link vimFuncBang vimBang
1122 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001123 hi def link vimFuncKey vimCommand
1124 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001125 hi def link vimFuncMod Special
1126 hi def link vimFuncParam vimVar
1127 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001128 hi def link vimFuncSID Special
1129 hi def link vimFuncVar Identifier
1130 hi def link vimGroupAdd vimSynOption
1131 hi def link vimGroupName vimGroup
1132 hi def link vimGroupRem vimSynOption
1133 hi def link vimGroupSpecial Special
1134 hi def link vimGroup Type
1135 hi def link vimHiAttrib PreProc
1136 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001137 hi def link vimHiClear Type
1138 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001139 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001140 hi def link vimHiCtermfont vimHiTerm
1141 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001142 hi def link vimHiCTerm vimHiTerm
1143 hi def link vimHighlight vimCommand
1144 hi def link vimHiGroup vimGroupName
1145 hi def link vimHiGuiFgBg vimHiTerm
1146 hi def link vimHiGuiFont vimHiTerm
1147 hi def link vimHiGuiRgb vimNumber
1148 hi def link vimHiGui vimHiTerm
1149 hi def link vimHiNmbr Number
1150 hi def link vimHiStartStop vimHiTerm
1151 hi def link vimHiTerm Type
1152 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001153 hi def link vimInsert vimString
1154 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001155 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001156 hi def link vimKeymapLineComment vimComment
1157 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001158 hi def link vimLet vimCommand
1159 hi def link vimLetHereDoc vimString
1160 hi def link vimLetHereDocStart Special
1161 hi def link vimLetHereDocStop Special
1162 hi def link vimLetRegister Special
1163 hi def link vimLineComment vimComment
1164 hi def link vim9LineComment vimComment
1165 hi def link vimMapBang vimBang
1166 hi def link vimMapModKey vimFuncSID
1167 hi def link vimMapMod vimBracket
1168 hi def link vimMap vimCommand
1169 hi def link vimMark Number
1170 hi def link vimMarkNumber vimNumber
1171 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001172 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001173 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001174 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001175 hi def link vimMenu vimCommand
1176 hi def link vimMenuNotation vimNotation
1177 hi def link vimMenuPriority Number
1178 hi def link vimMenuStatus Special
1179 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001180 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001181 hi def link vimMtchComment vimComment
1182 hi def link vimNorm vimCommand
1183 hi def link vimNotation Special
1184 hi def link vimNotFunc vimCommand
1185 hi def link vimNotPatSep vimString
1186 hi def link vimNumber Number
1187 hi def link vimOperError Error
1188 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001189 hi def link vimOption PreProc
1190 hi def link vimParenSep Delimiter
1191 hi def link vimPatSepErr vimError
1192 hi def link vimPatSepR vimPatSep
1193 hi def link vimPatSep SpecialChar
1194 hi def link vimPatSepZone vimString
1195 hi def link vimPatSepZ vimPatSep
1196 hi def link vimPattern Type
1197 hi def link vimPlainMark vimMark
1198 hi def link vimPlainRegister vimRegister
1199 hi def link vimRegister SpecialChar
1200 hi def link vimScriptDelim Comment
1201 hi def link vimSearchDelim Statement
1202 hi def link vimSearch vimString
1203 hi def link vimSep Delimiter
1204 hi def link vimSetMod vimOption
1205 hi def link vimSetSep Statement
1206 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001207 hi def link vim9Vim9Script vimCommand
dkearnsae321b52024-06-15 23:06:17 +10001208 hi def link vimShebang PreProc
Doug Kearns262e25e2024-06-14 20:16:35 +02001209 hi def link vimSleep vimCommand
1210 hi def link vimSleepArg Constant
1211 hi def link vimSleepBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001212 hi def link vimSpecFile Identifier
1213 hi def link vimSpecFileMod vimSpecFile
1214 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001215 hi def link vimStringCont vimString
1216 hi def link vimString String
1217 hi def link vimStringEnd vimString
1218 hi def link vimStringInterpolationBrace vimEscape
1219 hi def link vimSubst1 vimSubst
1220 hi def link vimSubstDelim Delimiter
1221 hi def link vimSubstFlags Special
1222 hi def link vimSubstSubstr SpecialChar
1223 hi def link vimSubstTwoBS vimString
1224 hi def link vimSubst vimCommand
1225 hi def link vimSynCaseError Error
1226 hi def link vimSynCase Type
1227 hi def link vimSyncC Type
1228 hi def link vimSyncError Error
1229 hi def link vimSyncGroupName vimGroupName
1230 hi def link vimSyncGroup vimGroupName
1231 hi def link vimSyncKey Type
1232 hi def link vimSyncNone Type
1233 hi def link vimSynContains vimSynOption
1234 hi def link vimSynError Error
1235 hi def link vimSynFoldMethodError Error
1236 hi def link vimSynFoldMethod Type
1237 hi def link vimSynKeyContainedin vimSynContains
1238 hi def link vimSynKeyOpt vimSynOption
1239 hi def link vimSynCchar vimSynOption
1240 hi def link vimSynCcharValue Character
1241 hi def link vimSynMtchGrp vimSynOption
1242 hi def link vimSynMtchOpt vimSynOption
1243 hi def link vimSynNextgroup vimSynOption
1244 hi def link vimSynNotPatRange vimSynRegPat
1245 hi def link vimSynOption Special
1246 hi def link vimSynPatRange vimString
1247 hi def link vimSynRegOpt vimSynOption
1248 hi def link vimSynRegPat vimString
1249 hi def link vimSynReg Type
1250 hi def link vimSyntax vimCommand
1251 hi def link vimSynType vimSpecial
dkearnsa3bddb72024-06-14 01:48:10 +10001252 hi def link vimThrow vimCommand
h-east9b53c052024-02-13 21:09:22 +01001253 hi def link vimTodo Todo
1254 hi def link vimType Type
1255 hi def link vimUnlet vimCommand
1256 hi def link vimUnletBang vimBang
1257 hi def link vimUnmap vimMap
1258 hi def link vimUserAttrbCmpltFunc Special
1259 hi def link vimUserAttrbCmplt vimSpecial
1260 hi def link vimUserAttrbKey vimOption
1261 hi def link vimUserAttrb vimSpecial
1262 hi def link vimUserAttrbError Error
1263 hi def link vimUserCmdError Error
1264 hi def link vimUserCommand vimCommand
1265 hi def link vimUserFunc Normal
1266 hi def link vimVar Identifier
1267 hi def link vimWarn WarningMsg
1268endif
1269
1270" Current Syntax Variable: {{{2
1271let b:current_syntax = "vim"
1272
1273" ---------------------------------------------------------------------
1274" Cleanup: {{{1
1275delc VimFolda
1276delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001277delc VimFoldh
1278delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001279delc VimFoldl
1280delc VimFoldm
1281delc VimFoldp
1282delc VimFoldP
1283delc VimFoldr
1284delc VimFoldt
1285let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001286unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001287" vim:ts=18 fdm=marker ft=vim