blob: bd597e9d541bc4d5785ee256dadb56c8d93bb1d7 [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
dkearns059cbe82024-06-12 03:27:53 +10006" Last Change: 2024 Jun 11
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" =======================
dkearns959c3c82024-06-12 04:18:08 +1000372if get(g:, "vimsyn_comment_strings", 1)
373 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
374endif
dkearns04e53632024-04-11 06:18:37 +1000375
376if s:vim9script
377 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
378 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
379 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
380 " Vim9 comments - TODO: might be highlighted while they don't work
381 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
382 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
383 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
384 " Vim9 comment inside expression
385 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
386 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
387 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
388
389 syn cluster vimComment contains=vim9Comment
390else
391 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
392 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
393 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
394 " Vim9 comments - TODO: might be highlighted while they don't work
395 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
396 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
397 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
398 " Vim9 comment inside expression
399 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
400 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
401 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
402
403 syn cluster vimComment contains=vimComment
404endif
h-east9b53c052024-02-13 21:09:22 +0100405
406" Environment Variables: {{{2
407" =====================
408syn match vimEnvvar "\$\I\i*"
409syn match vimEnvvar "\${\I\i*}"
410
411" In-String Specials: {{{2
412" Try to catch strings, if nothing else matches (therefore it must precede the others!)
413" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
414syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
415syn match vimPatSepErr contained "\\)"
416syn match vimPatSep contained "\\|"
417syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
418syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
419syn match vimNotPatSep contained "\\\\"
420syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
421syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
422syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100423"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
424syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
425syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
426syn match vimEscape contained "\\."
427" syn match vimEscape contained +\\[befnrt\"]+
428syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
429syn match vimEscape contained "\\<" contains=vimNotation
430syn match vimEscape contained "\\<\*[^>]*>\=>"
431
dkearnsb1427b42024-02-28 05:59:30 +1100432syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
433syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
434syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
435syn match vimStringInterpolationBrace contained "{{"
436syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100437
438" Substitutions: {{{2
439" =============
440syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
441syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
442syn cluster vimSubstList add=vimCollection
Doug Kearns92f4e912024-06-05 19:45:43 +0200443syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
444syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
445syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
446syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
dkearns2c51e152024-02-27 07:10:18 +1100447" 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
Doug Kearns92f4e912024-06-05 19:45:43 +0200459" Vi compatibility
460syn match vimSubstDelim contained "\\"
461syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
462
h-east9b53c052024-02-13 21:09:22 +0100463" 'String': {{{2
464syn match vimString "[^(,]'[^']\{-}\zs'"
465
466" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100467syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
468syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
469syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
470syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
471syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
472syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100473syn match vimPlainMark contained "'[a-zA-Z0-9]"
474syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
475
476syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
477syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
478syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
479syn match vimRegister '@"'
480syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
481syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
482
483syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
484syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
485
486syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
487syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
488syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
489
490" Complex Repeats: (:h complex-repeat) {{{2
491" ===============
492syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
493syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
494
495" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000496syn 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 +0100497syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
498syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
499syn match vimSetSep contained "[,:]"
500syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
501
502" Let And Var: {{{2
503" ===========
504syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
505syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
506syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
507
508syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
509syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
510syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
511
dkearns4ba70ca2024-04-15 04:32:56 +1000512VimFoldh 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 +0100513syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
514
515" For: {{{2
516" ===
517syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100518
h-east9b53c052024-02-13 21:09:22 +0100519" Abbreviations: {{{2
520" =============
521" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100522" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100523
524" Autocmd: {{{2
525" =======
526syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
527syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000528syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100529syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000530syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
531syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100532
533" Echo And Execute: -- prefer strings! {{{2
534" ================
dkearns61887b32024-03-15 23:45:48 +1100535" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100536
dkearns61887b32024-03-15 23:45:48 +1100537syn region vimEcho
538 \ matchgroup=vimCommand
539 \ start="\<ec\%[ho]\>"
540 \ start="\<echoe\%[rr]\>"
541 \ start="\<echom\%[sg]\>"
542 \ start="\<echoc\%[onsole]\>"
543 \ start="\<echon\>"
544 \ start="\<echow\%[indow]\>"
545 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
546 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
547
548syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100549syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100550syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100551syn case match
552
dkearns35e6f4c2024-03-22 06:41:10 +1100553syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100554
555syn 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 +1100556
h-east9b53c052024-02-13 21:09:22 +0100557" Maps: {{{2
558" ====
559syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
560syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
561" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100562" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
563syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100564" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100565syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
566syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
567syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100568syn 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 +1100569syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
570" assume a continuation comment introduces the RHS
571syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100572syn case ignore
573syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
574syn case match
575
576" Menus: {{{2
577" =====
dkearns62b26042024-03-10 03:43:28 +1100578" NOTE: tail comments disallowed
579" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
580syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
581syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
582syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100583syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
584syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100585syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
586syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
587syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
588syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
589syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
590
591syn region vimMenutranslate
592 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
593 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
594 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
595 \ contains=@vimContinue,vimMenutranslateName keepend transparent
596" oneline is sufficient to match the current formatting in runtime/lang/*.vim
597syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
598syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100599
600" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
601" ======================
602syn case ignore
603syn 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
604
605syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
606syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
607syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
608syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
609syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
610syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
611syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
612
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
614syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
615syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
616syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
617syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
618syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
619
620syn match vimBracket contained "[\\<>]"
621syn case match
622
623" User Function Highlighting: {{{2
624" (following Gautam Iyer's suggestion)
625" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100626syn 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 +0300627syn 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 +1100628syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100629
630" User Command Highlighting: {{{2
631syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
632
633" Errors And Warnings: {{{2
634" ====================
635if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300636 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300637 " TODO: The |builtin-object-methods| exception should only apply to method
638 " definitions.
639 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 +0100640 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
641 syn match vimElseIfErr "\<else\s\+if\>"
642 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
643endif
644
645syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
646
647" Norm: {{{2
648" ====
649syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
650syn match vimNormCmds contained ".*$"
651
652" Syntax: {{{2
653"=======
654syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
655syn 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
656syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
657
658if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
659 syn match vimSynError contained "\i\+"
660 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
661endif
662syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
663syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
664syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
665if has("conceal")
666 " no whitespace allowed after '='
667 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
668 syn match vimSynCcharValue contained "\S"
669endif
670
dkearns04e53632024-04-11 06:18:37 +1000671syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100672syn cluster vimFuncBodyList add=vimSyntax
673
674" Syntax: case {{{2
675syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
676if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
677 syn match vimSynCaseError contained "\i\+"
678endif
679syn keyword vimSynCase contained ignore match
680
681" Syntax: clear {{{2
682syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
683
684" Syntax: cluster {{{2
685syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
686syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
687syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
688syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100689
690" Syntax: foldlevel {{{2
691syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
692if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
693 syn match vimSynFoldMethodError contained "\i\+"
694endif
695syn keyword vimSynFoldMethod contained start minimum
696
697" Syntax: iskeyword {{{2
698syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
699syn match vimIskList contained '\S\+' contains=vimIskSep
700syn match vimIskSep contained ','
701
702" Syntax: include {{{2
703syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100704
705" Syntax: keyword {{{2
706syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
707syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
708syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
709syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100710
711" Syntax: match {{{2
712syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
713syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
714syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
715syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100716
717" Syntax: off and on {{{2
718syn keyword vimSynType contained enable list manual off on reset
719
720" Syntax: region {{{2
721syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
722syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
723syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
724syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
725syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
726syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
727syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
728syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
729syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
730syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
731syn match vimSynPatMod contained "lc=\d\+"
732syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
733syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
734syn match vimSynNotPatRange contained "\\\\\|\\\["
735syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100736
737" Syntax: sync {{{2
738" ============
739syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
740if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
741 syn match vimSyncError contained "\i\+"
742endif
743syn keyword vimSyncC contained ccomment clear fromstart
744syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
745syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
746syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
747syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
748syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
749syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
750syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
751syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
752syn keyword vimSyncNone contained NONE
753
754" Additional IsCommand: here by reasons of precedence {{{2
755" ====================
756syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
757
758" Highlighting: {{{2
759" ============
dkearns04e53632024-04-11 06:18:37 +1000760syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100761if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
762 syn match vimHiCtermError contained "\D\i*"
763endif
764syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100765syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100766
767syn match vimHiGroup contained "\i\+"
768syn case ignore
769syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
770syn keyword vimFgBgAttrib contained none bg background fg foreground
771syn case match
772syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
773syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
774syn case ignore
775syn 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
776syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
777
778syn case match
779syn match vimHiFontname contained "[a-zA-Z\-*]\+"
780syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
781syn match vimHiGuiRgb contained "#\x\{6}"
782
783" Highlighting: hi group key=arg ... {{{2
784syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100785syn 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 +0100786if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
787 syn match vimHiKeyError contained "\i\+="he=e-1
788endif
789syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100790syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100791syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
792syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
793syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
794syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
795syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
796syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
797syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
798syn match vimHiTermcap contained "\S\+" contains=vimNotation
799syn match vimHiNmbr contained '\d\+'
800
801" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100802syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100803
804" Highlight: link {{{2
805" see tst24 (hi def vs hi) (Jul 06, 2018)
806"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 +1100807" TODO: simplify and allow line continuations --djk
808syn 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 +0100809
810" Control Characters: {{{2
811" ==================
812syn match vimCtrlChar "[- -]"
813
814" Beginners - Patterns that involve ^ {{{2
815" =========
dkearns04e53632024-04-11 06:18:37 +1000816if s:vim9script
dkearns059cbe82024-06-12 03:27:53 +1000817 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
818 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000819else
dkearns059cbe82024-06-12 03:27:53 +1000820 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
821 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000822endif
h-east9b53c052024-02-13 21:09:22 +0100823syn 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 +1000824syn 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 +1000825
h-east9b53c052024-02-13 21:09:22 +0100826syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +1000827syn match vimContinueComment '^\s*\zs["#]\\ .*'
h-east9b53c052024-02-13 21:09:22 +0100828syn cluster vimContinue contains=vimContinue,vimContinueComment
829syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
830syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000831syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100832
833" Searches And Globals: {{{2
834" ====================
835syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
836syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100837syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
838syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100839
dkearns04e53632024-04-11 06:18:37 +1000840" Vim9 Script Regions: {{{2
841" ==================
842
843if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200844 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
845 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000846
Doug Kearnsce064932024-04-13 18:24:01 +0200847 syn keyword vim9Vim9ScriptArg noclear contained
848 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000849endif
850
h-east9b53c052024-02-13 21:09:22 +0100851" Embedded Scripts: {{{2
852" ================
853" perl,ruby : Benoit Cerrina
854" python,tcl : Johannes Zellner
855" mzscheme, lua : Charles Campbell
856
857" Allows users to specify the type of embedded script highlighting
858" they want: (perl/python/ruby/tcl support)
859" g:vimsyn_embed == 0 : don't embed any scripts
860" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
861" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
862" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
863" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
864" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
865" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
866if !exists("g:vimsyn_embed")
867 let g:vimsyn_embed= "lmpPr"
868endif
869
870" [-- lua --] {{{3
871let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
872if !filereadable(s:luapath)
873 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
874 if filereadable(fnameescape(s:luapath))
875 let s:luapath= fnameescape(s:luapath)
876 break
877 endif
878 endfor
879endif
880if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
881 unlet! b:current_syntax
882 syn cluster vimFuncBodyList add=vimLuaRegion
883 exe "syn include @vimLuaScript ".s:luapath
884 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
885 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
886 syn cluster vimFuncBodyList add=vimLuaRegion
887else
888 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
889 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
890endif
891unlet s:luapath
892
893" [-- perl --] {{{3
894let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
895if !filereadable(s:perlpath)
896 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
897 if filereadable(fnameescape(s:perlpath))
898 let s:perlpath= fnameescape(s:perlpath)
899 break
900 endif
901 endfor
902endif
903if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
904 unlet! b:current_syntax
905 syn cluster vimFuncBodyList add=vimPerlRegion
906 exe "syn include @vimPerlScript ".s:perlpath
907 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
908 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
909 syn cluster vimFuncBodyList add=vimPerlRegion
910else
911 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
912 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
913endif
914unlet s:perlpath
915
916" [-- ruby --] {{{3
917let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
918if !filereadable(s:rubypath)
919 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
920 if filereadable(fnameescape(s:rubypath))
921 let s:rubypath= fnameescape(s:rubypath)
922 break
923 endif
924 endfor
925endif
926if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
927 syn cluster vimFuncBodyList add=vimRubyRegion
928 unlet! b:current_syntax
929 exe "syn include @vimRubyScript ".s:rubypath
930 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
931 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
932 syn cluster vimFuncBodyList add=vimRubyRegion
933else
934 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
935 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
936endif
937unlet s:rubypath
938
939" [-- python --] {{{3
940let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
941if !filereadable(s:pythonpath)
942 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
943 if filereadable(fnameescape(s:pythonpath))
944 let s:pythonpath= fnameescape(s:pythonpath)
945 break
946 endif
947 endfor
948endif
949if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
950 unlet! b:current_syntax
951 syn cluster vimFuncBodyList add=vimPythonRegion
952 exe "syn include @vimPythonScript ".s:pythonpath
953 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
954 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
955 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
956 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
957 syn cluster vimFuncBodyList add=vimPythonRegion
958else
959 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
960 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
961endif
962unlet s:pythonpath
963
964" [-- tcl --] {{{3
965if has("win32") || has("win95") || has("win64") || has("win16")
966 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
967 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
968else
969 let s:trytcl= 1
970endif
971if s:trytcl
972 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
973 if !filereadable(s:tclpath)
974 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
975 if filereadable(fnameescape(s:tclpath))
976 let s:tclpath= fnameescape(s:tclpath)
977 break
978 endif
979 endfor
980 endif
981 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
982 unlet! b:current_syntax
983 syn cluster vimFuncBodyList add=vimTclRegion
984 exe "syn include @vimTclScript ".s:tclpath
985 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
986 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
987 syn cluster vimFuncBodyList add=vimTclScript
988 else
989 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
990 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
991 endif
992 unlet s:tclpath
993else
994 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
995 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
996endif
997unlet s:trytcl
998
999" [-- mzscheme --] {{{3
1000let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1001if !filereadable(s:mzschemepath)
1002 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1003 if filereadable(fnameescape(s:mzschemepath))
1004 let s:mzschemepath= fnameescape(s:mzschemepath)
1005 break
1006 endif
1007 endfor
1008endif
1009if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1010 unlet! b:current_syntax
1011 let s:iskKeep= &isk
1012 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1013 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1014 let &isk= s:iskKeep
1015 unlet s:iskKeep
1016 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1017 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1018 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1019else
1020 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1021 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1022endif
1023unlet s:mzschemepath
1024
1025" Synchronize (speed) {{{2
1026"============
1027if exists("g:vimsyn_minlines")
1028 exe "syn sync minlines=".g:vimsyn_minlines
1029endif
1030exe "syn sync maxlines=".s:vimsyn_maxlines
1031syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001032syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001033syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1034
1035" ====================
1036" Highlighting Settings {{{2
1037" ====================
1038
1039if !exists("skip_vim_syntax_inits")
1040 if !exists("g:vimsyn_noerror")
1041 hi def link vimBehaveError vimError
1042 hi def link vimCollClassErr vimError
1043 hi def link vimErrSetting vimError
1044 hi def link vimEmbedError vimError
1045 hi def link vimFTError vimError
1046 hi def link vimFunctionError vimError
1047 hi def link vimFunc vimError
1048 hi def link vimHiAttribList vimError
1049 hi def link vimHiCtermError vimError
1050 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001051 hi def link vimMapModErr vimError
1052 hi def link vimSubstFlagErr vimError
1053 hi def link vimSynCaseError vimError
1054 hi def link vimSynFoldMethodError vimError
1055 hi def link vimBufnrWarn vimWarn
1056 endif
1057
Doug Kearnsce064932024-04-13 18:24:01 +02001058 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001059 hi def link vimAbb vimCommand
1060 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001061 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001062 hi def link vimAugroupError vimError
1063 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001064 hi def link vimAutoCmd vimCommand
1065 hi def link vimAutoEvent Type
1066 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001067 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001068 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001069 hi def link vimBehaveModel vimBehave
1070 hi def link vimBehave vimCommand
1071 hi def link vimBracket Delimiter
1072 hi def link vimCmplxRepeat SpecialChar
1073 hi def link vimCommand Statement
1074 hi def link vimComment Comment
1075 hi def link vim9Comment Comment
1076 hi def link vimCommentString vimString
1077 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001078 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001079 hi def link vimCondHL vimCommand
1080 hi def link vimConst vimCommand
1081 hi def link vimContinue Special
1082 hi def link vimContinueComment vimComment
1083 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001084 hi def link vimDefComment vimComment
1085 hi def link vimDefKey vimCommand
1086 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001087 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001088 hi def link vimEchohlNone vimGroup
1089 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001090 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001091 hi def link vimEndfunction vimCommand
1092 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001093 hi def link vimEnvvar PreProc
1094 hi def link vimError Error
1095 hi def link vimEscape Special
1096 hi def link vimFBVar vimVar
1097 hi def link vimFgBgAttrib vimHiAttrib
1098 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001099 hi def link vimFor vimCommand
1100 hi def link vimFTCmd vimCommand
1101 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001102 hi def link vimFuncBang vimBang
1103 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001104 hi def link vimFuncKey vimCommand
1105 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001106 hi def link vimFuncMod Special
1107 hi def link vimFuncParam vimVar
1108 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001109 hi def link vimFuncSID Special
1110 hi def link vimFuncVar Identifier
1111 hi def link vimGroupAdd vimSynOption
1112 hi def link vimGroupName vimGroup
1113 hi def link vimGroupRem vimSynOption
1114 hi def link vimGroupSpecial Special
1115 hi def link vimGroup Type
1116 hi def link vimHiAttrib PreProc
1117 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001118 hi def link vimHiClear Type
1119 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001120 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001121 hi def link vimHiCtermfont vimHiTerm
1122 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001123 hi def link vimHiCTerm vimHiTerm
1124 hi def link vimHighlight vimCommand
1125 hi def link vimHiGroup vimGroupName
1126 hi def link vimHiGuiFgBg vimHiTerm
1127 hi def link vimHiGuiFont vimHiTerm
1128 hi def link vimHiGuiRgb vimNumber
1129 hi def link vimHiGui vimHiTerm
1130 hi def link vimHiNmbr Number
1131 hi def link vimHiStartStop vimHiTerm
1132 hi def link vimHiTerm Type
1133 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001134 hi def link vimInsert vimString
1135 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001136 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001137 hi def link vimKeymapLineComment vimComment
1138 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001139 hi def link vimLet vimCommand
1140 hi def link vimLetHereDoc vimString
1141 hi def link vimLetHereDocStart Special
1142 hi def link vimLetHereDocStop Special
1143 hi def link vimLetRegister Special
1144 hi def link vimLineComment vimComment
1145 hi def link vim9LineComment vimComment
1146 hi def link vimMapBang vimBang
1147 hi def link vimMapModKey vimFuncSID
1148 hi def link vimMapMod vimBracket
1149 hi def link vimMap vimCommand
1150 hi def link vimMark Number
1151 hi def link vimMarkNumber vimNumber
1152 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001153 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001154 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001155 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001156 hi def link vimMenu vimCommand
1157 hi def link vimMenuNotation vimNotation
1158 hi def link vimMenuPriority Number
1159 hi def link vimMenuStatus Special
1160 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001161 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001162 hi def link vimMtchComment vimComment
1163 hi def link vimNorm vimCommand
1164 hi def link vimNotation Special
1165 hi def link vimNotFunc vimCommand
1166 hi def link vimNotPatSep vimString
1167 hi def link vimNumber Number
1168 hi def link vimOperError Error
1169 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001170 hi def link vimOption PreProc
1171 hi def link vimParenSep Delimiter
1172 hi def link vimPatSepErr vimError
1173 hi def link vimPatSepR vimPatSep
1174 hi def link vimPatSep SpecialChar
1175 hi def link vimPatSepZone vimString
1176 hi def link vimPatSepZ vimPatSep
1177 hi def link vimPattern Type
1178 hi def link vimPlainMark vimMark
1179 hi def link vimPlainRegister vimRegister
1180 hi def link vimRegister SpecialChar
1181 hi def link vimScriptDelim Comment
1182 hi def link vimSearchDelim Statement
1183 hi def link vimSearch vimString
1184 hi def link vimSep Delimiter
1185 hi def link vimSetMod vimOption
1186 hi def link vimSetSep Statement
1187 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001188 hi def link vim9Vim9Script vimCommand
h-east9b53c052024-02-13 21:09:22 +01001189 hi def link vimSpecFile Identifier
1190 hi def link vimSpecFileMod vimSpecFile
1191 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001192 hi def link vimStringCont vimString
1193 hi def link vimString String
1194 hi def link vimStringEnd vimString
1195 hi def link vimStringInterpolationBrace vimEscape
1196 hi def link vimSubst1 vimSubst
1197 hi def link vimSubstDelim Delimiter
1198 hi def link vimSubstFlags Special
1199 hi def link vimSubstSubstr SpecialChar
1200 hi def link vimSubstTwoBS vimString
1201 hi def link vimSubst vimCommand
1202 hi def link vimSynCaseError Error
1203 hi def link vimSynCase Type
1204 hi def link vimSyncC Type
1205 hi def link vimSyncError Error
1206 hi def link vimSyncGroupName vimGroupName
1207 hi def link vimSyncGroup vimGroupName
1208 hi def link vimSyncKey Type
1209 hi def link vimSyncNone Type
1210 hi def link vimSynContains vimSynOption
1211 hi def link vimSynError Error
1212 hi def link vimSynFoldMethodError Error
1213 hi def link vimSynFoldMethod Type
1214 hi def link vimSynKeyContainedin vimSynContains
1215 hi def link vimSynKeyOpt vimSynOption
1216 hi def link vimSynCchar vimSynOption
1217 hi def link vimSynCcharValue Character
1218 hi def link vimSynMtchGrp vimSynOption
1219 hi def link vimSynMtchOpt vimSynOption
1220 hi def link vimSynNextgroup vimSynOption
1221 hi def link vimSynNotPatRange vimSynRegPat
1222 hi def link vimSynOption Special
1223 hi def link vimSynPatRange vimString
1224 hi def link vimSynRegOpt vimSynOption
1225 hi def link vimSynRegPat vimString
1226 hi def link vimSynReg Type
1227 hi def link vimSyntax vimCommand
1228 hi def link vimSynType vimSpecial
1229 hi def link vimTodo Todo
1230 hi def link vimType Type
1231 hi def link vimUnlet vimCommand
1232 hi def link vimUnletBang vimBang
1233 hi def link vimUnmap vimMap
1234 hi def link vimUserAttrbCmpltFunc Special
1235 hi def link vimUserAttrbCmplt vimSpecial
1236 hi def link vimUserAttrbKey vimOption
1237 hi def link vimUserAttrb vimSpecial
1238 hi def link vimUserAttrbError Error
1239 hi def link vimUserCmdError Error
1240 hi def link vimUserCommand vimCommand
1241 hi def link vimUserFunc Normal
1242 hi def link vimVar Identifier
1243 hi def link vimWarn WarningMsg
1244endif
1245
1246" Current Syntax Variable: {{{2
1247let b:current_syntax = "vim"
1248
1249" ---------------------------------------------------------------------
1250" Cleanup: {{{1
1251delc VimFolda
1252delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001253delc VimFoldh
1254delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001255delc VimFoldl
1256delc VimFoldm
1257delc VimFoldp
1258delc VimFoldP
1259delc VimFoldr
1260delc VimFoldt
1261let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001262unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001263" vim:ts=18 fdm=marker ft=vim