blob: 9088af1033e9c93aea70b0a546f6dd9b0a40d2d2 [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>
Doug Kearns818c6412024-10-06 17:00:48 +02005" Last Change: 2024 Oct 05
Christian Brabandtf9ca1392024-02-19 20:37:11 +01006" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01007
8" DO NOT CHANGE DIRECTLY.
9" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
10" (Search string "GEN_SYN_VIM:" in this file)
11
12" Automatically generated keyword lists: {{{1
13
14" Quit when a syntax file was already loaded {{{2
15if exists("b:current_syntax")
16 finish
17endif
h-east9b53c052024-02-13 21:09:22 +010018let s:keepcpo= &cpo
19set cpo&vim
20
dkearns04e53632024-04-11 06:18:37 +100021let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
22
h-east9b53c052024-02-13 21:09:22 +010023" vimTodo: contains common special-notices for comments {{{2
24" Use the vimCommentGroup cluster to add your own.
25syn keyword vimTodo contained COMBAK FIXME TODO XXX
26syn cluster vimCommentGroup contains=vimTodo,@Spell
27
28" regular vim commands {{{2
29" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
30
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030031" Lower priority for _new_ to distinguish constructors from the command.
32syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010033syn match vimCommand contained "\<z[-+^.=]\=\>"
34syn 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
35
36" vimOptions are caught only when contained in a vimSet {{{2
Doug Kearnsddbb6fe2024-07-24 20:21:22 +020037" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
h-east9b53c052024-02-13 21:09:22 +010038
39" vimOptions: These are the turn-off setting variants {{{2
40" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
41
42" vimOptions: These are the invertible variants {{{2
43" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
44
45" termcap codes (which can also be set) {{{2
Doug Kearnsddbb6fe2024-07-24 20:21:22 +020046" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
h-east9b53c052024-02-13 21:09:22 +010047" term key codes
48syn 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
49syn match vimOption contained "t_%1"
50syn match vimOption contained "t_#2"
51syn match vimOption contained "t_#4"
52syn match vimOption contained "t_@7"
53syn match vimOption contained "t_*7"
54syn match vimOption contained "t_&8"
55syn match vimOption contained "t_%i"
56syn match vimOption contained "t_k;"
57
58" unsupported settings: some were supported by vi but don't do anything in vim {{{2
59" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
60
61" AutoCmd Events {{{2
62syn case ignore
63" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
64
65" Highlight commonly used Groupnames {{{2
66syn 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
67
68" Default highlighting groups {{{2
69" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
h_eastc984b2f2024-05-27 22:40:25 +090070syn match vimHLGroup contained "\<Conceal\>"
h-east9b53c052024-02-13 21:09:22 +010071syn case match
72
73" Function Names {{{2
74" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
75
76"--- syntax here and above generated by mkvimvim ---
77" Special Vim Highlighting (not automatic) {{{1
78
Doug Kearnsd65e58f2024-07-17 19:34:14 +020079" Set up commands for this syntax highlighting file {{{2
80
81com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
82com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
83
Doug Kearns818c6412024-10-06 17:00:48 +020084if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[acefhiHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010085 if g:vimsyn_folding =~# 'a'
86 com! -nargs=* VimFolda <args> fold
87 else
88 com! -nargs=* VimFolda <args>
89 endif
Doug Kearns818c6412024-10-06 17:00:48 +020090 if g:vimsyn_folding =~# 'c'
91 com! -nargs=* VimFoldc <args> fold
92 else
93 com! -nargs=* VimFoldc <args>
94 endif
95 if g:vimsyn_folding =~# 'e'
96 com! -nargs=* VimFolde <args> fold
97 else
98 com! -nargs=* VimFolde <args>
99 endif
h-east9b53c052024-02-13 21:09:22 +0100100 if g:vimsyn_folding =~# 'f'
101 com! -nargs=* VimFoldf <args> fold
102 else
103 com! -nargs=* VimFoldf <args>
104 endif
105 if g:vimsyn_folding =~# 'h'
106 com! -nargs=* VimFoldh <args> fold
107 else
108 com! -nargs=* VimFoldh <args>
109 endif
Doug Kearnsce064932024-04-13 18:24:01 +0200110 if g:vimsyn_folding =~# 'H'
111 com! -nargs=* VimFoldH <args> fold
112 else
113 com! -nargs=* VimFoldH <args>
114 endif
Doug Kearns818c6412024-10-06 17:00:48 +0200115 if g:vimsyn_folding =~# 'i'
116 com! -nargs=* VimFoldi <args> fold
117 else
118 com! -nargs=* VimFoldi <args>
119 endif
h-east9b53c052024-02-13 21:09:22 +0100120 if g:vimsyn_folding =~# 'l'
121 com! -nargs=* VimFoldl <args> fold
122 else
123 com! -nargs=* VimFoldl <args>
124 endif
125 if g:vimsyn_folding =~# 'm'
126 com! -nargs=* VimFoldm <args> fold
127 else
128 com! -nargs=* VimFoldm <args>
129 endif
130 if g:vimsyn_folding =~# 'p'
131 com! -nargs=* VimFoldp <args> fold
132 else
133 com! -nargs=* VimFoldp <args>
134 endif
135 if g:vimsyn_folding =~# 'P'
136 com! -nargs=* VimFoldP <args> fold
137 else
138 com! -nargs=* VimFoldP <args>
139 endif
140 if g:vimsyn_folding =~# 'r'
141 com! -nargs=* VimFoldr <args> fold
142 else
143 com! -nargs=* VimFoldr <args>
144 endif
145 if g:vimsyn_folding =~# 't'
146 com! -nargs=* VimFoldt <args> fold
147 else
148 com! -nargs=* VimFoldt <args>
149 endif
150else
151 com! -nargs=* VimFolda <args>
Doug Kearns818c6412024-10-06 17:00:48 +0200152 com! -nargs=* VimFoldc <args>
153 com! -nargs=* VimFolde <args>
h-east9b53c052024-02-13 21:09:22 +0100154 com! -nargs=* VimFoldf <args>
Doug Kearns818c6412024-10-06 17:00:48 +0200155 com! -nargs=* VimFoldi <args>
h-east9b53c052024-02-13 21:09:22 +0100156 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200157 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100158 com! -nargs=* VimFoldl <args>
159 com! -nargs=* VimFoldm <args>
160 com! -nargs=* VimFoldp <args>
161 com! -nargs=* VimFoldP <args>
162 com! -nargs=* VimFoldr <args>
163 com! -nargs=* VimFoldt <args>
164endif
165
166" Deprecated variable options {{{2
167if exists("g:vim_minlines")
168 let g:vimsyn_minlines= g:vim_minlines
169endif
170if exists("g:vim_maxlines")
171 let g:vimsyn_maxlines= g:vim_maxlines
172endif
173if exists("g:vimsyntax_noerror")
174 let g:vimsyn_noerror= g:vimsyntax_noerror
175endif
176
177" Variable options {{{2
178if exists("g:vim_maxlines")
179 let s:vimsyn_maxlines= g:vim_maxlines
180else
181 let s:vimsyn_maxlines= 60
182endif
183
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200184" Nulls {{{2
185" =====
186Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
187
188" Booleans {{{2
189" ========
190Vim9 syn keyword vim9Boolean true false
191
h-east9b53c052024-02-13 21:09:22 +0100192" Numbers {{{2
193" =======
dkearns5cd86c62024-03-12 07:40:58 +1100194syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000195syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
196syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
197syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
198syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
199syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
200syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
201syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100202syn case match
h-east9b53c052024-02-13 21:09:22 +0100203
204" All vimCommands are contained by vimIsCommand. {{{2
Doug Kearns818c6412024-10-06 17:00:48 +0200205syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDefFold,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
206syn cluster vim9CmdList contains=vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
dkearnsc4aef9a2024-03-04 02:42:47 +1100207syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100208syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
Doug Kearns3c07eb02024-09-02 10:03:37 +0200209syn match vimBang contained "!"
h-east9b53c052024-02-13 21:09:22 +0100210syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
211syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
212syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
213syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
214syn match vimVar "\s\zs&t_k;"
215syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
216syn keyword vimCommand contained in
217
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200218syn cluster vimExprList contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
219syn cluster vim9ExprList contains=vim9Boolean,vim9Null
dkearnsb1427b42024-02-28 05:59:30 +1100220
h-east9b53c052024-02-13 21:09:22 +0100221" Insertions And Appends: insert append {{{2
222" (buftype != nofile test avoids having append, change, insert show up in the command window)
223" =======================
224if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000225 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
226 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
227 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100228endif
229
230" Behave! {{{2
231" =======
h-east9b53c052024-02-13 21:09:22 +0100232if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
233 syn match vimBehaveError contained "[^ ]\+"
234endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100235syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
236syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
237syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100238
Doug Kearns99984fc2024-07-18 20:45:19 +0200239" Call {{{2
240" ====
241syn match vimCall "\<call\=\>" skipwhite nextgroup=vimFunc
242
dkearnsa3bddb72024-06-14 01:48:10 +1000243" Exception Handling {{{2
244syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
245syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
246syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
247
Doug Kearns818c6412024-10-06 17:00:48 +0200248" Export {{{2
249" ======
250if s:vim9script
251 syn keyword vim9Export export skipwhite nextgroup=vim9Abstract,vim9ClassBody,vim9Const,vim9Def,vim9EnumBody,vim9Final,vim9InterfaceBody,vim9Type,vim9Var
252endif
253
h-east9b53c052024-02-13 21:09:22 +0100254" Filetypes {{{2
255" =========
256syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
257if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
258 syn match vimFTError contained "\I\i*"
259endif
260syn keyword vimFTCmd contained filet[ype]
261syn keyword vimFTOption contained detect indent off on plugin
262
263" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
264" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000265syn 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 +1100266syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100267if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100268 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 +0100269else
dkearnsc4aef9a2024-03-04 02:42:47 +1100270 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 +0100271endif
h-east9b53c052024-02-13 21:09:22 +0100272if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100273 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100274endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100275
276syn match vimAutoCmdGroup contained "\S\+"
277syn match vimAugroupEnd contained "\c\<END\>"
278syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
279syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100280
281" Operators: {{{2
282" =========
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200283syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
284syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
h-east9b53c052024-02-13 21:09:22 +0100285syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
286syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100287syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100288syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
289if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
290 syn match vimOperError ")"
291endif
292
dkearns4ba70ca2024-04-15 04:32:56 +1000293" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100294" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100295syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
296syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000297
Doug Kearns818c6412024-10-06 17:00:48 +0200298syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold,vimDefFold
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200299syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet
300syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For
dkearns35e6f4c2024-03-22 06:41:10 +1100301
302syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
303syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
304syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
305
306syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
Doug Kearns818c6412024-10-06 17:00:48 +0200307syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100308
Doug Kearns35699f12024-09-19 19:51:59 +0200309syn match vimFuncComment contained +".*+ skipwhite skipempty nextgroup=vimFuncBody,vimEndfunction
310syn match vimDefComment contained "#.*" skipwhite skipempty nextgroup=vimDefBody,vimEnddef
dkearns35e6f4c2024-03-22 06:41:10 +1100311
312syn match vimFuncBang contained "!"
313syn match vimFuncSID contained "\c<sid>"
314syn match vimFuncSID contained "\<[sg]:"
315syn keyword vimFuncKey contained fu[nction]
316syn keyword vimDefKey contained def
317
Doug Kearns35699f12024-09-19 19:51:59 +0200318syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
319syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment,vimFuncParamEquals
dkearns35e6f4c2024-03-22 06:41:10 +1100320syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
321syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
322
Doug Kearns35699f12024-09-19 19:51:59 +0200323syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
324syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100325
Doug Kearns35699f12024-09-19 19:51:59 +0200326syn region vimFuncBody contained start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
327syn region vimDefBody contained start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100328
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200329syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
330syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
h-east9b53c052024-02-13 21:09:22 +0100331
332if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
Doug Kearns818c6412024-10-06 17:00:48 +0200333 syn region vimFuncFold start="\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="\<endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
334 syn region vimDefFold start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="\<enddef\>" contains=vimDef fold keepend extend transparent
h-east9b53c052024-02-13 21:09:22 +0100335endif
dkearns35e6f4c2024-03-22 06:41:10 +1100336
337syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100338syn match vimFuncBlank contained "\s\+"
339
dkearns35e6f4c2024-03-22 06:41:10 +1100340" Types: {{{2
341" =====
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200342
Doug Kearns35699f12024-09-19 19:51:59 +0200343syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200344syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
dkearns35e6f4c2024-03-22 06:41:10 +1100345
346syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
347syn keyword vimType contained any blob bool channel float job number string void
348syn match vimType contained "\<func\>"
349syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
350syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
351syn match vimUserType contained "\<\u\w*\>"
352
353syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100354
Doug Kearns818c6412024-10-06 17:00:48 +0200355" Classes, Enums And Interfaces: {{{2
356" =============================
357
358if s:vim9script
359 " Methods {{{3
360 syn match vim9MethodDef contained "\<def\>" skipwhite nextgroup=vim9MethodDefName
361 syn match vim9MethodDefName contained "\<\h\w*\>" nextgroup=vim9MethodDefParams contains=@vim9MethodName
362 syn region vim9MethodDefParams contained
363 \ matchgroup=Delimiter start="(" end=")"
364 \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError
365 \ contains=vimDefParam,vim9Comment,vimFuncParamEquals
366 syn region vim9MethodDefReturnType contained
367 \ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
368 \ skipwhite skipnl nextgroup=vim9MethodDefBody,vimDefComment,vimCommentError
369 \ contains=vimTypeSep
370 \ transparent
371 syn region vim9MethodDefBody contained
372 \ start="^.\=" matchgroup=vimCommand end="\<enddef\>"
373 \ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
374 \ contains=@vim9MethodDefBodyList
375
376 syn cluster vim9MethodDefBodyList contains=@vimDefBodyList,vim9This,vim9Super
377
378 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
379 syn match vim9MethodNameError contained "\<[a-z0-9]\i\>"
380 endif
381 syn match vim9MethodName contained "\<new\i*\>"
382 syn keyword vim9MethodName contained empty len string
383
384 syn cluster vim9MethodName contains=vim9MethodName,vim9MethodNameError
385
386 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
387 syn region vim9MethodDefFold contained start="\%(^\s*\%(:\=static\s\+\)\=\)\@16<=:\=def\s\+\h\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent
388 syn region vim9MethodDefFold contained start="^\s*:\=def\s\+new\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent
389 endif
390
391 syn cluster vim9MethodDef contains=vim9MethodDef,vim9MethodDefFold
392
393 " Classes {{{3
394 syn cluster vim9ClassBodyList contains=vim9Abstract,vim9Class,vim9Comment,vim9LineComment,@vim9Continue,@vimExprList,vim9Extends,vim9Implements,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Super,vim9Var
395
396 syn match vim9Class contained "\<class\>" skipwhite nextgroup=vim9ClassName
397 syn match vim9ClassName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends,vim9Implements
398 syn match vim9SuperClass contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Implements
399 syn match vim9ImplementedInterface contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9InterfaceListComma,vim9Extends
400 syn match vim9InterfaceListComma contained "," skipwhite skipnl nextgroup=vim9ImplementedInterface
401 syn keyword vim9Abstract abstract skipwhite skipnl nextgroup=vim9ClassBody,vim9AbstractDef
402 syn keyword vim9Extends contained extends skipwhite skipnl nextgroup=vim9SuperClass
403 syn keyword vim9Implements contained implements skipwhite skipnl nextgroup=vim9ImplementedInterface
404 syn keyword vim9Public contained public
405 syn keyword vim9Static contained static
406 syn keyword vim9This contained this
407 syn keyword vim9Super contained super
408
409 VimFoldc syn region vim9ClassBody start="\<class\>" matchgroup=vimCommand end="\<endclass\>" contains=@vim9ClassBodyList transparent
410
411 " Enums {{{3
412 syn cluster vim9EnumBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Enum,vim9Implements,@vim9MethodDef,vim9Const,vim9Final,vim9Var
413
414 syn match vim9Enum contained "\<enum\>" skipwhite nextgroup=vim9EnumName
415 syn match vim9EnumName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Implements
416
417 VimFolde syn region vim9EnumBody start="\<enum\>" matchgroup=vimCommand end="\<endenum\>" contains=@vim9EnumBodyList transparent
418
419 " Interfaces {{{3
420 " TODO: limit to decl only - no init values
421 syn cluster vim9InterfaceBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Extends,vim9Interface,vim9AbstractDef,vim9Var
422
423 syn match vim9Interface contained "\<interface\>" skipwhite nextgroup=vim9InterfaceName
424 syn match vim9InterfaceName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends
425
426 syn keyword vim9AbstractDef contained def skipwhite nextgroup=vim9AbstractDefName
427 syn match vim9AbstractDefName contained "\<\h\w*\>" skipwhite nextgroup=vim9AbstractDefParams contains=@vim9MethodName
428 syn region vim9AbstractDefParams contained
429 \ matchgroup=Delimiter start="(" end=")"
430 \ skipwhite skipnl nextgroup=vimDefComment,vim9AbstractDefReturnType,vimCommentError
431 \ contains=vimDefParam,vim9Comment,vimFuncParamEquals
432 syn region vim9AbstractDefReturnType contained
433 \ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
434 \ skipwhite skipnl nextgroup=vimDefComment,vimCommentError
435 \ contains=vimTypeSep
436 \ transparent
437
438 VimFoldi syn region vim9InterfaceBody start="\<interface\>" matchgroup=vimCommand end="\<endinterface\>" contains=@vim9InterfaceBodyList transparent
439
440 " type {{{3
441 syn match vim9Type "\<ty\%[pe]\>" skipwhite nextgroup=vim9TypeAlias,vim9TypeAliasError
442 syn match vim9TypeAlias contained "\<\u\w*\>" skipwhite nextgroup=vim9TypeEquals
443 syn match vim9TypeEquals contained "=" skipwhite nextgroup=@vimType
444 if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_notypealiaserror")
445 syn match vim9TypeAliasError contained "\<\U\w*"
446 endif
447endif
448
dkearns04e53632024-04-11 06:18:37 +1000449" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100450" =======
451
dkearns04e53632024-04-11 06:18:37 +1000452syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100453syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
454syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
455syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000456
457" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
458if s:vim9script
459 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
460else
461 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
462endif
463syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100464
Doug Kearns7866d542024-08-23 18:37:55 +0200465syn region vimLoadkeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
h-east9b53c052024-02-13 21:09:22 +0100466
467" Special Filenames, Modifiers, Extension Removal: {{{2
468" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100469syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
470syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
471syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
472syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
473syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
474syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100475syn match vimSpecFileMod "\(:[phtre]\)\+" contained
476
477" User-Specified Commands: {{{2
478" =======================
dkearns04e53632024-04-11 06:18:37 +1000479syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
Doug Kearns3c07eb02024-09-02 10:03:37 +0200480syn keyword vimUserCmdKey contained com[mand]
481syn match vimUserCmdName contained "\<\u[[:alnum:]]*\>" skipwhite nextgroup=vimUserCmdBlock
482syn match vimUserCmd "\<com\%[mand]\>!\=.*$" contains=vimUserCmdKey,vimBang,vimUserCmdAttr,vimUserCmdAttrError,vimUserCmdName,@vimUserCmdList,vimComFilter
483syn match vimUserCmdAttrError contained "-\a\+\ze\%(\s\|=\)"
484syn match vimUserCmdAttr contained "-addr=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrAddr
485syn match vimUserCmdAttr contained "-bang\>" contains=vimUserCmdAttrKey
486syn match vimUserCmdAttr contained "-bar\>" contains=vimUserCmdAttrKey
487syn match vimUserCmdAttr contained "-buffer\>" contains=vimUserCmdAttrKey
488syn match vimUserCmdAttr contained "-complete=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrCmplt,vimUserCmdError
489syn match vimUserCmdAttr contained "-count\>" contains=vimUserCmdAttrKey
490syn match vimUserCmdAttr contained "-count=" contains=vimUserCmdAttrKey nextgroup=vimNumber
491syn match vimUserCmdAttr contained "-keepscript\>" contains=vimUserCmdAttrKey
492syn match vimUserCmdAttr contained "-nargs=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrNargs
493syn match vimUserCmdAttr contained "-range\>" contains=vimUserCmdAttrKey
494syn match vimUserCmdAttr contained "-range=" contains=vimUserCmdAttrKey nextgroup=vimNumber,vimUserCmdAttrRange
495syn match vimUserCmdAttr contained "-register\>" contains=vimUserCmdAttrKey
496
497syn match vimUserCmdAttrNargs contained "[01*?+]"
498syn match vimUserCmdAttrRange contained "%"
499
h-east9b53c052024-02-13 21:09:22 +0100500if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
501 syn match vimUserCmdError contained "\S\+\>"
502endif
h-east9b53c052024-02-13 21:09:22 +0100503
Doug Kearns3c07eb02024-09-02 10:03:37 +0200504syn case ignore
505syn keyword vimUserCmdAttrKey contained a[ddr] ban[g] bar bu[ffer] com[plete] cou[nt] k[eepscript] n[args] ra[nge] re[gister]
506" GEN_SYN_VIM: vimUserCmdAttrCmplt, START_STR='syn keyword vimUserCmdAttrCmplt contained', END_STR=''
507syn keyword vimUserCmdAttrCmplt contained custom customlist nextgroup=vimUserCmdAttrCmpltFunc,vimUserCmdError
508syn match vimUserCmdAttrCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
509" GEN_SYN_VIM: vimUserCmdAttrAddr, START_STR='syn keyword vimUserCmdAttrAddr contained', END_STR=''
510syn match vimUserCmdAttrAddr contained "?"
h-east9b53c052024-02-13 21:09:22 +0100511syn case match
h-east9b53c052024-02-13 21:09:22 +0100512
dkearns04e53632024-04-11 06:18:37 +1000513syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
514
Doug Kearns3c07eb02024-09-02 10:03:37 +0200515syn match vimDelcommand "\<delc\%[ommand]\>" skipwhite nextgroup=vimDelcommandAttr
516syn match vimDelcommandAttr contained "-buffer\>"
517
h-east9b53c052024-02-13 21:09:22 +0100518" Lower Priority Comments: after some vim commands... {{{2
519" =======================
dkearns959c3c82024-06-12 04:18:08 +1000520if get(g:, "vimsyn_comment_strings", 1)
Doug Kearns35699f12024-09-19 19:51:59 +0200521 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"' extend
dkearns959c3c82024-06-12 04:18:08 +1000522endif
dkearns04e53632024-04-11 06:18:37 +1000523
524if s:vim9script
dkearns04e53632024-04-11 06:18:37 +1000525 syn cluster vimComment contains=vim9Comment
526else
dkearns04e53632024-04-11 06:18:37 +1000527 syn cluster vimComment contains=vimComment
528endif
h-east9b53c052024-02-13 21:09:22 +0100529
Doug Kearns35699f12024-09-19 19:51:59 +0200530VimL syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString extend
531VimL syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString extend
532VimL syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200533" Vim9 comments - TODO: might be highlighted while they don't work
Doug Kearns35699f12024-09-19 19:51:59 +0200534Vim9 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString extend
535Vim9 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString extend
536Vim9 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200537" Vim9 comment inside expression
Doug Kearns35699f12024-09-19 19:51:59 +0200538Vim9 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained extend
539Vim9 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained extend
540Vim9 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200541
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200542syn match vim9CommentError contained "#.*"
543syn match vimCommentError contained +".*+
544
h-east9b53c052024-02-13 21:09:22 +0100545" Environment Variables: {{{2
546" =====================
547syn match vimEnvvar "\$\I\i*"
548syn match vimEnvvar "\${\I\i*}"
549
550" In-String Specials: {{{2
551" Try to catch strings, if nothing else matches (therefore it must precede the others!)
552" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
553syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
554syn match vimPatSepErr contained "\\)"
555syn match vimPatSep contained "\\|"
556syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
557syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
558syn match vimNotPatSep contained "\\\\"
559syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
Doug Kearns35699f12024-09-19 19:51:59 +0200560syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup extend
561syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ extend
h-east9b53c052024-02-13 21:09:22 +0100562"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
563syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
564syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
565syn match vimEscape contained "\\."
566" syn match vimEscape contained +\\[befnrt\"]+
567syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
568syn match vimEscape contained "\\<" contains=vimNotation
569syn match vimEscape contained "\\<\*[^>]*>\=>"
570
Doug Kearns35699f12024-09-19 19:51:59 +0200571syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation extend
572syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation extend
dkearnsb1427b42024-02-28 05:59:30 +1100573syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
574syn match vimStringInterpolationBrace contained "{{"
575syn match vimStringInterpolationBrace contained "}}"
Ken Takata95e90782024-08-22 21:29:39 +0200576syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
h-east9b53c052024-02-13 21:09:22 +0100577
578" Substitutions: {{{2
579" =============
580syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
581syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
582syn cluster vimSubstList add=vimCollection
Doug Kearns92f4e912024-06-05 19:45:43 +0200583syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
584syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
585syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
586syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
dkearns2c51e152024-02-27 07:10:18 +1100587" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
588" : # is allowed but "not recommended" (see :h pattern-delimiter)
589syn 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
590syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
591syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
592syn match vimCollClassErr contained "\[:.\{-\}:\]"
593syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
594syn match vimSubstSubstr contained "\\z\=\d"
595syn match vimSubstTwoBS contained "\\\\"
596syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
597syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100598
Doug Kearns92f4e912024-06-05 19:45:43 +0200599" Vi compatibility
600syn match vimSubstDelim contained "\\"
601syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
602
h-east9b53c052024-02-13 21:09:22 +0100603" 'String': {{{2
604syn match vimString "[^(,]'[^']\{-}\zs'"
605
606" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100607syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
Doug Kearnsd8176092024-08-31 16:57:32 +0200608syn match vimMark "'[[\]{}()<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
609syn match vimMark ",\zs'[[\]{}()<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
dkearns2c51e152024-02-27 07:10:18 +1100610syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
611syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
612syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100613syn match vimPlainMark contained "'[a-zA-Z0-9]"
614syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
615
616syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
617syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
618syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
619syn match vimRegister '@"'
620syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
621syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
622
623syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
624syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
625
626syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
627syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
628syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
629
630" Complex Repeats: (:h complex-repeat) {{{2
631" ===============
632syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
633syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
634
635" Set command and associated set-options (vimOptions) with comment {{{2
Doug Kearnsddbb6fe2024-07-24 20:21:22 +0200636syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimSetRegion
637syn region vimSetRegion contained start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*["#]\\ + matchgroup=vimCmdSep end="|" end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=@vimComment,@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap
638syn region vimSetEqual contained matchgroup=vimOper start="[=:]\|[-+^]=" skip=+\\\\\|\\|\|\\\s\|\n\s*\\\|\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ + matchgroup=vimCmdSep end="|" end="\ze\s" end="$" contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep
639syn match vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
640syn keyword vimSetAll contained all nextgroup=vimSetMod
641syn keyword vimSetTermcap contained termcap
642syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
h-east9b53c052024-02-13 21:09:22 +0100643syn match vimSetSep contained "[,:]"
Doug Kearnsddbb6fe2024-07-24 20:21:22 +0200644syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)"
h-east9b53c052024-02-13 21:09:22 +0100645
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200646" Variable Declarations: {{{2
647" =====================
648VimL syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
649VimL syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimVarList
650syn region vimVarList contained start="\[" end="]" contains=vimVar,@vimContinue
h-east9b53c052024-02-13 21:09:22 +0100651
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200652VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
h-east9b53c052024-02-13 21:09:22 +0100653syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
654syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
655
Doug Kearns7884cc72024-08-23 18:01:35 +0200656VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend
Ken Takata95e90782024-08-22 21:29:39 +0200657VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' extend
Doug Kearns7884cc72024-08-23 18:01:35 +0200658VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' contains=@vimStringInterpolation extend
Ken Takata95e90782024-08-22 21:29:39 +0200659VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' contains=@vimStringInterpolation extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200660
661Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList
662Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList
663Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList
664
Doug Kearns818c6412024-10-06 17:00:48 +0200665syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vimTypeSep,vimLetHereDoc,vimOper
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200666syn region vim9VariableList contained start="\[" end="]" contains=vim9Variable,@vimContinue
h-east9b53c052024-02-13 21:09:22 +0100667
668" For: {{{2
669" ===
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200670if s:vim9script
671 syn keyword vim9For for skipwhite nextgroup=vim9Variable,vim9VariableList
672else
673 syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
674endif
dkearns76d62982024-03-23 05:55:25 +1100675
h-east9b53c052024-02-13 21:09:22 +0100676" Abbreviations: {{{2
677" =============
678" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100679" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100680
681" Autocmd: {{{2
682" =======
683syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
684syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000685syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100686syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000687syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
688syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100689
690" Echo And Execute: -- prefer strings! {{{2
691" ================
dkearns61887b32024-03-15 23:45:48 +1100692" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100693
dkearns61887b32024-03-15 23:45:48 +1100694syn region vimEcho
695 \ matchgroup=vimCommand
696 \ start="\<ec\%[ho]\>"
697 \ start="\<echoe\%[rr]\>"
698 \ start="\<echom\%[sg]\>"
699 \ start="\<echoc\%[onsole]\>"
700 \ start="\<echon\>"
701 \ start="\<echow\%[indow]\>"
702 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
703 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
704
705syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100706syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100707syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100708syn case match
709
dkearns35e6f4c2024-03-22 06:41:10 +1100710syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100711
712syn 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 +1100713
h-east9b53c052024-02-13 21:09:22 +0100714" Maps: {{{2
715" ====
Doug Kearns99984fc2024-07-18 20:45:19 +0200716" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
717syn match vimMap "\<map\>" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
718syn keyword vimMap no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
dkearns16249702024-02-23 05:45:05 +1100719" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
Doug Kearns99984fc2024-07-18 20:45:19 +0200720syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
721" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
722syn keyword vimUnmap unm[ap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
723
dkearns5d67aef2024-03-10 04:01:22 +1100724syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
725syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
726syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100727syn 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 +1100728syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
729" assume a continuation comment introduces the RHS
730syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100731syn case ignore
732syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
733syn case match
734
735" Menus: {{{2
736" =====
dkearns62b26042024-03-10 03:43:28 +1100737" NOTE: tail comments disallowed
738" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
739syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
740syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
741syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100742syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
743syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100744syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
745syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
746syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
747syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
748syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
749
750syn region vimMenutranslate
751 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
752 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
753 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
754 \ contains=@vimContinue,vimMenutranslateName keepend transparent
755" oneline is sufficient to match the current formatting in runtime/lang/*.vim
756syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
757syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100758
759" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
760" ======================
761syn case ignore
762syn 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
763
764syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
765syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
766syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
767syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
768syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
769syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
770syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
771
772syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
773syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
774syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
775syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
776syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
777syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
778
779syn match vimBracket contained "[\\<>]"
780syn case match
781
782" User Function Highlighting: {{{2
783" (following Gautam Iyer's suggestion)
784" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100785syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
Doug Kearns818c6412024-10-06 17:00:48 +0200786syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vim9MethodName
dkearns9530fe42024-03-19 05:19:51 +1100787syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100788
Doug Kearns99984fc2024-07-18 20:45:19 +0200789syn match vimMap "\<map\%(\s\+(\)\@=" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
790
h-east9b53c052024-02-13 21:09:22 +0100791" User Command Highlighting: {{{2
792syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
793
794" Errors And Warnings: {{{2
795" ====================
796if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Doug Kearns818c6412024-10-06 17:00:48 +0200797 syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
h-east9b53c052024-02-13 21:09:22 +0100798 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
799 syn match vimElseIfErr "\<else\s\+if\>"
800 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
801endif
802
Doug Kearns4d427d42024-09-15 19:21:18 +0200803syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=@vimExprList,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100804
Doug Kearnse85fdc72024-07-07 20:45:37 +0200805" Match: {{{2
806" =====
807syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
808syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
809syn case ignore
810syn keyword vimMatchNone contained none
811syn case match
812syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
813
h-east9b53c052024-02-13 21:09:22 +0100814" Norm: {{{2
815" ====
816syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
817syn match vimNormCmds contained ".*$"
818
Doug Kearns262e25e2024-06-14 20:16:35 +0200819" Sleep: {{{2
820" =====
821syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
822syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
823syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
824
h-east9b53c052024-02-13 21:09:22 +0100825" Syntax: {{{2
826"=======
827syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
828syn 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
829syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
830
831if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
832 syn match vimSynError contained "\i\+"
833 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
834endif
835syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
836syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
837syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
838if has("conceal")
839 " no whitespace allowed after '='
840 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
841 syn match vimSynCcharValue contained "\S"
842endif
843
dkearns04e53632024-04-11 06:18:37 +1000844syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100845syn cluster vimFuncBodyList add=vimSyntax
846
847" Syntax: case {{{2
848syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
849if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
850 syn match vimSynCaseError contained "\i\+"
851endif
852syn keyword vimSynCase contained ignore match
853
854" Syntax: clear {{{2
855syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
856
857" Syntax: cluster {{{2
858syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
859syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
860syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
861syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100862
863" Syntax: foldlevel {{{2
864syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
865if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
866 syn match vimSynFoldMethodError contained "\i\+"
867endif
868syn keyword vimSynFoldMethod contained start minimum
869
870" Syntax: iskeyword {{{2
871syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
872syn match vimIskList contained '\S\+' contains=vimIskSep
873syn match vimIskSep contained ','
874
875" Syntax: include {{{2
876syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100877
878" Syntax: keyword {{{2
879syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
880syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
881syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
882syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100883
884" Syntax: match {{{2
885syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
886syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
887syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
888syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100889
890" Syntax: off and on {{{2
891syn keyword vimSynType contained enable list manual off on reset
892
893" Syntax: region {{{2
894syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
895syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
896syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
897syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
898syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
899syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
900syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
901syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
902syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
903syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
904syn match vimSynPatMod contained "lc=\d\+"
905syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
906syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
907syn match vimSynNotPatRange contained "\\\\\|\\\["
908syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100909
910" Syntax: sync {{{2
911" ============
912syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
913if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
914 syn match vimSyncError contained "\i\+"
915endif
916syn keyword vimSyncC contained ccomment clear fromstart
917syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
918syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
919syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
920syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
921syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
922syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
923syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
924syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
925syn keyword vimSyncNone contained NONE
926
927" Additional IsCommand: here by reasons of precedence {{{2
928" ====================
929syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
930
931" Highlighting: {{{2
932" ============
dkearns04e53632024-04-11 06:18:37 +1000933syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100934if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
935 syn match vimHiCtermError contained "\D\i*"
936endif
937syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100938syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100939
940syn match vimHiGroup contained "\i\+"
941syn case ignore
942syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
943syn keyword vimFgBgAttrib contained none bg background fg foreground
944syn case match
945syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
946syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
947syn case ignore
948syn 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
949syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
950
951syn case match
952syn match vimHiFontname contained "[a-zA-Z\-*]\+"
953syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
954syn match vimHiGuiRgb contained "#\x\{6}"
955
956" Highlighting: hi group key=arg ... {{{2
957syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100958syn 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 +0100959if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
960 syn match vimHiKeyError contained "\i\+="he=e-1
961endif
962syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100963syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100964syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
965syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
966syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
967syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
968syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
969syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
970syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
971syn match vimHiTermcap contained "\S\+" contains=vimNotation
972syn match vimHiNmbr contained '\d\+'
973
974" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100975syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100976
977" Highlight: link {{{2
978" see tst24 (hi def vs hi) (Jul 06, 2018)
979"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 +1100980" TODO: simplify and allow line continuations --djk
981syn 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 +0100982
983" Control Characters: {{{2
984" ==================
985syn match vimCtrlChar "[- -]"
986
987" Beginners - Patterns that involve ^ {{{2
988" =========
Doug Kearns35699f12024-09-19 19:51:59 +0200989Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle extend
990VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200991
h-east9b53c052024-02-13 21:09:22 +0100992syn 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 +1000993syn 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 +1000994
dkearnsae321b52024-06-15 23:06:17 +1000995" allowed anywhere in the file
996if !s:vim9script
997 syn match vimShebangError "^\s*\zs#!.*" display
998endif
999syn match vimShebang "\%^#!.*" display
1000
h-east9b53c052024-02-13 21:09:22 +01001001syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +10001002syn match vimContinueComment '^\s*\zs["#]\\ .*'
Doug Kearns818c6412024-10-06 17:00:48 +02001003syn match vim9ContinueComment "^\s*\zs#\\ .*"
1004syn cluster vimContinue contains=vimContinue,vimContinueComment
1005syn cluster vim9Continue contains=vimContinue,vim9ContinueComment
1006
h-east9b53c052024-02-13 21:09:22 +01001007syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
1008syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +10001009syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +01001010
1011" Searches And Globals: {{{2
1012" ====================
1013syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
1014syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +11001015syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
1016syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +01001017
dkearns04e53632024-04-11 06:18:37 +10001018" Vim9 Script Regions: {{{2
1019" ==================
1020
1021if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +02001022 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
1023 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +10001024
Doug Kearnsce064932024-04-13 18:24:01 +02001025 syn keyword vim9Vim9ScriptArg noclear contained
1026 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +10001027endif
1028
h-east9b53c052024-02-13 21:09:22 +01001029" Embedded Scripts: {{{2
1030" ================
1031" perl,ruby : Benoit Cerrina
1032" python,tcl : Johannes Zellner
1033" mzscheme, lua : Charles Campbell
1034
1035" Allows users to specify the type of embedded script highlighting
1036" they want: (perl/python/ruby/tcl support)
1037" g:vimsyn_embed == 0 : don't embed any scripts
h-east84ac2122024-06-17 18:12:30 +02001038" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
1039" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
1040" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
1041" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
1042" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
1043" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
h-east9b53c052024-02-13 21:09:22 +01001044if !exists("g:vimsyn_embed")
1045 let g:vimsyn_embed= "lmpPr"
1046endif
1047
1048" [-- lua --] {{{3
1049let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
1050if !filereadable(s:luapath)
1051 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
1052 if filereadable(fnameescape(s:luapath))
1053 let s:luapath= fnameescape(s:luapath)
1054 break
1055 endif
1056 endfor
1057endif
1058if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
1059 unlet! b:current_syntax
1060 syn cluster vimFuncBodyList add=vimLuaRegion
1061 exe "syn include @vimLuaScript ".s:luapath
Ken Takata95e90782024-08-22 21:29:39 +02001062 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimLuaScript
1063 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimLuaScript
1064 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+^\z(\s*\)lua\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimLuaScript
1065 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+^\.$+ contains=@vimLuaScript
h-east9b53c052024-02-13 21:09:22 +01001066 syn cluster vimFuncBodyList add=vimLuaRegion
1067else
Ken Takata95e90782024-08-22 21:29:39 +02001068 syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1069 syn region vimEmbedError start=+lua\s*<<\s*\z(\S*\)+ end=+^\z1$+
1070 syn region vimEmbedError start=+^\z(\s*\)lua\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1071 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001072endif
1073unlet s:luapath
1074
1075" [-- perl --] {{{3
1076let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
1077if !filereadable(s:perlpath)
1078 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
1079 if filereadable(fnameescape(s:perlpath))
1080 let s:perlpath= fnameescape(s:perlpath)
1081 break
1082 endif
1083 endfor
1084endif
1085if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
1086 unlet! b:current_syntax
1087 syn cluster vimFuncBodyList add=vimPerlRegion
1088 exe "syn include @vimPerlScript ".s:perlpath
Ken Takata95e90782024-08-22 21:29:39 +02001089 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPerlScript
1090 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimPerlScript
1091 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPerlScript
1092 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
h-east9b53c052024-02-13 21:09:22 +01001093 syn cluster vimFuncBodyList add=vimPerlRegion
1094else
Ken Takata95e90782024-08-22 21:29:39 +02001095 syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1096 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(\S*\)+ end=+^\z1$+
1097 syn region vimEmbedError start=+^\z(\s*\)pe\%[rl]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1098 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001099endif
1100unlet s:perlpath
1101
1102" [-- ruby --] {{{3
1103let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
1104if !filereadable(s:rubypath)
1105 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
1106 if filereadable(fnameescape(s:rubypath))
1107 let s:rubypath= fnameescape(s:rubypath)
1108 break
1109 endif
1110 endfor
1111endif
1112if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
1113 syn cluster vimFuncBodyList add=vimRubyRegion
1114 unlet! b:current_syntax
1115 exe "syn include @vimRubyScript ".s:rubypath
Ken Takata95e90782024-08-22 21:29:39 +02001116 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimRubyScript
1117 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimRubyScript
1118 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimRubyScript
1119 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub\%[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
h-east9b53c052024-02-13 21:09:22 +01001120 syn cluster vimFuncBodyList add=vimRubyRegion
1121else
Ken Takata95e90782024-08-22 21:29:39 +02001122 syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1123 syn region vimEmbedError start=+rub\%[y]\s*<<\s*\z(\S.*\)+ end=+^\z1$+
1124 syn region vimEmbedError start=+^\z(\s*\)rub\%[y]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1125 syn region vimEmbedError start=+rub\%[y]\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001126endif
1127unlet s:rubypath
1128
1129" [-- python --] {{{3
1130let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
1131if !filereadable(s:pythonpath)
1132 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
1133 if filereadable(fnameescape(s:pythonpath))
1134 let s:pythonpath= fnameescape(s:pythonpath)
1135 break
1136 endif
1137 endfor
1138endif
1139if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
1140 unlet! b:current_syntax
1141 syn cluster vimFuncBodyList add=vimPythonRegion
1142 exe "syn include @vimPythonScript ".s:pythonpath
Ken Takata95e90782024-08-22 21:29:39 +02001143 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimPythonScript
1144 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
1145 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimPythonScript
1146 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+ contains=@vimPythonScript
1147 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S\+\)+ end=+^\z1$+ contains=@vimPythonScript
1148 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=$+ end=+^\.$+ contains=@vimPythonScript
h-east9b53c052024-02-13 21:09:22 +01001149 syn cluster vimFuncBodyList add=vimPythonRegion
1150else
Ken Takata95e90782024-08-22 21:29:39 +02001151 syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1152 syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*\z(\S\+\)+ end=+^\z1$+
1153 syn region vimEmbedError start=+^\z(\s*\)py\%[thon][3x]\=\s*<<\s*trim\s*$+ end=+^\z1\.$+
1154 syn region vimEmbedError start=+py\%[thon][3x]\=\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001155endif
1156unlet s:pythonpath
1157
1158" [-- tcl --] {{{3
1159if has("win32") || has("win95") || has("win64") || has("win16")
1160 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
1161 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
1162else
1163 let s:trytcl= 1
1164endif
1165if s:trytcl
1166 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
1167 if !filereadable(s:tclpath)
1168 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
1169 if filereadable(fnameescape(s:tclpath))
1170 let s:tclpath= fnameescape(s:tclpath)
1171 break
1172 endif
1173 endfor
1174 endif
1175 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
1176 unlet! b:current_syntax
1177 syn cluster vimFuncBodyList add=vimTclRegion
1178 exe "syn include @vimTclScript ".s:tclpath
Ken Takata95e90782024-08-22 21:29:39 +02001179 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimTclScript
1180 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimTclScript
1181 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimTclScript
1182 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+ contains=@vimTclScript
h-east9b53c052024-02-13 21:09:22 +01001183 syn cluster vimFuncBodyList add=vimTclScript
1184 else
Ken Takata95e90782024-08-22 21:29:39 +02001185 syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1186 syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
1187 syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1188 syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001189 endif
1190 unlet s:tclpath
1191else
Ken Takata95e90782024-08-22 21:29:39 +02001192 syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1193 syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*\z(\S*\)+ end=+^\z1$+
1194 syn region vimEmbedError start=+^\z(\s*\)tc\%[l]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1195 syn region vimEmbedError start=+tc\%[l]\=\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001196endif
1197unlet s:trytcl
1198
1199" [-- mzscheme --] {{{3
1200let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1201if !filereadable(s:mzschemepath)
1202 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1203 if filereadable(fnameescape(s:mzschemepath))
1204 let s:mzschemepath= fnameescape(s:mzschemepath)
1205 break
1206 endif
1207 endfor
1208endif
1209if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1210 unlet! b:current_syntax
1211 let s:iskKeep= &isk
1212 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1213 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1214 let &isk= s:iskKeep
1215 unlet s:iskKeep
Ken Takata95e90782024-08-22 21:29:39 +02001216 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+ contains=@vimMzSchemeScript
1217 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+ contains=@vimMzSchemeScript
1218 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s*$+ end=+^\z1\.$+ contains=@vimMzSchemeScript
1219 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+ contains=@vimMzSchemeScript
h-east9b53c052024-02-13 21:09:22 +01001220 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1221else
Ken Takata95e90782024-08-22 21:29:39 +02001222 syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\+\z(\S\+\)+ end=+^\z1\z2$+
1223 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(\S*\)+ end=+^\z1$+
1224 syn region vimEmbedError start=+^\z(\s*\)mz\%[scheme]\s*<<\s*trim\s\*$+ end=+^\z1\.$+
1225 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+^\.$+
h-east9b53c052024-02-13 21:09:22 +01001226endif
1227unlet s:mzschemepath
1228
1229" Synchronize (speed) {{{2
1230"============
1231if exists("g:vimsyn_minlines")
1232 exe "syn sync minlines=".g:vimsyn_minlines
1233endif
1234exe "syn sync maxlines=".s:vimsyn_maxlines
1235syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001236syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001237syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1238
1239" ====================
1240" Highlighting Settings {{{2
1241" ====================
1242
1243if !exists("skip_vim_syntax_inits")
1244 if !exists("g:vimsyn_noerror")
1245 hi def link vimBehaveError vimError
1246 hi def link vimCollClassErr vimError
1247 hi def link vimErrSetting vimError
1248 hi def link vimEmbedError vimError
1249 hi def link vimFTError vimError
1250 hi def link vimFunctionError vimError
1251 hi def link vimFunc vimError
1252 hi def link vimHiAttribList vimError
1253 hi def link vimHiCtermError vimError
1254 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001255 hi def link vimMapModErr vimError
dkearnsae321b52024-06-15 23:06:17 +10001256 hi def link vimShebangError vimError
h-east9b53c052024-02-13 21:09:22 +01001257 hi def link vimSubstFlagErr vimError
1258 hi def link vimSynCaseError vimError
1259 hi def link vimSynFoldMethodError vimError
1260 hi def link vimBufnrWarn vimWarn
Doug Kearns818c6412024-10-06 17:00:48 +02001261
1262 hi def link vim9TypeAliasError vimError
h-east9b53c052024-02-13 21:09:22 +01001263 endif
1264
1265 hi def link vimAbb vimCommand
1266 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001267 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001268 hi def link vimAugroupError vimError
1269 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001270 hi def link vimAutoCmd vimCommand
1271 hi def link vimAutoEvent Type
1272 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001273 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001274 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001275 hi def link vimBehaveModel vimBehave
1276 hi def link vimBehave vimCommand
1277 hi def link vimBracket Delimiter
Doug Kearns99984fc2024-07-18 20:45:19 +02001278 hi def link vimCall vimCommand
dkearnsa3bddb72024-06-14 01:48:10 +10001279 hi def link vimCatch vimCommand
h-east9b53c052024-02-13 21:09:22 +01001280 hi def link vimCmplxRepeat SpecialChar
1281 hi def link vimCommand Statement
1282 hi def link vimComment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001283 hi def link vimCommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001284 hi def link vimCommentString vimString
1285 hi def link vimCommentTitle PreProc
1286 hi def link vimCondHL vimCommand
1287 hi def link vimConst vimCommand
1288 hi def link vimContinue Special
1289 hi def link vimContinueComment vimComment
1290 hi def link vimCtrlChar SpecialChar
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001291 hi def link vimDefComment vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +11001292 hi def link vimDefKey vimCommand
1293 hi def link vimDefParam vimVar
Doug Kearns3c07eb02024-09-02 10:03:37 +02001294 hi def link vimDelcommand vimCommand
1295 hi def link vimDelcommandAttr vimUserCmdAttr
dkearnsb1427b42024-02-28 05:59:30 +11001296 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001297 hi def link vimEchohlNone vimGroup
1298 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001299 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001300 hi def link vimEndfunction vimCommand
1301 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001302 hi def link vimEnvvar PreProc
1303 hi def link vimError Error
1304 hi def link vimEscape Special
1305 hi def link vimFBVar vimVar
1306 hi def link vimFgBgAttrib vimHiAttrib
1307 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001308 hi def link vimFor vimCommand
1309 hi def link vimFTCmd vimCommand
1310 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001311 hi def link vimFuncBang vimBang
1312 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001313 hi def link vimFuncKey vimCommand
1314 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001315 hi def link vimFuncMod Special
1316 hi def link vimFuncParam vimVar
1317 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001318 hi def link vimFuncSID Special
1319 hi def link vimFuncVar Identifier
1320 hi def link vimGroupAdd vimSynOption
1321 hi def link vimGroupName vimGroup
1322 hi def link vimGroupRem vimSynOption
1323 hi def link vimGroupSpecial Special
1324 hi def link vimGroup Type
1325 hi def link vimHiAttrib PreProc
1326 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001327 hi def link vimHiClear Type
1328 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001329 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001330 hi def link vimHiCtermfont vimHiTerm
1331 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001332 hi def link vimHiCTerm vimHiTerm
1333 hi def link vimHighlight vimCommand
1334 hi def link vimHiGroup vimGroupName
1335 hi def link vimHiGuiFgBg vimHiTerm
1336 hi def link vimHiGuiFont vimHiTerm
1337 hi def link vimHiGuiRgb vimNumber
1338 hi def link vimHiGui vimHiTerm
1339 hi def link vimHiNmbr Number
1340 hi def link vimHiStartStop vimHiTerm
1341 hi def link vimHiTerm Type
1342 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001343 hi def link vimInsert vimString
1344 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001345 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001346 hi def link vimKeymapLineComment vimComment
1347 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001348 hi def link vimLet vimCommand
1349 hi def link vimLetHereDoc vimString
1350 hi def link vimLetHereDocStart Special
1351 hi def link vimLetHereDocStop Special
1352 hi def link vimLetRegister Special
1353 hi def link vimLineComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001354 hi def link vimMapBang vimBang
1355 hi def link vimMapModKey vimFuncSID
1356 hi def link vimMapMod vimBracket
1357 hi def link vimMap vimCommand
1358 hi def link vimMark Number
1359 hi def link vimMarkNumber vimNumber
Doug Kearnse85fdc72024-07-07 20:45:37 +02001360 hi def link vimMatch vimCommand
1361 hi def link vimMatchGroup vimGroup
1362 hi def link vimMatchNone vimGroup
h-east9b53c052024-02-13 21:09:22 +01001363 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001364 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001365 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001366 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001367 hi def link vimMenu vimCommand
1368 hi def link vimMenuNotation vimNotation
1369 hi def link vimMenuPriority Number
1370 hi def link vimMenuStatus Special
1371 hi def link vimMenutranslateComment vimComment
Doug Kearns818c6412024-10-06 17:00:48 +02001372 hi def link vim9MethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001373 hi def link vimMtchComment vimComment
1374 hi def link vimNorm vimCommand
1375 hi def link vimNotation Special
1376 hi def link vimNotFunc vimCommand
1377 hi def link vimNotPatSep vimString
1378 hi def link vimNumber Number
1379 hi def link vimOperError Error
1380 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001381 hi def link vimOption PreProc
1382 hi def link vimParenSep Delimiter
1383 hi def link vimPatSepErr vimError
1384 hi def link vimPatSepR vimPatSep
1385 hi def link vimPatSep SpecialChar
1386 hi def link vimPatSepZone vimString
1387 hi def link vimPatSepZ vimPatSep
1388 hi def link vimPattern Type
1389 hi def link vimPlainMark vimMark
1390 hi def link vimPlainRegister vimRegister
1391 hi def link vimRegister SpecialChar
1392 hi def link vimScriptDelim Comment
1393 hi def link vimSearchDelim Statement
1394 hi def link vimSearch vimString
1395 hi def link vimSep Delimiter
Doug Kearnsddbb6fe2024-07-24 20:21:22 +02001396 hi def link vimSet vimCommand
1397 hi def link vimSetAll vimOption
1398 hi def link vimSetBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001399 hi def link vimSetMod vimOption
Doug Kearnsddbb6fe2024-07-24 20:21:22 +02001400 hi def link vimSetSep vimSep
h-east9b53c052024-02-13 21:09:22 +01001401 hi def link vimSetString vimString
Doug Kearnsddbb6fe2024-07-24 20:21:22 +02001402 hi def link vimSetTermcap vimOption
dkearnsae321b52024-06-15 23:06:17 +10001403 hi def link vimShebang PreProc
Doug Kearns262e25e2024-06-14 20:16:35 +02001404 hi def link vimSleep vimCommand
1405 hi def link vimSleepArg Constant
1406 hi def link vimSleepBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001407 hi def link vimSpecFile Identifier
1408 hi def link vimSpecFileMod vimSpecFile
1409 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001410 hi def link vimStringCont vimString
1411 hi def link vimString String
1412 hi def link vimStringEnd vimString
1413 hi def link vimStringInterpolationBrace vimEscape
1414 hi def link vimSubst1 vimSubst
1415 hi def link vimSubstDelim Delimiter
1416 hi def link vimSubstFlags Special
1417 hi def link vimSubstSubstr SpecialChar
1418 hi def link vimSubstTwoBS vimString
1419 hi def link vimSubst vimCommand
1420 hi def link vimSynCaseError Error
1421 hi def link vimSynCase Type
1422 hi def link vimSyncC Type
1423 hi def link vimSyncError Error
1424 hi def link vimSyncGroupName vimGroupName
1425 hi def link vimSyncGroup vimGroupName
1426 hi def link vimSyncKey Type
1427 hi def link vimSyncNone Type
1428 hi def link vimSynContains vimSynOption
1429 hi def link vimSynError Error
1430 hi def link vimSynFoldMethodError Error
1431 hi def link vimSynFoldMethod Type
1432 hi def link vimSynKeyContainedin vimSynContains
1433 hi def link vimSynKeyOpt vimSynOption
1434 hi def link vimSynCchar vimSynOption
1435 hi def link vimSynCcharValue Character
1436 hi def link vimSynMtchGrp vimSynOption
1437 hi def link vimSynMtchOpt vimSynOption
1438 hi def link vimSynNextgroup vimSynOption
1439 hi def link vimSynNotPatRange vimSynRegPat
1440 hi def link vimSynOption Special
1441 hi def link vimSynPatRange vimString
1442 hi def link vimSynRegOpt vimSynOption
1443 hi def link vimSynRegPat vimString
1444 hi def link vimSynReg Type
1445 hi def link vimSyntax vimCommand
1446 hi def link vimSynType vimSpecial
dkearnsa3bddb72024-06-14 01:48:10 +10001447 hi def link vimThrow vimCommand
h-east9b53c052024-02-13 21:09:22 +01001448 hi def link vimTodo Todo
1449 hi def link vimType Type
1450 hi def link vimUnlet vimCommand
1451 hi def link vimUnletBang vimBang
1452 hi def link vimUnmap vimMap
Doug Kearns3c07eb02024-09-02 10:03:37 +02001453 hi def link vimUserCmdAttrAddr vimSpecial
1454 hi def link vimUserCmdAttrCmplt vimSpecial
1455 hi def link vimUserCmdAttrNargs vimSpecial
1456 hi def link vimUserCmdAttrRange vimSpecial
1457 hi def link vimUserCmdAttrKey vimUserCmdAttr
1458 hi def link vimUserCmdAttr Special
1459 hi def link vimUserCmdAttrError Error
h-east9b53c052024-02-13 21:09:22 +01001460 hi def link vimUserCmdError Error
Doug Kearns3c07eb02024-09-02 10:03:37 +02001461 hi def link vimUserCmdKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001462 hi def link vimUserFunc Normal
1463 hi def link vimVar Identifier
1464 hi def link vimWarn WarningMsg
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001465
Doug Kearns818c6412024-10-06 17:00:48 +02001466 hi def link vim9Abstract vimCommand
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001467 hi def link vim9Boolean Boolean
Doug Kearns818c6412024-10-06 17:00:48 +02001468 hi def link vim9Class vimCommand
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001469 hi def link vim9Comment Comment
1470 hi def link vim9CommentError vimError
1471 hi def link vim9CommentTitle PreProc
1472 hi def link vim9Const vimCommand
Doug Kearns818c6412024-10-06 17:00:48 +02001473 hi def link vim9ContinueComment vimContinueComment
1474 hi def link vim9Enum vimCommand
1475 hi def link vim9Export vimCommand
1476 hi def link vim9Extends Keyword
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001477 hi def link vim9Final vimCommand
1478 hi def link vim9For vimCommand
Doug Kearns818c6412024-10-06 17:00:48 +02001479 hi def link vim9Implements Keyword
1480 hi def link vim9AbstractDef vimCommand
1481 hi def link vim9Interface vimCommand
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001482 hi def link vim9LineComment vimComment
Doug Kearns818c6412024-10-06 17:00:48 +02001483 hi def link vim9MethodDef vimCommand
1484 hi def link vim9MethodNameError vimFunctionError
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001485 hi def link vim9Null Constant
Doug Kearns818c6412024-10-06 17:00:48 +02001486 hi def link vim9Public vimCommand
1487 hi def link vim9Static vimCommand
1488 hi def link vim9Super Identifier
1489 hi def link vim9This Identifier
1490 hi def link vim9Type vimCommand
1491 hi def link vim9TypeEquals vimOper
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001492 hi def link vim9Variable vimVar
Doug Kearns818c6412024-10-06 17:00:48 +02001493 hi def link vim9Var vimCommand
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001494 hi def link vim9Vim9ScriptArg Special
Doug Kearns818c6412024-10-06 17:00:48 +02001495 hi def link vim9Vim9Script vimCommand
h-east9b53c052024-02-13 21:09:22 +01001496endif
1497
1498" Current Syntax Variable: {{{2
1499let b:current_syntax = "vim"
1500
1501" ---------------------------------------------------------------------
1502" Cleanup: {{{1
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001503delc Vim9
1504delc VimL
h-east9b53c052024-02-13 21:09:22 +01001505delc VimFolda
Doug Kearns818c6412024-10-06 17:00:48 +02001506delc VimFoldc
1507delc VimFolde
h-east9b53c052024-02-13 21:09:22 +01001508delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001509delc VimFoldh
1510delc VimFoldH
Doug Kearns818c6412024-10-06 17:00:48 +02001511delc VimFoldi
h-east9b53c052024-02-13 21:09:22 +01001512delc VimFoldl
1513delc VimFoldm
1514delc VimFoldp
1515delc VimFoldP
1516delc VimFoldr
1517delc VimFoldt
1518let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001519unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001520" vim:ts=18 fdm=marker ft=vim