blob: 7611ef7a19b9ec0546ecc800b457199b54175b23 [file] [log] [blame]
h-east9b53c052024-02-13 21:09:22 +01001" Vim syntax file
dkearns982e1912024-03-28 20:06:03 +11002" Language: Vim script
3" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
4" Doug Kearns <dougkearns@gmail.com>
5" URL: https://github.com/vim-jp/syntax-vim-ex
dkearns4ba70ca2024-04-15 04:32:56 +10006" Last Change: 2024 Apr 13
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008
9" DO NOT CHANGE DIRECTLY.
10" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
11" (Search string "GEN_SYN_VIM:" in this file)
12
13" Automatically generated keyword lists: {{{1
14
15" Quit when a syntax file was already loaded {{{2
16if exists("b:current_syntax")
17 finish
18endif
h-east9b53c052024-02-13 21:09:22 +010019let s:keepcpo= &cpo
20set cpo&vim
21
dkearns04e53632024-04-11 06:18:37 +100022let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
23
h-east9b53c052024-02-13 21:09:22 +010024" vimTodo: contains common special-notices for comments {{{2
25" Use the vimCommentGroup cluster to add your own.
26syn keyword vimTodo contained COMBAK FIXME TODO XXX
27syn cluster vimCommentGroup contains=vimTodo,@Spell
28
29" regular vim commands {{{2
30" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
31
32syn keyword vimCommand contained 2mat[ch] 3mat[ch]
33
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030034" Lower priority for _new_ to distinguish constructors from the command.
35syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010036syn match vimCommand contained "\<z[-+^.=]\=\>"
37syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
38
39" vimOptions are caught only when contained in a vimSet {{{2
40" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
41
42" vimOptions: These are the turn-off setting variants {{{2
43" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
44
45" vimOptions: These are the invertible variants {{{2
46" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
47
48" termcap codes (which can also be set) {{{2
49" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
50" term key codes
51syn keyword vimOption contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
52syn match vimOption contained "t_%1"
53syn match vimOption contained "t_#2"
54syn match vimOption contained "t_#4"
55syn match vimOption contained "t_@7"
56syn match vimOption contained "t_*7"
57syn match vimOption contained "t_&8"
58syn match vimOption contained "t_%i"
59syn match vimOption contained "t_k;"
60
61" unsupported settings: some were supported by vi but don't do anything in vim {{{2
62" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
63
64" AutoCmd Events {{{2
65syn case ignore
66" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
67
68" Highlight commonly used Groupnames {{{2
69syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
70
71" Default highlighting groups {{{2
72" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
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
dkearns35e6f4c2024-03-22 06:41:10 +1100178syn 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 +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
209" Filetypes {{{2
210" =========
211syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
212if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
213 syn match vimFTError contained "\I\i*"
214endif
215syn keyword vimFTCmd contained filet[ype]
216syn keyword vimFTOption contained detect indent off on plugin
217
218" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
219" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000220syn 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 +1100221syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100222if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100223 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 +0100224else
dkearnsc4aef9a2024-03-04 02:42:47 +1100225 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 +0100226endif
h-east9b53c052024-02-13 21:09:22 +0100227if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100228 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100229endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100230
231syn match vimAutoCmdGroup contained "\S\+"
232syn match vimAugroupEnd contained "\c\<END\>"
233syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
234syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100235
236" Operators: {{{2
237" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100238syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100239syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
240syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
241syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100242syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100243syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
244if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
245 syn match vimOperError ")"
246endif
247
dkearns4ba70ca2024-04-15 04:32:56 +1000248" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100249" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100250syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
251syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000252
253syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
254syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
255syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
dkearns35e6f4c2024-03-22 06:41:10 +1100256
257syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
258syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
259syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
260
261syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
262syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300263syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100264
265syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
266syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
267
268syn match vimFuncBang contained "!"
269syn match vimFuncSID contained "\c<sid>"
270syn match vimFuncSID contained "\<[sg]:"
271syn keyword vimFuncKey contained fu[nction]
272syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300273syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100274
275syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
276syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
277syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
278syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
279
280syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
281syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
282
283syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
284syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
285
286syn match vimEndfunction "\<endf\%[unction]\>"
287syn match vimEnddef "\<enddef\>"
h-east9b53c052024-02-13 21:09:22 +0100288
289if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000290 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
291 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
292 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 +0100293endif
dkearns35e6f4c2024-03-22 06:41:10 +1100294
295syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100296syn match vimFuncBlank contained "\s\+"
297
dkearns35e6f4c2024-03-22 06:41:10 +1100298" Types: {{{2
299" =====
h-east9b53c052024-02-13 21:09:22 +0100300" vimTypes : new for vim9
dkearns35e6f4c2024-03-22 06:41:10 +1100301syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
302syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
303
304syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
305syn keyword vimType contained any blob bool channel float job number string void
306syn match vimType contained "\<func\>"
307syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
308syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
309syn match vimUserType contained "\<\u\w*\>"
310
311syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100312
dkearns04e53632024-04-11 06:18:37 +1000313" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100314" =======
315
dkearns04e53632024-04-11 06:18:37 +1000316syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100317syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
318syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
319syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000320
321" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
322if s:vim9script
323 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
324else
325 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
326endif
327syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100328
329syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
330
331" Special Filenames, Modifiers, Extension Removal: {{{2
332" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100333syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
334syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
335syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
336syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
337syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
338syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100339syn match vimSpecFileMod "\(:[phtre]\)\+" contained
340
341" User-Specified Commands: {{{2
342" =======================
dkearns04e53632024-04-11 06:18:37 +1000343syn 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 +0100344syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000345syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
346syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100347syn match vimUserAttrbError contained "-\a\+\ze\s"
348syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
349syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
350syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
351syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
352syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
353syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
354syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
355syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
356if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
357 syn match vimUserCmdError contained "\S\+\>"
358endif
359syn case ignore
360syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
361" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
362syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
363syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
364
365syn case match
366syn match vimUserAttrbCmplt contained "custom,\u\w*"
367
dkearns04e53632024-04-11 06:18:37 +1000368syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
369
h-east9b53c052024-02-13 21:09:22 +0100370" Lower Priority Comments: after some vim commands... {{{2
371" =======================
dkearns04e53632024-04-11 06:18:37 +1000372syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
373
374if s:vim9script
375 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
376 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
377 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
378 " Vim9 comments - TODO: might be highlighted while they don't work
379 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
380 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
381 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
382 " Vim9 comment inside expression
383 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
384 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
385 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
386
387 syn cluster vimComment contains=vim9Comment
388else
389 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
390 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
391 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
392 " Vim9 comments - TODO: might be highlighted while they don't work
393 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
394 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
395 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
396 " Vim9 comment inside expression
397 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
398 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
399 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
400
401 syn cluster vimComment contains=vimComment
402endif
h-east9b53c052024-02-13 21:09:22 +0100403
404" Environment Variables: {{{2
405" =====================
406syn match vimEnvvar "\$\I\i*"
407syn match vimEnvvar "\${\I\i*}"
408
409" In-String Specials: {{{2
410" Try to catch strings, if nothing else matches (therefore it must precede the others!)
411" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
412syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
413syn match vimPatSepErr contained "\\)"
414syn match vimPatSep contained "\\|"
415syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
416syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
417syn match vimNotPatSep contained "\\\\"
418syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
419syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
420syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100421"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
422syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
423syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
424syn match vimEscape contained "\\."
425" syn match vimEscape contained +\\[befnrt\"]+
426syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
427syn match vimEscape contained "\\<" contains=vimNotation
428syn match vimEscape contained "\\<\*[^>]*>\=>"
429
dkearnsb1427b42024-02-28 05:59:30 +1100430syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
431syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
432syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
433syn match vimStringInterpolationBrace contained "{{"
434syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100435
436" Substitutions: {{{2
437" =============
438syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
439syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
440syn cluster vimSubstList add=vimCollection
dkearns2c51e152024-02-27 07:10:18 +1100441syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
442syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
443syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
444syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
445syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
446syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
447" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
448" : # is allowed but "not recommended" (see :h pattern-delimiter)
449syn 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
450syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
451syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
452syn match vimCollClassErr contained "\[:.\{-\}:\]"
453syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
454syn match vimSubstSubstr contained "\\z\=\d"
455syn match vimSubstTwoBS contained "\\\\"
456syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
457syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100458
459" 'String': {{{2
460syn match vimString "[^(,]'[^']\{-}\zs'"
461
462" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100463syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
464syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
465syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
466syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
467syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
468syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100469syn match vimPlainMark contained "'[a-zA-Z0-9]"
470syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
471
472syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
473syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
474syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
475syn match vimRegister '@"'
476syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
477syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
478
479syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
480syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
481
482syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
483syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
484syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
485
486" Complex Repeats: (:h complex-repeat) {{{2
487" ===============
488syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
489syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
490
491" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000492syn 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 +0100493syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
494syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
495syn match vimSetSep contained "[,:]"
496syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
497
498" Let And Var: {{{2
499" ===========
500syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
501syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
502syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
503
504syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
505syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
506syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
507
dkearns4ba70ca2024-04-15 04:32:56 +1000508VimFoldh 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 +0100509syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
510
511" For: {{{2
512" ===
513syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100514
h-east9b53c052024-02-13 21:09:22 +0100515" Abbreviations: {{{2
516" =============
517" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100518" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100519
520" Autocmd: {{{2
521" =======
522syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
523syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000524syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100525syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000526syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
527syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100528
529" Echo And Execute: -- prefer strings! {{{2
530" ================
dkearns61887b32024-03-15 23:45:48 +1100531" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100532
dkearns61887b32024-03-15 23:45:48 +1100533syn region vimEcho
534 \ matchgroup=vimCommand
535 \ start="\<ec\%[ho]\>"
536 \ start="\<echoe\%[rr]\>"
537 \ start="\<echom\%[sg]\>"
538 \ start="\<echoc\%[onsole]\>"
539 \ start="\<echon\>"
540 \ start="\<echow\%[indow]\>"
541 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
542 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
543
544syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100545syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100546syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100547syn case match
548
dkearns35e6f4c2024-03-22 06:41:10 +1100549syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100550
551syn 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 +1100552
h-east9b53c052024-02-13 21:09:22 +0100553" Maps: {{{2
554" ====
555syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
556syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
557" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100558" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
559syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100560" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100561syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
562syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
563syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100564syn 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 +1100565syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
566" assume a continuation comment introduces the RHS
567syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100568syn case ignore
569syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
570syn case match
571
572" Menus: {{{2
573" =====
dkearns62b26042024-03-10 03:43:28 +1100574" NOTE: tail comments disallowed
575" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
576syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
577syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
578syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100579syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
580syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100581syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
582syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
583syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
584syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
585syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
586
587syn region vimMenutranslate
588 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
589 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
590 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
591 \ contains=@vimContinue,vimMenutranslateName keepend transparent
592" oneline is sufficient to match the current formatting in runtime/lang/*.vim
593syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
594syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100595
596" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
597" ======================
598syn case ignore
599syn 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
600
601syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
602syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
603syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
604syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
605syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
606syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
607syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
608
609syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
610syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
611syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
612syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
614syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
615
616syn match vimBracket contained "[\\<>]"
617syn case match
618
619" User Function Highlighting: {{{2
620" (following Gautam Iyer's suggestion)
621" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100622syn 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 +0300623syn 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 +1100624syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100625
626" User Command Highlighting: {{{2
627syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
628
629" Errors And Warnings: {{{2
630" ====================
631if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300632 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300633 " TODO: The |builtin-object-methods| exception should only apply to method
634 " definitions.
635 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 +0100636 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
637 syn match vimElseIfErr "\<else\s\+if\>"
638 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
639endif
640
641syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
642
643" Norm: {{{2
644" ====
645syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
646syn match vimNormCmds contained ".*$"
647
648" Syntax: {{{2
649"=======
650syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
651syn 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
652syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
653
654if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
655 syn match vimSynError contained "\i\+"
656 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
657endif
658syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
659syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
660syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
661if has("conceal")
662 " no whitespace allowed after '='
663 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
664 syn match vimSynCcharValue contained "\S"
665endif
666
dkearns04e53632024-04-11 06:18:37 +1000667syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100668syn cluster vimFuncBodyList add=vimSyntax
669
670" Syntax: case {{{2
671syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
672if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
673 syn match vimSynCaseError contained "\i\+"
674endif
675syn keyword vimSynCase contained ignore match
676
677" Syntax: clear {{{2
678syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
679
680" Syntax: cluster {{{2
681syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
682syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
683syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
684syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100685
686" Syntax: foldlevel {{{2
687syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
688if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
689 syn match vimSynFoldMethodError contained "\i\+"
690endif
691syn keyword vimSynFoldMethod contained start minimum
692
693" Syntax: iskeyword {{{2
694syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
695syn match vimIskList contained '\S\+' contains=vimIskSep
696syn match vimIskSep contained ','
697
698" Syntax: include {{{2
699syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100700
701" Syntax: keyword {{{2
702syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
703syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
704syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
705syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100706
707" Syntax: match {{{2
708syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
709syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
710syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
711syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100712
713" Syntax: off and on {{{2
714syn keyword vimSynType contained enable list manual off on reset
715
716" Syntax: region {{{2
717syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
718syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
719syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
720syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
721syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
722syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
723syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
724syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
725syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
726syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
727syn match vimSynPatMod contained "lc=\d\+"
728syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
729syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
730syn match vimSynNotPatRange contained "\\\\\|\\\["
731syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100732
733" Syntax: sync {{{2
734" ============
735syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
736if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
737 syn match vimSyncError contained "\i\+"
738endif
739syn keyword vimSyncC contained ccomment clear fromstart
740syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
741syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
742syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
743syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
744syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
745syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
746syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
747syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
748syn keyword vimSyncNone contained NONE
749
750" Additional IsCommand: here by reasons of precedence {{{2
751" ====================
752syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
753
754" Highlighting: {{{2
755" ============
dkearns04e53632024-04-11 06:18:37 +1000756syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100757if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
758 syn match vimHiCtermError contained "\D\i*"
759endif
760syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100761syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100762
763syn match vimHiGroup contained "\i\+"
764syn case ignore
765syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
766syn keyword vimFgBgAttrib contained none bg background fg foreground
767syn case match
768syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
769syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
770syn case ignore
771syn 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
772syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
773
774syn case match
775syn match vimHiFontname contained "[a-zA-Z\-*]\+"
776syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
777syn match vimHiGuiRgb contained "#\x\{6}"
778
779" Highlighting: hi group key=arg ... {{{2
780syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100781syn 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 +0100782if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
783 syn match vimHiKeyError contained "\i\+="he=e-1
784endif
785syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100786syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100787syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
788syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
789syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
790syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
791syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
792syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
793syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
794syn match vimHiTermcap contained "\S\+" contains=vimNotation
795syn match vimHiNmbr contained '\d\+'
796
797" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100798syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100799
800" Highlight: link {{{2
801" see tst24 (hi def vs hi) (Jul 06, 2018)
802"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 +1100803" TODO: simplify and allow line continuations --djk
804syn 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 +0100805
806" Control Characters: {{{2
807" ==================
808syn match vimCtrlChar "[- -]"
809
810" Beginners - Patterns that involve ^ {{{2
811" =========
dkearns04e53632024-04-11 06:18:37 +1000812if s:vim9script
813 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
814 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
815else
816 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
817 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
818endif
h-east9b53c052024-02-13 21:09:22 +0100819syn 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 +1000820syn 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 +0100821syn match vimContinue "^\s*\zs\\"
822syn match vimContinueComment '^\s*\zs["#]\\ .*' contained
823syn cluster vimContinue contains=vimContinue,vimContinueComment
824syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
825syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000826syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100827
828" Searches And Globals: {{{2
829" ====================
830syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
831syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100832syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
833syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100834
dkearns04e53632024-04-11 06:18:37 +1000835" Vim9 Script Regions: {{{2
836" ==================
837
838if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200839 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
840 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000841
Doug Kearnsce064932024-04-13 18:24:01 +0200842 syn keyword vim9Vim9ScriptArg noclear contained
843 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000844endif
845
h-east9b53c052024-02-13 21:09:22 +0100846" Embedded Scripts: {{{2
847" ================
848" perl,ruby : Benoit Cerrina
849" python,tcl : Johannes Zellner
850" mzscheme, lua : Charles Campbell
851
852" Allows users to specify the type of embedded script highlighting
853" they want: (perl/python/ruby/tcl support)
854" g:vimsyn_embed == 0 : don't embed any scripts
855" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
856" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
857" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
858" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
859" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
860" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
861if !exists("g:vimsyn_embed")
862 let g:vimsyn_embed= "lmpPr"
863endif
864
865" [-- lua --] {{{3
866let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
867if !filereadable(s:luapath)
868 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
869 if filereadable(fnameescape(s:luapath))
870 let s:luapath= fnameescape(s:luapath)
871 break
872 endif
873 endfor
874endif
875if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
876 unlet! b:current_syntax
877 syn cluster vimFuncBodyList add=vimLuaRegion
878 exe "syn include @vimLuaScript ".s:luapath
879 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
880 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
881 syn cluster vimFuncBodyList add=vimLuaRegion
882else
883 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
884 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
885endif
886unlet s:luapath
887
888" [-- perl --] {{{3
889let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
890if !filereadable(s:perlpath)
891 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
892 if filereadable(fnameescape(s:perlpath))
893 let s:perlpath= fnameescape(s:perlpath)
894 break
895 endif
896 endfor
897endif
898if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
899 unlet! b:current_syntax
900 syn cluster vimFuncBodyList add=vimPerlRegion
901 exe "syn include @vimPerlScript ".s:perlpath
902 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
903 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
904 syn cluster vimFuncBodyList add=vimPerlRegion
905else
906 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
907 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
908endif
909unlet s:perlpath
910
911" [-- ruby --] {{{3
912let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
913if !filereadable(s:rubypath)
914 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
915 if filereadable(fnameescape(s:rubypath))
916 let s:rubypath= fnameescape(s:rubypath)
917 break
918 endif
919 endfor
920endif
921if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
922 syn cluster vimFuncBodyList add=vimRubyRegion
923 unlet! b:current_syntax
924 exe "syn include @vimRubyScript ".s:rubypath
925 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
926 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
927 syn cluster vimFuncBodyList add=vimRubyRegion
928else
929 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
930 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
931endif
932unlet s:rubypath
933
934" [-- python --] {{{3
935let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
936if !filereadable(s:pythonpath)
937 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
938 if filereadable(fnameescape(s:pythonpath))
939 let s:pythonpath= fnameescape(s:pythonpath)
940 break
941 endif
942 endfor
943endif
944if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
945 unlet! b:current_syntax
946 syn cluster vimFuncBodyList add=vimPythonRegion
947 exe "syn include @vimPythonScript ".s:pythonpath
948 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
949 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
950 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
951 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
952 syn cluster vimFuncBodyList add=vimPythonRegion
953else
954 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
955 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
956endif
957unlet s:pythonpath
958
959" [-- tcl --] {{{3
960if has("win32") || has("win95") || has("win64") || has("win16")
961 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
962 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
963else
964 let s:trytcl= 1
965endif
966if s:trytcl
967 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
968 if !filereadable(s:tclpath)
969 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
970 if filereadable(fnameescape(s:tclpath))
971 let s:tclpath= fnameescape(s:tclpath)
972 break
973 endif
974 endfor
975 endif
976 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
977 unlet! b:current_syntax
978 syn cluster vimFuncBodyList add=vimTclRegion
979 exe "syn include @vimTclScript ".s:tclpath
980 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
981 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
982 syn cluster vimFuncBodyList add=vimTclScript
983 else
984 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
985 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
986 endif
987 unlet s:tclpath
988else
989 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
990 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
991endif
992unlet s:trytcl
993
994" [-- mzscheme --] {{{3
995let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
996if !filereadable(s:mzschemepath)
997 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
998 if filereadable(fnameescape(s:mzschemepath))
999 let s:mzschemepath= fnameescape(s:mzschemepath)
1000 break
1001 endif
1002 endfor
1003endif
1004if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1005 unlet! b:current_syntax
1006 let s:iskKeep= &isk
1007 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1008 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1009 let &isk= s:iskKeep
1010 unlet s:iskKeep
1011 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1012 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1013 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1014else
1015 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1016 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1017endif
1018unlet s:mzschemepath
1019
1020" Synchronize (speed) {{{2
1021"============
1022if exists("g:vimsyn_minlines")
1023 exe "syn sync minlines=".g:vimsyn_minlines
1024endif
1025exe "syn sync maxlines=".s:vimsyn_maxlines
1026syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001027syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001028syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1029
1030" ====================
1031" Highlighting Settings {{{2
1032" ====================
1033
1034if !exists("skip_vim_syntax_inits")
1035 if !exists("g:vimsyn_noerror")
1036 hi def link vimBehaveError vimError
1037 hi def link vimCollClassErr vimError
1038 hi def link vimErrSetting vimError
1039 hi def link vimEmbedError vimError
1040 hi def link vimFTError vimError
1041 hi def link vimFunctionError vimError
1042 hi def link vimFunc vimError
1043 hi def link vimHiAttribList vimError
1044 hi def link vimHiCtermError vimError
1045 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001046 hi def link vimMapModErr vimError
1047 hi def link vimSubstFlagErr vimError
1048 hi def link vimSynCaseError vimError
1049 hi def link vimSynFoldMethodError vimError
1050 hi def link vimBufnrWarn vimWarn
1051 endif
1052
Doug Kearnsce064932024-04-13 18:24:01 +02001053 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001054 hi def link vimAbb vimCommand
1055 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001056 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001057 hi def link vimAugroupError vimError
1058 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001059 hi def link vimAutoCmd vimCommand
1060 hi def link vimAutoEvent Type
1061 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001062 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001063 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001064 hi def link vimBehaveModel vimBehave
1065 hi def link vimBehave vimCommand
1066 hi def link vimBracket Delimiter
1067 hi def link vimCmplxRepeat SpecialChar
1068 hi def link vimCommand Statement
1069 hi def link vimComment Comment
1070 hi def link vim9Comment Comment
1071 hi def link vimCommentString vimString
1072 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001073 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001074 hi def link vimCondHL vimCommand
1075 hi def link vimConst vimCommand
1076 hi def link vimContinue Special
1077 hi def link vimContinueComment vimComment
1078 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001079 hi def link vimDefComment vimComment
1080 hi def link vimDefKey vimCommand
1081 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001082 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001083 hi def link vimEchohlNone vimGroup
1084 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001085 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001086 hi def link vimEndfunction vimCommand
1087 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001088 hi def link vimEnvvar PreProc
1089 hi def link vimError Error
1090 hi def link vimEscape Special
1091 hi def link vimFBVar vimVar
1092 hi def link vimFgBgAttrib vimHiAttrib
1093 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001094 hi def link vimFor vimCommand
1095 hi def link vimFTCmd vimCommand
1096 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001097 hi def link vimFuncBang vimBang
1098 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001099 hi def link vimFuncKey vimCommand
1100 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001101 hi def link vimFuncMod Special
1102 hi def link vimFuncParam vimVar
1103 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001104 hi def link vimFuncSID Special
1105 hi def link vimFuncVar Identifier
1106 hi def link vimGroupAdd vimSynOption
1107 hi def link vimGroupName vimGroup
1108 hi def link vimGroupRem vimSynOption
1109 hi def link vimGroupSpecial Special
1110 hi def link vimGroup Type
1111 hi def link vimHiAttrib PreProc
1112 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001113 hi def link vimHiClear Type
1114 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001115 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001116 hi def link vimHiCtermfont vimHiTerm
1117 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001118 hi def link vimHiCTerm vimHiTerm
1119 hi def link vimHighlight vimCommand
1120 hi def link vimHiGroup vimGroupName
1121 hi def link vimHiGuiFgBg vimHiTerm
1122 hi def link vimHiGuiFont vimHiTerm
1123 hi def link vimHiGuiRgb vimNumber
1124 hi def link vimHiGui vimHiTerm
1125 hi def link vimHiNmbr Number
1126 hi def link vimHiStartStop vimHiTerm
1127 hi def link vimHiTerm Type
1128 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001129 hi def link vimInsert vimString
1130 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001131 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001132 hi def link vimKeymapLineComment vimComment
1133 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001134 hi def link vimLet vimCommand
1135 hi def link vimLetHereDoc vimString
1136 hi def link vimLetHereDocStart Special
1137 hi def link vimLetHereDocStop Special
1138 hi def link vimLetRegister Special
1139 hi def link vimLineComment vimComment
1140 hi def link vim9LineComment vimComment
1141 hi def link vimMapBang vimBang
1142 hi def link vimMapModKey vimFuncSID
1143 hi def link vimMapMod vimBracket
1144 hi def link vimMap vimCommand
1145 hi def link vimMark Number
1146 hi def link vimMarkNumber vimNumber
1147 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001148 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001149 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001150 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001151 hi def link vimMenu vimCommand
1152 hi def link vimMenuNotation vimNotation
1153 hi def link vimMenuPriority Number
1154 hi def link vimMenuStatus Special
1155 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001156 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001157 hi def link vimMtchComment vimComment
1158 hi def link vimNorm vimCommand
1159 hi def link vimNotation Special
1160 hi def link vimNotFunc vimCommand
1161 hi def link vimNotPatSep vimString
1162 hi def link vimNumber Number
1163 hi def link vimOperError Error
1164 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001165 hi def link vimOption PreProc
1166 hi def link vimParenSep Delimiter
1167 hi def link vimPatSepErr vimError
1168 hi def link vimPatSepR vimPatSep
1169 hi def link vimPatSep SpecialChar
1170 hi def link vimPatSepZone vimString
1171 hi def link vimPatSepZ vimPatSep
1172 hi def link vimPattern Type
1173 hi def link vimPlainMark vimMark
1174 hi def link vimPlainRegister vimRegister
1175 hi def link vimRegister SpecialChar
1176 hi def link vimScriptDelim Comment
1177 hi def link vimSearchDelim Statement
1178 hi def link vimSearch vimString
1179 hi def link vimSep Delimiter
1180 hi def link vimSetMod vimOption
1181 hi def link vimSetSep Statement
1182 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001183 hi def link vim9Vim9Script vimCommand
h-east9b53c052024-02-13 21:09:22 +01001184 hi def link vimSpecFile Identifier
1185 hi def link vimSpecFileMod vimSpecFile
1186 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001187 hi def link vimStringCont vimString
1188 hi def link vimString String
1189 hi def link vimStringEnd vimString
1190 hi def link vimStringInterpolationBrace vimEscape
1191 hi def link vimSubst1 vimSubst
1192 hi def link vimSubstDelim Delimiter
1193 hi def link vimSubstFlags Special
1194 hi def link vimSubstSubstr SpecialChar
1195 hi def link vimSubstTwoBS vimString
1196 hi def link vimSubst vimCommand
1197 hi def link vimSynCaseError Error
1198 hi def link vimSynCase Type
1199 hi def link vimSyncC Type
1200 hi def link vimSyncError Error
1201 hi def link vimSyncGroupName vimGroupName
1202 hi def link vimSyncGroup vimGroupName
1203 hi def link vimSyncKey Type
1204 hi def link vimSyncNone Type
1205 hi def link vimSynContains vimSynOption
1206 hi def link vimSynError Error
1207 hi def link vimSynFoldMethodError Error
1208 hi def link vimSynFoldMethod Type
1209 hi def link vimSynKeyContainedin vimSynContains
1210 hi def link vimSynKeyOpt vimSynOption
1211 hi def link vimSynCchar vimSynOption
1212 hi def link vimSynCcharValue Character
1213 hi def link vimSynMtchGrp vimSynOption
1214 hi def link vimSynMtchOpt vimSynOption
1215 hi def link vimSynNextgroup vimSynOption
1216 hi def link vimSynNotPatRange vimSynRegPat
1217 hi def link vimSynOption Special
1218 hi def link vimSynPatRange vimString
1219 hi def link vimSynRegOpt vimSynOption
1220 hi def link vimSynRegPat vimString
1221 hi def link vimSynReg Type
1222 hi def link vimSyntax vimCommand
1223 hi def link vimSynType vimSpecial
1224 hi def link vimTodo Todo
1225 hi def link vimType Type
1226 hi def link vimUnlet vimCommand
1227 hi def link vimUnletBang vimBang
1228 hi def link vimUnmap vimMap
1229 hi def link vimUserAttrbCmpltFunc Special
1230 hi def link vimUserAttrbCmplt vimSpecial
1231 hi def link vimUserAttrbKey vimOption
1232 hi def link vimUserAttrb vimSpecial
1233 hi def link vimUserAttrbError Error
1234 hi def link vimUserCmdError Error
1235 hi def link vimUserCommand vimCommand
1236 hi def link vimUserFunc Normal
1237 hi def link vimVar Identifier
1238 hi def link vimWarn WarningMsg
1239endif
1240
1241" Current Syntax Variable: {{{2
1242let b:current_syntax = "vim"
1243
1244" ---------------------------------------------------------------------
1245" Cleanup: {{{1
1246delc VimFolda
1247delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001248delc VimFoldh
1249delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001250delc VimFoldl
1251delc VimFoldm
1252delc VimFoldp
1253delc VimFoldP
1254delc VimFoldr
1255delc VimFoldt
1256let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001257unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001258" vim:ts=18 fdm=marker ft=vim