blob: 66d1b87ec8118202b50461c6892534794275d76e [file] [log] [blame]
h-east9b53c052024-02-13 21:09:22 +01001" Vim syntax file
dkearns982e1912024-03-28 20:06:03 +11002" Language: Vim script
3" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
4" Doug Kearns <dougkearns@gmail.com>
5" URL: https://github.com/vim-jp/syntax-vim-ex
Doug Kearnsd65e58f2024-07-17 19:34:14 +02006" Last Change: 2024 Jul 17
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008
9" DO NOT CHANGE DIRECTLY.
10" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
11" (Search string "GEN_SYN_VIM:" in this file)
12
13" Automatically generated keyword lists: {{{1
14
15" Quit when a syntax file was already loaded {{{2
16if exists("b:current_syntax")
17 finish
18endif
h-east9b53c052024-02-13 21:09:22 +010019let s:keepcpo= &cpo
20set cpo&vim
21
dkearns04e53632024-04-11 06:18:37 +100022let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
23
h-east9b53c052024-02-13 21:09:22 +010024" vimTodo: contains common special-notices for comments {{{2
25" Use the vimCommentGroup cluster to add your own.
26syn keyword vimTodo contained COMBAK FIXME TODO XXX
27syn cluster vimCommentGroup contains=vimTodo,@Spell
28
29" regular vim commands {{{2
30" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
31
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030032" Lower priority for _new_ to distinguish constructors from the command.
33syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010034syn match vimCommand contained "\<z[-+^.=]\=\>"
35syn 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
36
37" vimOptions are caught only when contained in a vimSet {{{2
38" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
39
40" vimOptions: These are the turn-off setting variants {{{2
41" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
42
43" vimOptions: These are the invertible variants {{{2
44" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
45
46" termcap codes (which can also be set) {{{2
47" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
48" term key codes
49syn 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
50syn match vimOption contained "t_%1"
51syn match vimOption contained "t_#2"
52syn match vimOption contained "t_#4"
53syn match vimOption contained "t_@7"
54syn match vimOption contained "t_*7"
55syn match vimOption contained "t_&8"
56syn match vimOption contained "t_%i"
57syn match vimOption contained "t_k;"
58
59" unsupported settings: some were supported by vi but don't do anything in vim {{{2
60" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
61
62" AutoCmd Events {{{2
63syn case ignore
64" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
65
66" Highlight commonly used Groupnames {{{2
67syn 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
68
69" Default highlighting groups {{{2
70" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
h_eastc984b2f2024-05-27 22:40:25 +090071syn match vimHLGroup contained "\<Conceal\>"
h-east9b53c052024-02-13 21:09:22 +010072syn case match
73
74" Function Names {{{2
75" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
76
77"--- syntax here and above generated by mkvimvim ---
78" Special Vim Highlighting (not automatic) {{{1
79
Doug Kearnsd65e58f2024-07-17 19:34:14 +020080" Set up commands for this syntax highlighting file {{{2
81
82com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
83com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
84
Doug Kearnsce064932024-04-13 18:24:01 +020085if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010086 if g:vimsyn_folding =~# 'a'
87 com! -nargs=* VimFolda <args> fold
88 else
89 com! -nargs=* VimFolda <args>
90 endif
91 if g:vimsyn_folding =~# 'f'
92 com! -nargs=* VimFoldf <args> fold
93 else
94 com! -nargs=* VimFoldf <args>
95 endif
96 if g:vimsyn_folding =~# 'h'
97 com! -nargs=* VimFoldh <args> fold
98 else
99 com! -nargs=* VimFoldh <args>
100 endif
Doug Kearnsce064932024-04-13 18:24:01 +0200101 if g:vimsyn_folding =~# 'H'
102 com! -nargs=* VimFoldH <args> fold
103 else
104 com! -nargs=* VimFoldH <args>
105 endif
h-east9b53c052024-02-13 21:09:22 +0100106 if g:vimsyn_folding =~# 'l'
107 com! -nargs=* VimFoldl <args> fold
108 else
109 com! -nargs=* VimFoldl <args>
110 endif
111 if g:vimsyn_folding =~# 'm'
112 com! -nargs=* VimFoldm <args> fold
113 else
114 com! -nargs=* VimFoldm <args>
115 endif
116 if g:vimsyn_folding =~# 'p'
117 com! -nargs=* VimFoldp <args> fold
118 else
119 com! -nargs=* VimFoldp <args>
120 endif
121 if g:vimsyn_folding =~# 'P'
122 com! -nargs=* VimFoldP <args> fold
123 else
124 com! -nargs=* VimFoldP <args>
125 endif
126 if g:vimsyn_folding =~# 'r'
127 com! -nargs=* VimFoldr <args> fold
128 else
129 com! -nargs=* VimFoldr <args>
130 endif
131 if g:vimsyn_folding =~# 't'
132 com! -nargs=* VimFoldt <args> fold
133 else
134 com! -nargs=* VimFoldt <args>
135 endif
136else
137 com! -nargs=* VimFolda <args>
138 com! -nargs=* VimFoldf <args>
139 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200140 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100141 com! -nargs=* VimFoldl <args>
142 com! -nargs=* VimFoldm <args>
143 com! -nargs=* VimFoldp <args>
144 com! -nargs=* VimFoldP <args>
145 com! -nargs=* VimFoldr <args>
146 com! -nargs=* VimFoldt <args>
147endif
148
149" Deprecated variable options {{{2
150if exists("g:vim_minlines")
151 let g:vimsyn_minlines= g:vim_minlines
152endif
153if exists("g:vim_maxlines")
154 let g:vimsyn_maxlines= g:vim_maxlines
155endif
156if exists("g:vimsyntax_noerror")
157 let g:vimsyn_noerror= g:vimsyntax_noerror
158endif
159
160" Variable options {{{2
161if exists("g:vim_maxlines")
162 let s:vimsyn_maxlines= g:vim_maxlines
163else
164 let s:vimsyn_maxlines= 60
165endif
166
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200167" Nulls {{{2
168" =====
169Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
170
171" Booleans {{{2
172" ========
173Vim9 syn keyword vim9Boolean true false
174
h-east9b53c052024-02-13 21:09:22 +0100175" Numbers {{{2
176" =======
dkearns5cd86c62024-03-12 07:40:58 +1100177syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000178syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
179syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
180syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
181syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
182syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
183syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
184syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100185syn case match
h-east9b53c052024-02-13 21:09:22 +0100186
187" All vimCommands are contained by vimIsCommand. {{{2
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200188syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimConst,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
189syn cluster vim9CmdList contains=vim9Const,vim9Final,vim9For,vim9Var
dkearnsc4aef9a2024-03-04 02:42:47 +1100190syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100191syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
192syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
193syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
194syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
195syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
196syn match vimVar "\s\zs&t_k;"
197syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
198syn keyword vimCommand contained in
199
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200200syn cluster vimExprList contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
201syn cluster vim9ExprList contains=vim9Boolean,vim9Null
dkearnsb1427b42024-02-28 05:59:30 +1100202
h-east9b53c052024-02-13 21:09:22 +0100203" Insertions And Appends: insert append {{{2
204" (buftype != nofile test avoids having append, change, insert show up in the command window)
205" =======================
206if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000207 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
208 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
209 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100210endif
211
212" Behave! {{{2
213" =======
h-east9b53c052024-02-13 21:09:22 +0100214if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
215 syn match vimBehaveError contained "[^ ]\+"
216endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100217syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
218syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
219syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100220
dkearnsa3bddb72024-06-14 01:48:10 +1000221" Exception Handling {{{2
222syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
223syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
224syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
225
h-east9b53c052024-02-13 21:09:22 +0100226" Filetypes {{{2
227" =========
228syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
229if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
230 syn match vimFTError contained "\I\i*"
231endif
232syn keyword vimFTCmd contained filet[ype]
233syn keyword vimFTOption contained detect indent off on plugin
234
235" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
236" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000237syn 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 +1100238syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100239if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100240 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 +0100241else
dkearnsc4aef9a2024-03-04 02:42:47 +1100242 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 +0100243endif
h-east9b53c052024-02-13 21:09:22 +0100244if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100245 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100246endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100247
248syn match vimAutoCmdGroup contained "\S\+"
249syn match vimAugroupEnd contained "\c\<END\>"
250syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
251syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100252
253" Operators: {{{2
254" =========
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200255syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
256syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
h-east9b53c052024-02-13 21:09:22 +0100257syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
258syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100259syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100260syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
261if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
262 syn match vimOperError ")"
263endif
264
dkearns4ba70ca2024-04-15 04:32:56 +1000265" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100266" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100267syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
268syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000269
270syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200271syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet
272syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For
dkearns35e6f4c2024-03-22 06:41:10 +1100273
274syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
275syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
276syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
277
278syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
279syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300280syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100281
282syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
283syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
284
285syn match vimFuncBang contained "!"
286syn match vimFuncSID contained "\c<sid>"
287syn match vimFuncSID contained "\<[sg]:"
288syn keyword vimFuncKey contained fu[nction]
289syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300290syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100291
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200292syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200293syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment,vimFuncParamEquals
dkearns35e6f4c2024-03-22 06:41:10 +1100294syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
295syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
296
297syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200298syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100299
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200300syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
301syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100302
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200303syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
304syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
h-east9b53c052024-02-13 21:09:22 +0100305
306if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000307 syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
308 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
309 syn region vimFuncFold start="^\s*:\=\s*def\s\+new\i\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
h-east9b53c052024-02-13 21:09:22 +0100310endif
dkearns35e6f4c2024-03-22 06:41:10 +1100311
312syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100313syn match vimFuncBlank contained "\s\+"
314
dkearns35e6f4c2024-03-22 06:41:10 +1100315" Types: {{{2
316" =====
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200317
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200318syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200319syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
dkearns35e6f4c2024-03-22 06:41:10 +1100320
321syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
322syn keyword vimType contained any blob bool channel float job number string void
323syn match vimType contained "\<func\>"
324syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
325syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
326syn match vimUserType contained "\<\u\w*\>"
327
328syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100329
dkearns04e53632024-04-11 06:18:37 +1000330" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100331" =======
332
dkearns04e53632024-04-11 06:18:37 +1000333syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100334syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
335syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
336syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000337
338" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
339if s:vim9script
340 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
341else
342 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
343endif
344syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100345
346syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
347
348" Special Filenames, Modifiers, Extension Removal: {{{2
349" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100350syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
351syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
352syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
353syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
354syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
355syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100356syn match vimSpecFileMod "\(:[phtre]\)\+" contained
357
358" User-Specified Commands: {{{2
359" =======================
dkearns04e53632024-04-11 06:18:37 +1000360syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
h-east9b53c052024-02-13 21:09:22 +0100361syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000362syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
363syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100364syn match vimUserAttrbError contained "-\a\+\ze\s"
365syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
366syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
367syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
368syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
369syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
370syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
371syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
372syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
373if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
374 syn match vimUserCmdError contained "\S\+\>"
375endif
376syn case ignore
377syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
378" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
379syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
380syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
381
382syn case match
383syn match vimUserAttrbCmplt contained "custom,\u\w*"
384
dkearns04e53632024-04-11 06:18:37 +1000385syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
386
h-east9b53c052024-02-13 21:09:22 +0100387" Lower Priority Comments: after some vim commands... {{{2
388" =======================
dkearns959c3c82024-06-12 04:18:08 +1000389if get(g:, "vimsyn_comment_strings", 1)
390 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
391endif
dkearns04e53632024-04-11 06:18:37 +1000392
393if s:vim9script
dkearns04e53632024-04-11 06:18:37 +1000394 syn cluster vimComment contains=vim9Comment
395else
dkearns04e53632024-04-11 06:18:37 +1000396 syn cluster vimComment contains=vimComment
397endif
h-east9b53c052024-02-13 21:09:22 +0100398
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200399VimL syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
400VimL syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
401VimL syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
402" Vim9 comments - TODO: might be highlighted while they don't work
403Vim9 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
404Vim9 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
405Vim9 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
406" Vim9 comment inside expression
407Vim9 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
408Vim9 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
409Vim9 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
410
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200411syn match vim9CommentError contained "#.*"
412syn match vimCommentError contained +".*+
413
h-east9b53c052024-02-13 21:09:22 +0100414" Environment Variables: {{{2
415" =====================
416syn match vimEnvvar "\$\I\i*"
417syn match vimEnvvar "\${\I\i*}"
418
419" In-String Specials: {{{2
420" Try to catch strings, if nothing else matches (therefore it must precede the others!)
421" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
422syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
423syn match vimPatSepErr contained "\\)"
424syn match vimPatSep contained "\\|"
425syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
426syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
427syn match vimNotPatSep contained "\\\\"
428syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
429syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
430syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100431"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
432syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
433syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
434syn match vimEscape contained "\\."
435" syn match vimEscape contained +\\[befnrt\"]+
436syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
437syn match vimEscape contained "\\<" contains=vimNotation
438syn match vimEscape contained "\\<\*[^>]*>\=>"
439
dkearnsb1427b42024-02-28 05:59:30 +1100440syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
441syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
442syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
443syn match vimStringInterpolationBrace contained "{{"
444syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100445
446" Substitutions: {{{2
447" =============
448syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
449syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
450syn cluster vimSubstList add=vimCollection
Doug Kearns92f4e912024-06-05 19:45:43 +0200451syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
452syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
453syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat
454syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
dkearns2c51e152024-02-27 07:10:18 +1100455" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
456" : # is allowed but "not recommended" (see :h pattern-delimiter)
457syn 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
458syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
459syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
460syn match vimCollClassErr contained "\[:.\{-\}:\]"
461syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
462syn match vimSubstSubstr contained "\\z\=\d"
463syn match vimSubstTwoBS contained "\\\\"
464syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
465syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100466
Doug Kearns92f4e912024-06-05 19:45:43 +0200467" Vi compatibility
468syn match vimSubstDelim contained "\\"
469syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
470
h-east9b53c052024-02-13 21:09:22 +0100471" 'String': {{{2
472syn match vimString "[^(,]'[^']\{-}\zs'"
473
474" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100475syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
476syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
477syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
478syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
479syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
480syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100481syn match vimPlainMark contained "'[a-zA-Z0-9]"
482syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
483
484syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
485syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
486syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
487syn match vimRegister '@"'
488syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
489syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
490
491syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
492syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
493
494syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
495syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
496syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
497
498" Complex Repeats: (:h complex-repeat) {{{2
499" ===============
500syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
501syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
502
503" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000504syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod
h-east9b53c052024-02-13 21:09:22 +0100505syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
506syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
507syn match vimSetSep contained "[,:]"
508syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
509
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200510" Variable Declarations: {{{2
511" =====================
512VimL syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
513VimL syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimVarList
514syn region vimVarList contained start="\[" end="]" contains=vimVar,@vimContinue
h-east9b53c052024-02-13 21:09:22 +0100515
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200516VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
h-east9b53c052024-02-13 21:09:22 +0100517syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
518syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
519
dkearns4ba70ca2024-04-15 04:32:56 +1000520VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200521
522Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList
523Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList
524Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList
525
526syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vimTypeSep,vimLetHereDoc
527syn region vim9VariableList contained start="\[" end="]" contains=vim9Variable,@vimContinue
h-east9b53c052024-02-13 21:09:22 +0100528
529" For: {{{2
530" ===
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200531if s:vim9script
532 syn keyword vim9For for skipwhite nextgroup=vim9Variable,vim9VariableList
533else
534 syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
535endif
dkearns76d62982024-03-23 05:55:25 +1100536
h-east9b53c052024-02-13 21:09:22 +0100537" Abbreviations: {{{2
538" =============
539" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100540" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100541
542" Autocmd: {{{2
543" =======
544syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
545syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000546syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100547syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000548syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
549syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100550
551" Echo And Execute: -- prefer strings! {{{2
552" ================
dkearns61887b32024-03-15 23:45:48 +1100553" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100554
dkearns61887b32024-03-15 23:45:48 +1100555syn region vimEcho
556 \ matchgroup=vimCommand
557 \ start="\<ec\%[ho]\>"
558 \ start="\<echoe\%[rr]\>"
559 \ start="\<echom\%[sg]\>"
560 \ start="\<echoc\%[onsole]\>"
561 \ start="\<echon\>"
562 \ start="\<echow\%[indow]\>"
563 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
564 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
565
566syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100567syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100568syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100569syn case match
570
dkearns35e6f4c2024-03-22 06:41:10 +1100571syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100572
573syn 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 +1100574
h-east9b53c052024-02-13 21:09:22 +0100575" Maps: {{{2
576" ====
577syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
578syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
579" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100580" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
581syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100582" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100583syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
584syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
585syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100586syn 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 +1100587syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
588" assume a continuation comment introduces the RHS
589syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100590syn case ignore
591syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
592syn case match
593
594" Menus: {{{2
595" =====
dkearns62b26042024-03-10 03:43:28 +1100596" NOTE: tail comments disallowed
597" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
598syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
599syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
600syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100601syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
602syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100603syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
604syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
605syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
606syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
607syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
608
609syn region vimMenutranslate
610 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
611 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
612 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
613 \ contains=@vimContinue,vimMenutranslateName keepend transparent
614" oneline is sufficient to match the current formatting in runtime/lang/*.vim
615syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
616syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100617
618" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
619" ======================
620syn case ignore
621syn 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
622
623syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
624syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
625syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
626syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
627syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
628syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
629syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
630
631syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
632syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
633syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
634syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
635syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
636syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
637
638syn match vimBracket contained "[\\<>]"
639syn case match
640
641" User Function Highlighting: {{{2
642" (following Gautam Iyer's suggestion)
643" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100644syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300645syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vimMethodName
dkearns9530fe42024-03-19 05:19:51 +1100646syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100647
648" User Command Highlighting: {{{2
649syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
650
651" Errors And Warnings: {{{2
652" ====================
653if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300654 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300655 " TODO: The |builtin-object-methods| exception should only apply to method
656 " definitions.
657 syn match vimFunctionError "\s\zs\%(empty\|len\|new\|string\)\@![a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
h-east9b53c052024-02-13 21:09:22 +0100658 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
659 syn match vimElseIfErr "\<else\s\+if\>"
660 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
661endif
662
663syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
664
Doug Kearnse85fdc72024-07-07 20:45:37 +0200665" Match: {{{2
666" =====
667syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
668syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
669syn case ignore
670syn keyword vimMatchNone contained none
671syn case match
672syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
673
h-east9b53c052024-02-13 21:09:22 +0100674" Norm: {{{2
675" ====
676syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
677syn match vimNormCmds contained ".*$"
678
Doug Kearns262e25e2024-06-14 20:16:35 +0200679" Sleep: {{{2
680" =====
681syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
682syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
683syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
684
h-east9b53c052024-02-13 21:09:22 +0100685" Syntax: {{{2
686"=======
687syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
688syn 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
689syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
690
691if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
692 syn match vimSynError contained "\i\+"
693 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
694endif
695syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
696syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
697syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
698if has("conceal")
699 " no whitespace allowed after '='
700 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
701 syn match vimSynCcharValue contained "\S"
702endif
703
dkearns04e53632024-04-11 06:18:37 +1000704syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100705syn cluster vimFuncBodyList add=vimSyntax
706
707" Syntax: case {{{2
708syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
709if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
710 syn match vimSynCaseError contained "\i\+"
711endif
712syn keyword vimSynCase contained ignore match
713
714" Syntax: clear {{{2
715syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
716
717" Syntax: cluster {{{2
718syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
719syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
720syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
721syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100722
723" Syntax: foldlevel {{{2
724syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
725if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
726 syn match vimSynFoldMethodError contained "\i\+"
727endif
728syn keyword vimSynFoldMethod contained start minimum
729
730" Syntax: iskeyword {{{2
731syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
732syn match vimIskList contained '\S\+' contains=vimIskSep
733syn match vimIskSep contained ','
734
735" Syntax: include {{{2
736syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100737
738" Syntax: keyword {{{2
739syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
740syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
741syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
742syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100743
744" Syntax: match {{{2
745syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
746syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
747syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
748syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100749
750" Syntax: off and on {{{2
751syn keyword vimSynType contained enable list manual off on reset
752
753" Syntax: region {{{2
754syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
755syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
756syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
757syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
758syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
759syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
760syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
761syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
762syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
763syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
764syn match vimSynPatMod contained "lc=\d\+"
765syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
766syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
767syn match vimSynNotPatRange contained "\\\\\|\\\["
768syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100769
770" Syntax: sync {{{2
771" ============
772syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
773if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
774 syn match vimSyncError contained "\i\+"
775endif
776syn keyword vimSyncC contained ccomment clear fromstart
777syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
778syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
779syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
780syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
781syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
782syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
783syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
784syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
785syn keyword vimSyncNone contained NONE
786
787" Additional IsCommand: here by reasons of precedence {{{2
788" ====================
789syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
790
791" Highlighting: {{{2
792" ============
dkearns04e53632024-04-11 06:18:37 +1000793syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100794if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
795 syn match vimHiCtermError contained "\D\i*"
796endif
797syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100798syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100799
800syn match vimHiGroup contained "\i\+"
801syn case ignore
802syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
803syn keyword vimFgBgAttrib contained none bg background fg foreground
804syn case match
805syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
806syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
807syn case ignore
808syn 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
809syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
810
811syn case match
812syn match vimHiFontname contained "[a-zA-Z\-*]\+"
813syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
814syn match vimHiGuiRgb contained "#\x\{6}"
815
816" Highlighting: hi group key=arg ... {{{2
817syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100818syn 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 +0100819if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
820 syn match vimHiKeyError contained "\i\+="he=e-1
821endif
822syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100823syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100824syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
825syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
826syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
827syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
828syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
829syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
830syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
831syn match vimHiTermcap contained "\S\+" contains=vimNotation
832syn match vimHiNmbr contained '\d\+'
833
834" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100835syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100836
837" Highlight: link {{{2
838" see tst24 (hi def vs hi) (Jul 06, 2018)
839"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 +1100840" TODO: simplify and allow line continuations --djk
841syn 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 +0100842
843" Control Characters: {{{2
844" ==================
845syn match vimCtrlChar "[- -]"
846
847" Beginners - Patterns that involve ^ {{{2
848" =========
Doug Kearnsd65e58f2024-07-17 19:34:14 +0200849Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
850VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
851
h-east9b53c052024-02-13 21:09:22 +0100852syn 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 +1000853syn 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 +1000854
dkearnsae321b52024-06-15 23:06:17 +1000855" allowed anywhere in the file
856if !s:vim9script
857 syn match vimShebangError "^\s*\zs#!.*" display
858endif
859syn match vimShebang "\%^#!.*" display
860
h-east9b53c052024-02-13 21:09:22 +0100861syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +1000862syn match vimContinueComment '^\s*\zs["#]\\ .*'
h-east9b53c052024-02-13 21:09:22 +0100863syn cluster vimContinue contains=vimContinue,vimContinueComment
864syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
865syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000866syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100867
868" Searches And Globals: {{{2
869" ====================
870syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
871syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100872syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
873syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100874
dkearns04e53632024-04-11 06:18:37 +1000875" Vim9 Script Regions: {{{2
876" ==================
877
878if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200879 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
880 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000881
Doug Kearnsce064932024-04-13 18:24:01 +0200882 syn keyword vim9Vim9ScriptArg noclear contained
883 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000884endif
885
h-east9b53c052024-02-13 21:09:22 +0100886" Embedded Scripts: {{{2
887" ================
888" perl,ruby : Benoit Cerrina
889" python,tcl : Johannes Zellner
890" mzscheme, lua : Charles Campbell
891
892" Allows users to specify the type of embedded script highlighting
893" they want: (perl/python/ruby/tcl support)
894" g:vimsyn_embed == 0 : don't embed any scripts
h-east84ac2122024-06-17 18:12:30 +0200895" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
896" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
897" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
898" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
899" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
900" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
h-east9b53c052024-02-13 21:09:22 +0100901if !exists("g:vimsyn_embed")
902 let g:vimsyn_embed= "lmpPr"
903endif
904
905" [-- lua --] {{{3
906let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
907if !filereadable(s:luapath)
908 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
909 if filereadable(fnameescape(s:luapath))
910 let s:luapath= fnameescape(s:luapath)
911 break
912 endif
913 endfor
914endif
915if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
916 unlet! b:current_syntax
917 syn cluster vimFuncBodyList add=vimLuaRegion
918 exe "syn include @vimLuaScript ".s:luapath
919 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
920 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
921 syn cluster vimFuncBodyList add=vimLuaRegion
922else
923 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
924 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
925endif
926unlet s:luapath
927
928" [-- perl --] {{{3
929let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
930if !filereadable(s:perlpath)
931 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
932 if filereadable(fnameescape(s:perlpath))
933 let s:perlpath= fnameescape(s:perlpath)
934 break
935 endif
936 endfor
937endif
938if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
939 unlet! b:current_syntax
940 syn cluster vimFuncBodyList add=vimPerlRegion
941 exe "syn include @vimPerlScript ".s:perlpath
942 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
943 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
944 syn cluster vimFuncBodyList add=vimPerlRegion
945else
946 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
947 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
948endif
949unlet s:perlpath
950
951" [-- ruby --] {{{3
952let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
953if !filereadable(s:rubypath)
954 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
955 if filereadable(fnameescape(s:rubypath))
956 let s:rubypath= fnameescape(s:rubypath)
957 break
958 endif
959 endfor
960endif
961if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
962 syn cluster vimFuncBodyList add=vimRubyRegion
963 unlet! b:current_syntax
964 exe "syn include @vimRubyScript ".s:rubypath
965 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
966 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
967 syn cluster vimFuncBodyList add=vimRubyRegion
968else
969 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
970 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
971endif
972unlet s:rubypath
973
974" [-- python --] {{{3
975let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
976if !filereadable(s:pythonpath)
977 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
978 if filereadable(fnameescape(s:pythonpath))
979 let s:pythonpath= fnameescape(s:pythonpath)
980 break
981 endif
982 endfor
983endif
984if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
985 unlet! b:current_syntax
986 syn cluster vimFuncBodyList add=vimPythonRegion
987 exe "syn include @vimPythonScript ".s:pythonpath
988 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
989 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
990 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
991 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
992 syn cluster vimFuncBodyList add=vimPythonRegion
993else
994 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
995 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
996endif
997unlet s:pythonpath
998
999" [-- tcl --] {{{3
1000if has("win32") || has("win95") || has("win64") || has("win16")
1001 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
1002 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
1003else
1004 let s:trytcl= 1
1005endif
1006if s:trytcl
1007 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
1008 if !filereadable(s:tclpath)
1009 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
1010 if filereadable(fnameescape(s:tclpath))
1011 let s:tclpath= fnameescape(s:tclpath)
1012 break
1013 endif
1014 endfor
1015 endif
1016 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
1017 unlet! b:current_syntax
1018 syn cluster vimFuncBodyList add=vimTclRegion
1019 exe "syn include @vimTclScript ".s:tclpath
1020 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
1021 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
1022 syn cluster vimFuncBodyList add=vimTclScript
1023 else
1024 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1025 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1026 endif
1027 unlet s:tclpath
1028else
1029 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1030 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1031endif
1032unlet s:trytcl
1033
1034" [-- mzscheme --] {{{3
1035let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1036if !filereadable(s:mzschemepath)
1037 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1038 if filereadable(fnameescape(s:mzschemepath))
1039 let s:mzschemepath= fnameescape(s:mzschemepath)
1040 break
1041 endif
1042 endfor
1043endif
1044if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1045 unlet! b:current_syntax
1046 let s:iskKeep= &isk
1047 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1048 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1049 let &isk= s:iskKeep
1050 unlet s:iskKeep
1051 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1052 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1053 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1054else
1055 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1056 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1057endif
1058unlet s:mzschemepath
1059
1060" Synchronize (speed) {{{2
1061"============
1062if exists("g:vimsyn_minlines")
1063 exe "syn sync minlines=".g:vimsyn_minlines
1064endif
1065exe "syn sync maxlines=".s:vimsyn_maxlines
1066syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001067syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001068syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1069
1070" ====================
1071" Highlighting Settings {{{2
1072" ====================
1073
1074if !exists("skip_vim_syntax_inits")
1075 if !exists("g:vimsyn_noerror")
1076 hi def link vimBehaveError vimError
1077 hi def link vimCollClassErr vimError
1078 hi def link vimErrSetting vimError
1079 hi def link vimEmbedError vimError
1080 hi def link vimFTError vimError
1081 hi def link vimFunctionError vimError
1082 hi def link vimFunc vimError
1083 hi def link vimHiAttribList vimError
1084 hi def link vimHiCtermError vimError
1085 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001086 hi def link vimMapModErr vimError
dkearnsae321b52024-06-15 23:06:17 +10001087 hi def link vimShebangError vimError
h-east9b53c052024-02-13 21:09:22 +01001088 hi def link vimSubstFlagErr vimError
1089 hi def link vimSynCaseError vimError
1090 hi def link vimSynFoldMethodError vimError
1091 hi def link vimBufnrWarn vimWarn
1092 endif
1093
1094 hi def link vimAbb vimCommand
1095 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001096 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001097 hi def link vimAugroupError vimError
1098 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001099 hi def link vimAutoCmd vimCommand
1100 hi def link vimAutoEvent Type
1101 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001102 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001103 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001104 hi def link vimBehaveModel vimBehave
1105 hi def link vimBehave vimCommand
1106 hi def link vimBracket Delimiter
dkearnsa3bddb72024-06-14 01:48:10 +10001107 hi def link vimCatch vimCommand
h-east9b53c052024-02-13 21:09:22 +01001108 hi def link vimCmplxRepeat SpecialChar
1109 hi def link vimCommand Statement
1110 hi def link vimComment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001111 hi def link vimCommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001112 hi def link vimCommentString vimString
1113 hi def link vimCommentTitle PreProc
1114 hi def link vimCondHL vimCommand
1115 hi def link vimConst vimCommand
1116 hi def link vimContinue Special
1117 hi def link vimContinueComment vimComment
1118 hi def link vimCtrlChar SpecialChar
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001119 hi def link vimDefComment vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +11001120 hi def link vimDefKey vimCommand
1121 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001122 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001123 hi def link vimEchohlNone vimGroup
1124 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001125 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001126 hi def link vimEndfunction vimCommand
1127 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001128 hi def link vimEnvvar PreProc
1129 hi def link vimError Error
1130 hi def link vimEscape Special
1131 hi def link vimFBVar vimVar
1132 hi def link vimFgBgAttrib vimHiAttrib
1133 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001134 hi def link vimFor vimCommand
1135 hi def link vimFTCmd vimCommand
1136 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001137 hi def link vimFuncBang vimBang
1138 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001139 hi def link vimFuncKey vimCommand
1140 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001141 hi def link vimFuncMod Special
1142 hi def link vimFuncParam vimVar
1143 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001144 hi def link vimFuncSID Special
1145 hi def link vimFuncVar Identifier
1146 hi def link vimGroupAdd vimSynOption
1147 hi def link vimGroupName vimGroup
1148 hi def link vimGroupRem vimSynOption
1149 hi def link vimGroupSpecial Special
1150 hi def link vimGroup Type
1151 hi def link vimHiAttrib PreProc
1152 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001153 hi def link vimHiClear Type
1154 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001155 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001156 hi def link vimHiCtermfont vimHiTerm
1157 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001158 hi def link vimHiCTerm vimHiTerm
1159 hi def link vimHighlight vimCommand
1160 hi def link vimHiGroup vimGroupName
1161 hi def link vimHiGuiFgBg vimHiTerm
1162 hi def link vimHiGuiFont vimHiTerm
1163 hi def link vimHiGuiRgb vimNumber
1164 hi def link vimHiGui vimHiTerm
1165 hi def link vimHiNmbr Number
1166 hi def link vimHiStartStop vimHiTerm
1167 hi def link vimHiTerm Type
1168 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001169 hi def link vimInsert vimString
1170 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001171 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001172 hi def link vimKeymapLineComment vimComment
1173 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001174 hi def link vimLet vimCommand
1175 hi def link vimLetHereDoc vimString
1176 hi def link vimLetHereDocStart Special
1177 hi def link vimLetHereDocStop Special
1178 hi def link vimLetRegister Special
1179 hi def link vimLineComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001180 hi def link vimMapBang vimBang
1181 hi def link vimMapModKey vimFuncSID
1182 hi def link vimMapMod vimBracket
1183 hi def link vimMap vimCommand
1184 hi def link vimMark Number
1185 hi def link vimMarkNumber vimNumber
Doug Kearnse85fdc72024-07-07 20:45:37 +02001186 hi def link vimMatch vimCommand
1187 hi def link vimMatchGroup vimGroup
1188 hi def link vimMatchNone vimGroup
h-east9b53c052024-02-13 21:09:22 +01001189 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001190 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001191 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001192 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001193 hi def link vimMenu vimCommand
1194 hi def link vimMenuNotation vimNotation
1195 hi def link vimMenuPriority Number
1196 hi def link vimMenuStatus Special
1197 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001198 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001199 hi def link vimMtchComment vimComment
1200 hi def link vimNorm vimCommand
1201 hi def link vimNotation Special
1202 hi def link vimNotFunc vimCommand
1203 hi def link vimNotPatSep vimString
1204 hi def link vimNumber Number
1205 hi def link vimOperError Error
1206 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001207 hi def link vimOption PreProc
1208 hi def link vimParenSep Delimiter
1209 hi def link vimPatSepErr vimError
1210 hi def link vimPatSepR vimPatSep
1211 hi def link vimPatSep SpecialChar
1212 hi def link vimPatSepZone vimString
1213 hi def link vimPatSepZ vimPatSep
1214 hi def link vimPattern Type
1215 hi def link vimPlainMark vimMark
1216 hi def link vimPlainRegister vimRegister
1217 hi def link vimRegister SpecialChar
1218 hi def link vimScriptDelim Comment
1219 hi def link vimSearchDelim Statement
1220 hi def link vimSearch vimString
1221 hi def link vimSep Delimiter
1222 hi def link vimSetMod vimOption
1223 hi def link vimSetSep Statement
1224 hi def link vimSetString vimString
dkearnsae321b52024-06-15 23:06:17 +10001225 hi def link vimShebang PreProc
Doug Kearns262e25e2024-06-14 20:16:35 +02001226 hi def link vimSleep vimCommand
1227 hi def link vimSleepArg Constant
1228 hi def link vimSleepBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001229 hi def link vimSpecFile Identifier
1230 hi def link vimSpecFileMod vimSpecFile
1231 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001232 hi def link vimStringCont vimString
1233 hi def link vimString String
1234 hi def link vimStringEnd vimString
1235 hi def link vimStringInterpolationBrace vimEscape
1236 hi def link vimSubst1 vimSubst
1237 hi def link vimSubstDelim Delimiter
1238 hi def link vimSubstFlags Special
1239 hi def link vimSubstSubstr SpecialChar
1240 hi def link vimSubstTwoBS vimString
1241 hi def link vimSubst vimCommand
1242 hi def link vimSynCaseError Error
1243 hi def link vimSynCase Type
1244 hi def link vimSyncC Type
1245 hi def link vimSyncError Error
1246 hi def link vimSyncGroupName vimGroupName
1247 hi def link vimSyncGroup vimGroupName
1248 hi def link vimSyncKey Type
1249 hi def link vimSyncNone Type
1250 hi def link vimSynContains vimSynOption
1251 hi def link vimSynError Error
1252 hi def link vimSynFoldMethodError Error
1253 hi def link vimSynFoldMethod Type
1254 hi def link vimSynKeyContainedin vimSynContains
1255 hi def link vimSynKeyOpt vimSynOption
1256 hi def link vimSynCchar vimSynOption
1257 hi def link vimSynCcharValue Character
1258 hi def link vimSynMtchGrp vimSynOption
1259 hi def link vimSynMtchOpt vimSynOption
1260 hi def link vimSynNextgroup vimSynOption
1261 hi def link vimSynNotPatRange vimSynRegPat
1262 hi def link vimSynOption Special
1263 hi def link vimSynPatRange vimString
1264 hi def link vimSynRegOpt vimSynOption
1265 hi def link vimSynRegPat vimString
1266 hi def link vimSynReg Type
1267 hi def link vimSyntax vimCommand
1268 hi def link vimSynType vimSpecial
dkearnsa3bddb72024-06-14 01:48:10 +10001269 hi def link vimThrow vimCommand
h-east9b53c052024-02-13 21:09:22 +01001270 hi def link vimTodo Todo
1271 hi def link vimType Type
1272 hi def link vimUnlet vimCommand
1273 hi def link vimUnletBang vimBang
1274 hi def link vimUnmap vimMap
1275 hi def link vimUserAttrbCmpltFunc Special
1276 hi def link vimUserAttrbCmplt vimSpecial
1277 hi def link vimUserAttrbKey vimOption
1278 hi def link vimUserAttrb vimSpecial
1279 hi def link vimUserAttrbError Error
1280 hi def link vimUserCmdError Error
1281 hi def link vimUserCommand vimCommand
1282 hi def link vimUserFunc Normal
1283 hi def link vimVar Identifier
1284 hi def link vimWarn WarningMsg
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001285
1286 hi def link vim9Boolean Boolean
1287 hi def link vim9Comment Comment
1288 hi def link vim9CommentError vimError
1289 hi def link vim9CommentTitle PreProc
1290 hi def link vim9Const vimCommand
1291 hi def link vim9Final vimCommand
1292 hi def link vim9For vimCommand
1293 hi def link vim9LineComment vimComment
1294 hi def link vim9Null Constant
1295 hi def link vim9Var vimCommand
1296 hi def link vim9Variable vimVar
1297 hi def link vim9Vim9Script vimCommand
1298 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001299endif
1300
1301" Current Syntax Variable: {{{2
1302let b:current_syntax = "vim"
1303
1304" ---------------------------------------------------------------------
1305" Cleanup: {{{1
Doug Kearnsd65e58f2024-07-17 19:34:14 +02001306delc Vim9
1307delc VimL
h-east9b53c052024-02-13 21:09:22 +01001308delc VimFolda
1309delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001310delc VimFoldh
1311delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001312delc VimFoldl
1313delc VimFoldm
1314delc VimFoldp
1315delc VimFoldP
1316delc VimFoldr
1317delc VimFoldt
1318let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001319unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001320" vim:ts=18 fdm=marker ft=vim