blob: 6bb2d44c88f4f229b5032e58ff8fedd869456ef2 [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 Kearnsfc64ac02024-06-22 11:20:36 +02006" Last Change: 2024 Jun 21
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008
9" DO NOT CHANGE DIRECTLY.
10" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
11" (Search string "GEN_SYN_VIM:" in this file)
12
13" Automatically generated keyword lists: {{{1
14
15" Quit when a syntax file was already loaded {{{2
16if exists("b:current_syntax")
17 finish
18endif
h-east9b53c052024-02-13 21:09:22 +010019let s:keepcpo= &cpo
20set cpo&vim
21
dkearns04e53632024-04-11 06:18:37 +100022let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
23
h-east9b53c052024-02-13 21:09:22 +010024" vimTodo: contains common special-notices for comments {{{2
25" Use the vimCommentGroup cluster to add your own.
26syn keyword vimTodo contained COMBAK FIXME TODO XXX
27syn cluster vimCommentGroup contains=vimTodo,@Spell
28
29" regular vim commands {{{2
30" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
31
32syn keyword vimCommand contained 2mat[ch] 3mat[ch]
33
Aliaksei Budaveidfcef892024-02-18 21:02:14 +030034" Lower priority for _new_ to distinguish constructors from the command.
35syn match vimCommand contained "\<new\>(\@!"
h-east9b53c052024-02-13 21:09:22 +010036syn match vimCommand contained "\<z[-+^.=]\=\>"
37syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
38
39" vimOptions are caught only when contained in a vimSet {{{2
40" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
41
42" vimOptions: These are the turn-off setting variants {{{2
43" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
44
45" vimOptions: These are the invertible variants {{{2
46" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
47
48" termcap codes (which can also be set) {{{2
49" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
50" term key codes
51syn keyword vimOption contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
52syn match vimOption contained "t_%1"
53syn match vimOption contained "t_#2"
54syn match vimOption contained "t_#4"
55syn match vimOption contained "t_@7"
56syn match vimOption contained "t_*7"
57syn match vimOption contained "t_&8"
58syn match vimOption contained "t_%i"
59syn match vimOption contained "t_k;"
60
61" unsupported settings: some were supported by vi but don't do anything in vim {{{2
62" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
63
64" AutoCmd Events {{{2
65syn case ignore
66" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
67
68" Highlight commonly used Groupnames {{{2
69syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
70
71" Default highlighting groups {{{2
72" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
h_eastc984b2f2024-05-27 22:40:25 +090073syn match vimHLGroup contained "\<Conceal\>"
h-east9b53c052024-02-13 21:09:22 +010074syn case match
75
76" Function Names {{{2
77" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
78
79"--- syntax here and above generated by mkvimvim ---
80" Special Vim Highlighting (not automatic) {{{1
81
82" Set up folding commands for this syntax highlighting file {{{2
Doug Kearnsce064932024-04-13 18:24:01 +020083if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
h-east9b53c052024-02-13 21:09:22 +010084 if g:vimsyn_folding =~# 'a'
85 com! -nargs=* VimFolda <args> fold
86 else
87 com! -nargs=* VimFolda <args>
88 endif
89 if g:vimsyn_folding =~# 'f'
90 com! -nargs=* VimFoldf <args> fold
91 else
92 com! -nargs=* VimFoldf <args>
93 endif
94 if g:vimsyn_folding =~# 'h'
95 com! -nargs=* VimFoldh <args> fold
96 else
97 com! -nargs=* VimFoldh <args>
98 endif
Doug Kearnsce064932024-04-13 18:24:01 +020099 if g:vimsyn_folding =~# 'H'
100 com! -nargs=* VimFoldH <args> fold
101 else
102 com! -nargs=* VimFoldH <args>
103 endif
h-east9b53c052024-02-13 21:09:22 +0100104 if g:vimsyn_folding =~# 'l'
105 com! -nargs=* VimFoldl <args> fold
106 else
107 com! -nargs=* VimFoldl <args>
108 endif
109 if g:vimsyn_folding =~# 'm'
110 com! -nargs=* VimFoldm <args> fold
111 else
112 com! -nargs=* VimFoldm <args>
113 endif
114 if g:vimsyn_folding =~# 'p'
115 com! -nargs=* VimFoldp <args> fold
116 else
117 com! -nargs=* VimFoldp <args>
118 endif
119 if g:vimsyn_folding =~# 'P'
120 com! -nargs=* VimFoldP <args> fold
121 else
122 com! -nargs=* VimFoldP <args>
123 endif
124 if g:vimsyn_folding =~# 'r'
125 com! -nargs=* VimFoldr <args> fold
126 else
127 com! -nargs=* VimFoldr <args>
128 endif
129 if g:vimsyn_folding =~# 't'
130 com! -nargs=* VimFoldt <args> fold
131 else
132 com! -nargs=* VimFoldt <args>
133 endif
134else
135 com! -nargs=* VimFolda <args>
136 com! -nargs=* VimFoldf <args>
137 com! -nargs=* VimFoldh <args>
Doug Kearnsce064932024-04-13 18:24:01 +0200138 com! -nargs=* VimFoldH <args>
h-east9b53c052024-02-13 21:09:22 +0100139 com! -nargs=* VimFoldl <args>
140 com! -nargs=* VimFoldm <args>
141 com! -nargs=* VimFoldp <args>
142 com! -nargs=* VimFoldP <args>
143 com! -nargs=* VimFoldr <args>
144 com! -nargs=* VimFoldt <args>
145endif
146
147" Deprecated variable options {{{2
148if exists("g:vim_minlines")
149 let g:vimsyn_minlines= g:vim_minlines
150endif
151if exists("g:vim_maxlines")
152 let g:vimsyn_maxlines= g:vim_maxlines
153endif
154if exists("g:vimsyntax_noerror")
155 let g:vimsyn_noerror= g:vimsyntax_noerror
156endif
157
158" Variable options {{{2
159if exists("g:vim_maxlines")
160 let s:vimsyn_maxlines= g:vim_maxlines
161else
162 let s:vimsyn_maxlines= 60
163endif
164
165" Numbers {{{2
166" =======
dkearns5cd86c62024-03-12 07:40:58 +1100167syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000168syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
169syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
170syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
171syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
172syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
173syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
174syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100175syn case match
h-east9b53c052024-02-13 21:09:22 +0100176
177" All vimCommands are contained by vimIsCommand. {{{2
Doug Kearns262e25e2024-06-14 20:16:35 +0200178syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
dkearnsc4aef9a2024-03-04 02:42:47 +1100179syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100180syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
181syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
182syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
183syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
184syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
185syn match vimVar "\s\zs&t_k;"
186syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
187syn keyword vimCommand contained in
188
dkearnsb1427b42024-02-28 05:59:30 +1100189syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
190
h-east9b53c052024-02-13 21:09:22 +0100191" Insertions And Appends: insert append {{{2
192" (buftype != nofile test avoids having append, change, insert show up in the command window)
193" =======================
194if &buftype != 'nofile'
dkearns4ba70ca2024-04-15 04:32:56 +1000195 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
196 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
197 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
h-east9b53c052024-02-13 21:09:22 +0100198endif
199
200" Behave! {{{2
201" =======
h-east9b53c052024-02-13 21:09:22 +0100202if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
203 syn match vimBehaveError contained "[^ ]\+"
204endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100205syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
206syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
207syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100208
dkearnsa3bddb72024-06-14 01:48:10 +1000209" Exception Handling {{{2
210syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
211syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
212syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
213
h-east9b53c052024-02-13 21:09:22 +0100214" Filetypes {{{2
215" =========
216syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
217if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
218 syn match vimFTError contained "\I\i*"
219endif
220syn keyword vimFTCmd contained filet[ype]
221syn keyword vimFTOption contained detect indent off on plugin
222
223" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
224" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000225syn cluster vimAugroupList contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
dkearnsc4aef9a2024-03-04 02:42:47 +1100226syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100227if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100228 syn region vimAugroup fold start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100229else
dkearnsc4aef9a2024-03-04 02:42:47 +1100230 syn region vimAugroup start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100231endif
h-east9b53c052024-02-13 21:09:22 +0100232if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100233 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100234endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100235
236syn match vimAutoCmdGroup contained "\S\+"
237syn match vimAugroupEnd contained "\c\<END\>"
238syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
239syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100240
241" Operators: {{{2
242" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100243syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100244syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
245syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
246syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100247syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100248syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
249if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
250 syn match vimOperError ")"
251endif
252
dkearns4ba70ca2024-04-15 04:32:56 +1000253" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
h-east9b53c052024-02-13 21:09:22 +0100254" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100255syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
256syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
dkearns4ba70ca2024-04-15 04:32:56 +1000257
258syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
259syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
260syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
dkearns35e6f4c2024-03-22 06:41:10 +1100261
262syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
263syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
264syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
265
266syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
267syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300268syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100269
270syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
271syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
272
273syn match vimFuncBang contained "!"
274syn match vimFuncSID contained "\c<sid>"
275syn match vimFuncSID contained "\<[sg]:"
276syn keyword vimFuncKey contained fu[nction]
277syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300278syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100279
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200280syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue
281syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +1100282syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
283syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
284
285syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200286syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100287
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200288syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
289syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
dkearns35e6f4c2024-03-22 06:41:10 +1100290
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200291syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
292syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
h-east9b53c052024-02-13 21:09:22 +0100293
294if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns4ba70ca2024-04-15 04:32:56 +1000295 syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
296 syn region vimFuncFold start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
297 syn region vimFuncFold start="^\s*:\=\s*def\s\+new\i\+(" end="^\s*:\=\s*enddef\>" contains=vimDef fold keepend extend transparent
h-east9b53c052024-02-13 21:09:22 +0100298endif
dkearns35e6f4c2024-03-22 06:41:10 +1100299
300syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100301syn match vimFuncBlank contained "\s\+"
302
dkearns35e6f4c2024-03-22 06:41:10 +1100303" Types: {{{2
304" =====
h-east9b53c052024-02-13 21:09:22 +0100305" vimTypes : new for vim9
Doug Kearnsfc64ac02024-06-22 11:20:36 +0200306syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
dkearns35e6f4c2024-03-22 06:41:10 +1100307syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
308
309syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
310syn keyword vimType contained any blob bool channel float job number string void
311syn match vimType contained "\<func\>"
312syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
313syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
314syn match vimUserType contained "\<\u\w*\>"
315
316syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100317
dkearns04e53632024-04-11 06:18:37 +1000318" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100319" =======
320
dkearns04e53632024-04-11 06:18:37 +1000321syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100322syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
323syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
324syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000325
326" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
327if s:vim9script
328 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
329else
330 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
331endif
332syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100333
334syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
335
336" Special Filenames, Modifiers, Extension Removal: {{{2
337" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100338syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
339syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
340syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
341syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
342syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
343syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100344syn match vimSpecFileMod "\(:[phtre]\)\+" contained
345
346" User-Specified Commands: {{{2
347" =======================
dkearns04e53632024-04-11 06:18:37 +1000348syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
h-east9b53c052024-02-13 21:09:22 +0100349syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000350syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
351syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100352syn match vimUserAttrbError contained "-\a\+\ze\s"
353syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
354syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
355syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
356syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
357syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
358syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
359syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
360syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
361if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
362 syn match vimUserCmdError contained "\S\+\>"
363endif
364syn case ignore
365syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
366" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
367syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
368syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
369
370syn case match
371syn match vimUserAttrbCmplt contained "custom,\u\w*"
372
dkearns04e53632024-04-11 06:18:37 +1000373syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
374
h-east9b53c052024-02-13 21:09:22 +0100375" Lower Priority Comments: after some vim commands... {{{2
376" =======================
dkearns959c3c82024-06-12 04:18:08 +1000377if get(g:, "vimsyn_comment_strings", 1)
378 syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
379endif
dkearns04e53632024-04-11 06:18:37 +1000380
381if s:vim9script
382 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
383 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
384 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
385 " Vim9 comments - TODO: might be highlighted while they don't work
386 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
387 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
388 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
389 " Vim9 comment inside expression
390 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
391 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
392 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
393
394 syn cluster vimComment contains=vim9Comment
395else
396 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
397 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
398 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
399 " Vim9 comments - TODO: might be highlighted while they don't work
400 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
401 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
402 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
403 " Vim9 comment inside expression
404 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
405 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
406 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
407
408 syn cluster vimComment contains=vimComment
409endif
h-east9b53c052024-02-13 21:09:22 +0100410
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
510" Let And Var: {{{2
511" ===========
512syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
513syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
514syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
515
516syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
517syn 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
h-east9b53c052024-02-13 21:09:22 +0100521syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
522
523" For: {{{2
524" ===
525syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100526
h-east9b53c052024-02-13 21:09:22 +0100527" Abbreviations: {{{2
528" =============
529" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100530" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100531
532" Autocmd: {{{2
533" =======
534syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
535syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000536syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100537syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000538syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
539syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100540
541" Echo And Execute: -- prefer strings! {{{2
542" ================
dkearns61887b32024-03-15 23:45:48 +1100543" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100544
dkearns61887b32024-03-15 23:45:48 +1100545syn region vimEcho
546 \ matchgroup=vimCommand
547 \ start="\<ec\%[ho]\>"
548 \ start="\<echoe\%[rr]\>"
549 \ start="\<echom\%[sg]\>"
550 \ start="\<echoc\%[onsole]\>"
551 \ start="\<echon\>"
552 \ start="\<echow\%[indow]\>"
553 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
554 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
555
556syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100557syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100558syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100559syn case match
560
dkearns35e6f4c2024-03-22 06:41:10 +1100561syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100562
563syn 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 +1100564
h-east9b53c052024-02-13 21:09:22 +0100565" Maps: {{{2
566" ====
567syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
568syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
569" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100570" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
571syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100572" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100573syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
574syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
575syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100576syn 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 +1100577syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
578" assume a continuation comment introduces the RHS
579syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100580syn case ignore
581syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
582syn case match
583
584" Menus: {{{2
585" =====
dkearns62b26042024-03-10 03:43:28 +1100586" NOTE: tail comments disallowed
587" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
588syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
589syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
590syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100591syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
592syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100593syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
594syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
595syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
596syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
597syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
598
599syn region vimMenutranslate
600 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
601 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
602 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
603 \ contains=@vimContinue,vimMenutranslateName keepend transparent
604" oneline is sufficient to match the current formatting in runtime/lang/*.vim
605syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
606syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100607
608" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
609" ======================
610syn case ignore
611syn 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
612
613syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
614syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
615syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
616syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
617syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
618syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
619syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
620
621syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
622syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
623syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
624syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
625syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
626syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
627
628syn match vimBracket contained "[\\<>]"
629syn case match
630
631" User Function Highlighting: {{{2
632" (following Gautam Iyer's suggestion)
633" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100634syn 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 +0300635syn 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 +1100636syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100637
638" User Command Highlighting: {{{2
639syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
640
641" Errors And Warnings: {{{2
642" ====================
643if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300644 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300645 " TODO: The |builtin-object-methods| exception should only apply to method
646 " definitions.
647 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 +0100648 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
649 syn match vimElseIfErr "\<else\s\+if\>"
650 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
651endif
652
653syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
654
655" Norm: {{{2
656" ====
657syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
658syn match vimNormCmds contained ".*$"
659
Doug Kearns262e25e2024-06-14 20:16:35 +0200660" Sleep: {{{2
661" =====
662syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
663syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
664syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
665
h-east9b53c052024-02-13 21:09:22 +0100666" Syntax: {{{2
667"=======
668syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
669syn 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
670syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
671
672if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
673 syn match vimSynError contained "\i\+"
674 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
675endif
676syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
677syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
678syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
679if has("conceal")
680 " no whitespace allowed after '='
681 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
682 syn match vimSynCcharValue contained "\S"
683endif
684
dkearns04e53632024-04-11 06:18:37 +1000685syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100686syn cluster vimFuncBodyList add=vimSyntax
687
688" Syntax: case {{{2
689syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
690if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
691 syn match vimSynCaseError contained "\i\+"
692endif
693syn keyword vimSynCase contained ignore match
694
695" Syntax: clear {{{2
696syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
697
698" Syntax: cluster {{{2
699syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
700syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
701syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
702syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100703
704" Syntax: foldlevel {{{2
705syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
706if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
707 syn match vimSynFoldMethodError contained "\i\+"
708endif
709syn keyword vimSynFoldMethod contained start minimum
710
711" Syntax: iskeyword {{{2
712syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
713syn match vimIskList contained '\S\+' contains=vimIskSep
714syn match vimIskSep contained ','
715
716" Syntax: include {{{2
717syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100718
719" Syntax: keyword {{{2
720syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
721syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
722syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
723syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100724
725" Syntax: match {{{2
726syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
727syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
728syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
729syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100730
731" Syntax: off and on {{{2
732syn keyword vimSynType contained enable list manual off on reset
733
734" Syntax: region {{{2
735syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
736syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
737syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
738syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
739syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
740syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
741syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
742syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
743syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
744syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
745syn match vimSynPatMod contained "lc=\d\+"
746syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
747syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
748syn match vimSynNotPatRange contained "\\\\\|\\\["
749syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100750
751" Syntax: sync {{{2
752" ============
753syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
754if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
755 syn match vimSyncError contained "\i\+"
756endif
757syn keyword vimSyncC contained ccomment clear fromstart
758syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
759syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
760syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
761syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
762syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
763syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
764syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
765syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
766syn keyword vimSyncNone contained NONE
767
768" Additional IsCommand: here by reasons of precedence {{{2
769" ====================
770syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
771
772" Highlighting: {{{2
773" ============
dkearns04e53632024-04-11 06:18:37 +1000774syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100775if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
776 syn match vimHiCtermError contained "\D\i*"
777endif
778syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100779syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100780
781syn match vimHiGroup contained "\i\+"
782syn case ignore
783syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
784syn keyword vimFgBgAttrib contained none bg background fg foreground
785syn case match
786syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
787syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
788syn case ignore
789syn 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
790syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
791
792syn case match
793syn match vimHiFontname contained "[a-zA-Z\-*]\+"
794syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
795syn match vimHiGuiRgb contained "#\x\{6}"
796
797" Highlighting: hi group key=arg ... {{{2
798syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100799syn 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 +0100800if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
801 syn match vimHiKeyError contained "\i\+="he=e-1
802endif
803syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100804syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100805syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
806syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
807syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
808syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
809syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
810syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
811syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
812syn match vimHiTermcap contained "\S\+" contains=vimNotation
813syn match vimHiNmbr contained '\d\+'
814
815" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100816syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100817
818" Highlight: link {{{2
819" see tst24 (hi def vs hi) (Jul 06, 2018)
820"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 +1100821" TODO: simplify and allow line continuations --djk
822syn 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 +0100823
824" Control Characters: {{{2
825" ==================
826syn match vimCtrlChar "[- -]"
827
828" Beginners - Patterns that involve ^ {{{2
829" =========
dkearns04e53632024-04-11 06:18:37 +1000830if s:vim9script
dkearns059cbe82024-06-12 03:27:53 +1000831 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
832 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000833else
dkearns059cbe82024-06-12 03:27:53 +1000834 syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
835 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
dkearns04e53632024-04-11 06:18:37 +1000836endif
h-east9b53c052024-02-13 21:09:22 +0100837syn 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 +1000838syn 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 +1000839
dkearnsae321b52024-06-15 23:06:17 +1000840" allowed anywhere in the file
841if !s:vim9script
842 syn match vimShebangError "^\s*\zs#!.*" display
843endif
844syn match vimShebang "\%^#!.*" display
845
h-east9b53c052024-02-13 21:09:22 +0100846syn match vimContinue "^\s*\zs\\"
dkearns059cbe82024-06-12 03:27:53 +1000847syn match vimContinueComment '^\s*\zs["#]\\ .*'
h-east9b53c052024-02-13 21:09:22 +0100848syn cluster vimContinue contains=vimContinue,vimContinueComment
849syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
850syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000851syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100852
853" Searches And Globals: {{{2
854" ====================
855syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
856syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100857syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
858syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100859
dkearns04e53632024-04-11 06:18:37 +1000860" Vim9 Script Regions: {{{2
861" ==================
862
863if s:vim9script
Doug Kearnsce064932024-04-13 18:24:01 +0200864 syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
865 VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
dkearns04e53632024-04-11 06:18:37 +1000866
Doug Kearnsce064932024-04-13 18:24:01 +0200867 syn keyword vim9Vim9ScriptArg noclear contained
868 syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
dkearns04e53632024-04-11 06:18:37 +1000869endif
870
h-east9b53c052024-02-13 21:09:22 +0100871" Embedded Scripts: {{{2
872" ================
873" perl,ruby : Benoit Cerrina
874" python,tcl : Johannes Zellner
875" mzscheme, lua : Charles Campbell
876
877" Allows users to specify the type of embedded script highlighting
878" they want: (perl/python/ruby/tcl support)
879" g:vimsyn_embed == 0 : don't embed any scripts
h-east84ac2122024-06-17 18:12:30 +0200880" g:vimsyn_embed =~# 'l' : embed Lua (but only if vim supports it)
881" g:vimsyn_embed =~# 'm' : embed MzScheme (but only if vim supports it)
882" g:vimsyn_embed =~# 'p' : embed Perl (but only if vim supports it)
883" g:vimsyn_embed =~# 'P' : embed Python (but only if vim supports it)
884" g:vimsyn_embed =~# 'r' : embed Ruby (but only if vim supports it)
885" g:vimsyn_embed =~# 't' : embed Tcl (but only if vim supports it)
h-east9b53c052024-02-13 21:09:22 +0100886if !exists("g:vimsyn_embed")
887 let g:vimsyn_embed= "lmpPr"
888endif
889
890" [-- lua --] {{{3
891let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
892if !filereadable(s:luapath)
893 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
894 if filereadable(fnameescape(s:luapath))
895 let s:luapath= fnameescape(s:luapath)
896 break
897 endif
898 endfor
899endif
900if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
901 unlet! b:current_syntax
902 syn cluster vimFuncBodyList add=vimLuaRegion
903 exe "syn include @vimLuaScript ".s:luapath
904 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
905 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
906 syn cluster vimFuncBodyList add=vimLuaRegion
907else
908 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
909 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
910endif
911unlet s:luapath
912
913" [-- perl --] {{{3
914let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
915if !filereadable(s:perlpath)
916 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
917 if filereadable(fnameescape(s:perlpath))
918 let s:perlpath= fnameescape(s:perlpath)
919 break
920 endif
921 endfor
922endif
923if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
924 unlet! b:current_syntax
925 syn cluster vimFuncBodyList add=vimPerlRegion
926 exe "syn include @vimPerlScript ".s:perlpath
927 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
928 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
929 syn cluster vimFuncBodyList add=vimPerlRegion
930else
931 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
932 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
933endif
934unlet s:perlpath
935
936" [-- ruby --] {{{3
937let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
938if !filereadable(s:rubypath)
939 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
940 if filereadable(fnameescape(s:rubypath))
941 let s:rubypath= fnameescape(s:rubypath)
942 break
943 endif
944 endfor
945endif
946if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
947 syn cluster vimFuncBodyList add=vimRubyRegion
948 unlet! b:current_syntax
949 exe "syn include @vimRubyScript ".s:rubypath
950 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
951 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
952 syn cluster vimFuncBodyList add=vimRubyRegion
953else
954 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
955 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
956endif
957unlet s:rubypath
958
959" [-- python --] {{{3
960let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
961if !filereadable(s:pythonpath)
962 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
963 if filereadable(fnameescape(s:pythonpath))
964 let s:pythonpath= fnameescape(s:pythonpath)
965 break
966 endif
967 endfor
968endif
969if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
970 unlet! b:current_syntax
971 syn cluster vimFuncBodyList add=vimPythonRegion
972 exe "syn include @vimPythonScript ".s:pythonpath
973 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
974 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
975 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
976 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
977 syn cluster vimFuncBodyList add=vimPythonRegion
978else
979 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
980 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
981endif
982unlet s:pythonpath
983
984" [-- tcl --] {{{3
985if has("win32") || has("win95") || has("win64") || has("win16")
986 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
987 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
988else
989 let s:trytcl= 1
990endif
991if s:trytcl
992 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
993 if !filereadable(s:tclpath)
994 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
995 if filereadable(fnameescape(s:tclpath))
996 let s:tclpath= fnameescape(s:tclpath)
997 break
998 endif
999 endfor
1000 endif
1001 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
1002 unlet! b:current_syntax
1003 syn cluster vimFuncBodyList add=vimTclRegion
1004 exe "syn include @vimTclScript ".s:tclpath
1005 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
1006 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
1007 syn cluster vimFuncBodyList add=vimTclScript
1008 else
1009 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1010 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1011 endif
1012 unlet s:tclpath
1013else
1014 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
1015 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
1016endif
1017unlet s:trytcl
1018
1019" [-- mzscheme --] {{{3
1020let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
1021if !filereadable(s:mzschemepath)
1022 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
1023 if filereadable(fnameescape(s:mzschemepath))
1024 let s:mzschemepath= fnameescape(s:mzschemepath)
1025 break
1026 endif
1027 endfor
1028endif
1029if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
1030 unlet! b:current_syntax
1031 let s:iskKeep= &isk
1032 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1033 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1034 let &isk= s:iskKeep
1035 unlet s:iskKeep
1036 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1037 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1038 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1039else
1040 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1041 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1042endif
1043unlet s:mzschemepath
1044
1045" Synchronize (speed) {{{2
1046"============
1047if exists("g:vimsyn_minlines")
1048 exe "syn sync minlines=".g:vimsyn_minlines
1049endif
1050exe "syn sync maxlines=".s:vimsyn_maxlines
1051syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001052syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001053syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1054
1055" ====================
1056" Highlighting Settings {{{2
1057" ====================
1058
1059if !exists("skip_vim_syntax_inits")
1060 if !exists("g:vimsyn_noerror")
1061 hi def link vimBehaveError vimError
1062 hi def link vimCollClassErr vimError
1063 hi def link vimErrSetting vimError
1064 hi def link vimEmbedError vimError
1065 hi def link vimFTError vimError
1066 hi def link vimFunctionError vimError
1067 hi def link vimFunc vimError
1068 hi def link vimHiAttribList vimError
1069 hi def link vimHiCtermError vimError
1070 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001071 hi def link vimMapModErr vimError
dkearnsae321b52024-06-15 23:06:17 +10001072 hi def link vimShebangError vimError
h-east9b53c052024-02-13 21:09:22 +01001073 hi def link vimSubstFlagErr vimError
1074 hi def link vimSynCaseError vimError
1075 hi def link vimSynFoldMethodError vimError
1076 hi def link vimBufnrWarn vimWarn
1077 endif
1078
Doug Kearnsce064932024-04-13 18:24:01 +02001079 hi def link vim9Vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001080 hi def link vimAbb vimCommand
1081 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001082 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001083 hi def link vimAugroupError vimError
1084 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001085 hi def link vimAutoCmd vimCommand
1086 hi def link vimAutoEvent Type
1087 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001088 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001089 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001090 hi def link vimBehaveModel vimBehave
1091 hi def link vimBehave vimCommand
1092 hi def link vimBracket Delimiter
dkearnsa3bddb72024-06-14 01:48:10 +10001093 hi def link vimCatch vimCommand
h-east9b53c052024-02-13 21:09:22 +01001094 hi def link vimCmplxRepeat SpecialChar
1095 hi def link vimCommand Statement
1096 hi def link vimComment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001097 hi def link vimCommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001098 hi def link vim9Comment Comment
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001099 hi def link vim9CommentError vimError
h-east9b53c052024-02-13 21:09:22 +01001100 hi def link vimCommentString vimString
1101 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001102 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001103 hi def link vimCondHL vimCommand
1104 hi def link vimConst vimCommand
1105 hi def link vimContinue Special
1106 hi def link vimContinueComment vimComment
1107 hi def link vimCtrlChar SpecialChar
Doug Kearnsfc64ac02024-06-22 11:20:36 +02001108 hi def link vimDefComment vim9Comment
dkearns35e6f4c2024-03-22 06:41:10 +11001109 hi def link vimDefKey vimCommand
1110 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001111 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001112 hi def link vimEchohlNone vimGroup
1113 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001114 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001115 hi def link vimEndfunction vimCommand
1116 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001117 hi def link vimEnvvar PreProc
1118 hi def link vimError Error
1119 hi def link vimEscape Special
1120 hi def link vimFBVar vimVar
1121 hi def link vimFgBgAttrib vimHiAttrib
1122 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001123 hi def link vimFor vimCommand
1124 hi def link vimFTCmd vimCommand
1125 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001126 hi def link vimFuncBang vimBang
1127 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001128 hi def link vimFuncKey vimCommand
1129 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001130 hi def link vimFuncMod Special
1131 hi def link vimFuncParam vimVar
1132 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001133 hi def link vimFuncSID Special
1134 hi def link vimFuncVar Identifier
1135 hi def link vimGroupAdd vimSynOption
1136 hi def link vimGroupName vimGroup
1137 hi def link vimGroupRem vimSynOption
1138 hi def link vimGroupSpecial Special
1139 hi def link vimGroup Type
1140 hi def link vimHiAttrib PreProc
1141 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001142 hi def link vimHiClear Type
1143 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001144 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001145 hi def link vimHiCtermfont vimHiTerm
1146 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001147 hi def link vimHiCTerm vimHiTerm
1148 hi def link vimHighlight vimCommand
1149 hi def link vimHiGroup vimGroupName
1150 hi def link vimHiGuiFgBg vimHiTerm
1151 hi def link vimHiGuiFont vimHiTerm
1152 hi def link vimHiGuiRgb vimNumber
1153 hi def link vimHiGui vimHiTerm
1154 hi def link vimHiNmbr Number
1155 hi def link vimHiStartStop vimHiTerm
1156 hi def link vimHiTerm Type
1157 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001158 hi def link vimInsert vimString
1159 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001160 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001161 hi def link vimKeymapLineComment vimComment
1162 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001163 hi def link vimLet vimCommand
1164 hi def link vimLetHereDoc vimString
1165 hi def link vimLetHereDocStart Special
1166 hi def link vimLetHereDocStop Special
1167 hi def link vimLetRegister Special
1168 hi def link vimLineComment vimComment
1169 hi def link vim9LineComment vimComment
1170 hi def link vimMapBang vimBang
1171 hi def link vimMapModKey vimFuncSID
1172 hi def link vimMapMod vimBracket
1173 hi def link vimMap vimCommand
1174 hi def link vimMark Number
1175 hi def link vimMarkNumber vimNumber
1176 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001177 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001178 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001179 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001180 hi def link vimMenu vimCommand
1181 hi def link vimMenuNotation vimNotation
1182 hi def link vimMenuPriority Number
1183 hi def link vimMenuStatus Special
1184 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001185 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001186 hi def link vimMtchComment vimComment
1187 hi def link vimNorm vimCommand
1188 hi def link vimNotation Special
1189 hi def link vimNotFunc vimCommand
1190 hi def link vimNotPatSep vimString
1191 hi def link vimNumber Number
1192 hi def link vimOperError Error
1193 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001194 hi def link vimOption PreProc
1195 hi def link vimParenSep Delimiter
1196 hi def link vimPatSepErr vimError
1197 hi def link vimPatSepR vimPatSep
1198 hi def link vimPatSep SpecialChar
1199 hi def link vimPatSepZone vimString
1200 hi def link vimPatSepZ vimPatSep
1201 hi def link vimPattern Type
1202 hi def link vimPlainMark vimMark
1203 hi def link vimPlainRegister vimRegister
1204 hi def link vimRegister SpecialChar
1205 hi def link vimScriptDelim Comment
1206 hi def link vimSearchDelim Statement
1207 hi def link vimSearch vimString
1208 hi def link vimSep Delimiter
1209 hi def link vimSetMod vimOption
1210 hi def link vimSetSep Statement
1211 hi def link vimSetString vimString
Doug Kearnsce064932024-04-13 18:24:01 +02001212 hi def link vim9Vim9Script vimCommand
dkearnsae321b52024-06-15 23:06:17 +10001213 hi def link vimShebang PreProc
Doug Kearns262e25e2024-06-14 20:16:35 +02001214 hi def link vimSleep vimCommand
1215 hi def link vimSleepArg Constant
1216 hi def link vimSleepBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001217 hi def link vimSpecFile Identifier
1218 hi def link vimSpecFileMod vimSpecFile
1219 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001220 hi def link vimStringCont vimString
1221 hi def link vimString String
1222 hi def link vimStringEnd vimString
1223 hi def link vimStringInterpolationBrace vimEscape
1224 hi def link vimSubst1 vimSubst
1225 hi def link vimSubstDelim Delimiter
1226 hi def link vimSubstFlags Special
1227 hi def link vimSubstSubstr SpecialChar
1228 hi def link vimSubstTwoBS vimString
1229 hi def link vimSubst vimCommand
1230 hi def link vimSynCaseError Error
1231 hi def link vimSynCase Type
1232 hi def link vimSyncC Type
1233 hi def link vimSyncError Error
1234 hi def link vimSyncGroupName vimGroupName
1235 hi def link vimSyncGroup vimGroupName
1236 hi def link vimSyncKey Type
1237 hi def link vimSyncNone Type
1238 hi def link vimSynContains vimSynOption
1239 hi def link vimSynError Error
1240 hi def link vimSynFoldMethodError Error
1241 hi def link vimSynFoldMethod Type
1242 hi def link vimSynKeyContainedin vimSynContains
1243 hi def link vimSynKeyOpt vimSynOption
1244 hi def link vimSynCchar vimSynOption
1245 hi def link vimSynCcharValue Character
1246 hi def link vimSynMtchGrp vimSynOption
1247 hi def link vimSynMtchOpt vimSynOption
1248 hi def link vimSynNextgroup vimSynOption
1249 hi def link vimSynNotPatRange vimSynRegPat
1250 hi def link vimSynOption Special
1251 hi def link vimSynPatRange vimString
1252 hi def link vimSynRegOpt vimSynOption
1253 hi def link vimSynRegPat vimString
1254 hi def link vimSynReg Type
1255 hi def link vimSyntax vimCommand
1256 hi def link vimSynType vimSpecial
dkearnsa3bddb72024-06-14 01:48:10 +10001257 hi def link vimThrow vimCommand
h-east9b53c052024-02-13 21:09:22 +01001258 hi def link vimTodo Todo
1259 hi def link vimType Type
1260 hi def link vimUnlet vimCommand
1261 hi def link vimUnletBang vimBang
1262 hi def link vimUnmap vimMap
1263 hi def link vimUserAttrbCmpltFunc Special
1264 hi def link vimUserAttrbCmplt vimSpecial
1265 hi def link vimUserAttrbKey vimOption
1266 hi def link vimUserAttrb vimSpecial
1267 hi def link vimUserAttrbError Error
1268 hi def link vimUserCmdError Error
1269 hi def link vimUserCommand vimCommand
1270 hi def link vimUserFunc Normal
1271 hi def link vimVar Identifier
1272 hi def link vimWarn WarningMsg
1273endif
1274
1275" Current Syntax Variable: {{{2
1276let b:current_syntax = "vim"
1277
1278" ---------------------------------------------------------------------
1279" Cleanup: {{{1
1280delc VimFolda
1281delc VimFoldf
Doug Kearnsce064932024-04-13 18:24:01 +02001282delc VimFoldh
1283delc VimFoldH
h-east9b53c052024-02-13 21:09:22 +01001284delc VimFoldl
1285delc VimFoldm
1286delc VimFoldp
1287delc VimFoldP
1288delc VimFoldr
1289delc VimFoldt
1290let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001291unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001292" vim:ts=18 fdm=marker ft=vim