blob: 6527fe178fef123bc62117db7e8f8e2e37949d32 [file] [log] [blame]
h-east9b53c052024-02-13 21:09:22 +01001" Vim syntax file
2" Language: Vim script
3" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
h-east5c3855b2024-02-14 21:00:01 +01004" Doug Kearns <dougkearns@gmail.com>
h-east9b53c052024-02-13 21:09:22 +01005" URL: https://github.com/vim-jp/syntax-vim-ex
Aliaksei Budaveidfcef892024-02-18 21:02:14 +03006" Last Change: Feb 18, 2024
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008" Base File URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
9" Base File Version: 9.0-25
h-east9b53c052024-02-13 21:09:22 +010010
11" DO NOT CHANGE DIRECTLY.
12" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
13" (Search string "GEN_SYN_VIM:" in this file)
14
15" Automatically generated keyword lists: {{{1
16
17" Quit when a syntax file was already loaded {{{2
18if exists("b:current_syntax")
19 finish
20endif
h-east9b53c052024-02-13 21:09:22 +010021let s:keepcpo= &cpo
22set cpo&vim
23
24" 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=''
73syn case match
74
75" Function Names {{{2
76" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
77
78"--- syntax here and above generated by mkvimvim ---
79" Special Vim Highlighting (not automatic) {{{1
80
81" Set up folding commands for this syntax highlighting file {{{2
82if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]'
83 if g:vimsyn_folding =~# 'a'
84 com! -nargs=* VimFolda <args> fold
85 else
86 com! -nargs=* VimFolda <args>
87 endif
88 if g:vimsyn_folding =~# 'f'
89 com! -nargs=* VimFoldf <args> fold
90 else
91 com! -nargs=* VimFoldf <args>
92 endif
93 if g:vimsyn_folding =~# 'h'
94 com! -nargs=* VimFoldh <args> fold
95 else
96 com! -nargs=* VimFoldh <args>
97 endif
98 if g:vimsyn_folding =~# 'l'
99 com! -nargs=* VimFoldl <args> fold
100 else
101 com! -nargs=* VimFoldl <args>
102 endif
103 if g:vimsyn_folding =~# 'm'
104 com! -nargs=* VimFoldm <args> fold
105 else
106 com! -nargs=* VimFoldm <args>
107 endif
108 if g:vimsyn_folding =~# 'p'
109 com! -nargs=* VimFoldp <args> fold
110 else
111 com! -nargs=* VimFoldp <args>
112 endif
113 if g:vimsyn_folding =~# 'P'
114 com! -nargs=* VimFoldP <args> fold
115 else
116 com! -nargs=* VimFoldP <args>
117 endif
118 if g:vimsyn_folding =~# 'r'
119 com! -nargs=* VimFoldr <args> fold
120 else
121 com! -nargs=* VimFoldr <args>
122 endif
123 if g:vimsyn_folding =~# 't'
124 com! -nargs=* VimFoldt <args> fold
125 else
126 com! -nargs=* VimFoldt <args>
127 endif
128else
129 com! -nargs=* VimFolda <args>
130 com! -nargs=* VimFoldf <args>
131 com! -nargs=* VimFoldh <args>
132 com! -nargs=* VimFoldl <args>
133 com! -nargs=* VimFoldm <args>
134 com! -nargs=* VimFoldp <args>
135 com! -nargs=* VimFoldP <args>
136 com! -nargs=* VimFoldr <args>
137 com! -nargs=* VimFoldt <args>
138endif
139
140" Deprecated variable options {{{2
141if exists("g:vim_minlines")
142 let g:vimsyn_minlines= g:vim_minlines
143endif
144if exists("g:vim_maxlines")
145 let g:vimsyn_maxlines= g:vim_maxlines
146endif
147if exists("g:vimsyntax_noerror")
148 let g:vimsyn_noerror= g:vimsyntax_noerror
149endif
150
151" Variable options {{{2
152if exists("g:vim_maxlines")
153 let s:vimsyn_maxlines= g:vim_maxlines
154else
155 let s:vimsyn_maxlines= 60
156endif
157
158" Numbers {{{2
159" =======
dkearns2c51e152024-02-27 07:10:18 +1100160syn match vimNumber '\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
161syn match vimNumber '-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
162syn match vimNumber '\<0[xX]\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
163syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
164syn match vimNumber '\<0[zZ][a-zA-Z0-9.]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
165syn match vimNumber '0[0-7]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
166syn match vimNumber '0[bB][01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
h-east9b53c052024-02-13 21:09:22 +0100167
168" All vimCommands are contained by vimIsCommand. {{{2
dkearns2c51e152024-02-27 07:10:18 +1100169syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimExtCmd,vimFilter,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNorm,vimSet,vimSubst1,vimSyntax,vimUnlet,vimUnmap,vimUserCmd
h-east9b53c052024-02-13 21:09:22 +0100170syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
171syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
172syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
173syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
174syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
175syn match vimVar "\s\zs&t_k;"
176syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
177syn keyword vimCommand contained in
178
179" Insertions And Appends: insert append {{{2
180" (buftype != nofile test avoids having append, change, insert show up in the command window)
181" =======================
182if &buftype != 'nofile'
183 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
184 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
185 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
186endif
187
188" Behave! {{{2
189" =======
h-east9b53c052024-02-13 21:09:22 +0100190if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
191 syn match vimBehaveError contained "[^ ]\+"
192endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100193syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
194syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
195syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100196
197" Filetypes {{{2
198" =========
199syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
200if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
201 syn match vimFTError contained "\I\i*"
202endif
203syn keyword vimFTCmd contained filet[ype]
204syn keyword vimFTOption contained detect indent off on plugin
205
206" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
207" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
208syn cluster vimAugroupList contains=vimAugroup,vimIsCommand,vimUserCmd,vimExecute,vimNotFunc,vimFuncName,vimFunction,vimFunctionError,vimLineComment,vimNotFunc,vimMap,vimSpecFile,vimOper,vimNumber,vimOperParen,vimComment,vim9Comment,vimString,vimSubst,vimMark,vimRegister,vimAddress,vimFilter,vimCmplxRepeat,vimComment,vim9Comment,vimLet,vimSet,vimAutoCmd,vimRegion,vimSynLine,vimNotation,vimCtrlChar,vimFuncVar,vimContinue,vimOption
209if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
210 syn region vimAugroup fold matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
211else
212 syn region vimAugroup matchgroup=vimAugroupKey start="\<aug\%[roup]\>\ze\s\+\K\k*" end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList
213endif
214syn match vimAugroup "aug\%[roup]!" contains=vimAugroupKey
215if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
216 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
217endif
218syn keyword vimAugroupKey contained aug[roup]
219
220" Operators: {{{2
221" =========
222syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,@vimContinue,vim9Comment,vimVar
223syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
224syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
225syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
226syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=vimoperStar,@vimOperGroup
227syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
228if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
229 syn match vimOperError ")"
230endif
231
232" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
233" =========
234syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
235syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimEnvvar,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
236syn match vimFunction "\<\(fu\%[nction]\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300237syn match vimFunction "\<def\s\+new\i\{-}(" contains=@vimFuncList nextgroup=vimFuncBody
h-east9b53c052024-02-13 21:09:22 +0100238syn match vimFunction "\<def!\=\s\+\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
239"syn match vimFunction "\<def!\=\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
240
241if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
242 syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
243else
244 syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)" contains=@vimFuncBodyList
245endif
246syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)"
247syn match vimFuncSID contained "\c<sid>\|\<s:"
248syn keyword vimFuncKey contained fu[nction]
249syn keyword vimFuncKey contained def
250syn match vimFuncBlank contained "\s\+"
251
252syn keyword vimPattern contained start skip end
253
254" vimTypes : new for vim9
255syn match vimType ":\s*\zs\<\(bool\|number\|float\|string\|blob\|list<\|dict<\|job\|channel\|func\)\>"
256
257" Keymaps: (Vim Project Addition) {{{2
258" =======
259
260" TODO: autogenerated vimCommand keyword list does not handle all abbreviations
261" : handle Vim9 script comments when something like #13104 is merged
262syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,vimKeymapLineComment
263syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
264syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
265syn match vimKeymapTailComment "\S.*" contained
266syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
267
268syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
269
270" Special Filenames, Modifiers, Extension Removal: {{{2
271" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100272syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
273syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
274syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
275syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
276syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
277syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100278syn match vimSpecFileMod "\(:[phtre]\)\+" contained
279
280" User-Specified Commands: {{{2
281" =======================
282syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimCtrlChar,vimEscapeBrace,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine
283syn keyword vimUserCommand contained com[mand]
284syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter
285syn match vimUserAttrbError contained "-\a\+\ze\s"
286syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
287syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
288syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
289syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
290syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
291syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
292syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
293syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
294if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
295 syn match vimUserCmdError contained "\S\+\>"
296endif
297syn case ignore
298syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
299" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
300syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
301syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
302
303syn case match
304syn match vimUserAttrbCmplt contained "custom,\u\w*"
305
306" Lower Priority Comments: after some vim commands... {{{2
307" =======================
308syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
309syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
310syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
311syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
312" Vim9 comments - TODO: might be highlighted while they don't work
313syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
314syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
315syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
316" Vim9 comment inside expression
317syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
318syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
319syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
320
321" Environment Variables: {{{2
322" =====================
323syn match vimEnvvar "\$\I\i*"
324syn match vimEnvvar "\${\I\i*}"
325
326" In-String Specials: {{{2
327" Try to catch strings, if nothing else matches (therefore it must precede the others!)
328" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
329syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
330syn match vimPatSepErr contained "\\)"
331syn match vimPatSep contained "\\|"
332syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
333syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
334syn match vimNotPatSep contained "\\\\"
335syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
336syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
337syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100338"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
339syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
340syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
341syn match vimEscape contained "\\."
342" syn match vimEscape contained +\\[befnrt\"]+
343syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
344syn match vimEscape contained "\\<" contains=vimNotation
345syn match vimEscape contained "\\<\*[^>]*>\=>"
346
347syn region vimString start=+$'+ end=+'+ skip=+''+ oneline contains=vimStringInterpolationBrace,vimStringInterpolationExpr
348syn region vimString start=+$"+ end=+"+ oneline contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
349syn region vimStringInterpolationExpr matchgroup=vimSep start=+{+ end=+}+ oneline contains=vimFunc,vimFuncVar,vimOper,vimOperParen,vimNotation,vimNumber,vimString,vimVar
350syn match vimStringInterpolationBrace "{{"
351syn match vimStringInterpolationBrace "}}"
352
353" Substitutions: {{{2
354" =============
355syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
356syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
357syn cluster vimSubstList add=vimCollection
dkearns2c51e152024-02-27 07:10:18 +1100358syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
359syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
360syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
361syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
362syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
363syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
364" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
365" : # is allowed but "not recommended" (see :h pattern-delimiter)
366syn 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
367syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
368syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
369syn match vimCollClassErr contained "\[:.\{-\}:\]"
370syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
371syn match vimSubstSubstr contained "\\z\=\d"
372syn match vimSubstTwoBS contained "\\\\"
373syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
374syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100375
376" 'String': {{{2
377syn match vimString "[^(,]'[^']\{-}\zs'"
378
379" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100380syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
381syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
382syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
383syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
384syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
385syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100386syn match vimPlainMark contained "'[a-zA-Z0-9]"
387syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
388
389syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
390syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
391syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
392syn match vimRegister '@"'
393syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
394syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
395
396syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
397syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
398
399syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
400syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
401syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
402
403" Complex Repeats: (:h complex-repeat) {{{2
404" ===============
405syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
406syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
407
408" Set command and associated set-options (vimOptions) with comment {{{2
409syn 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,vim9Comment,vimSetString,vimSetMod
410syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
411syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
412syn match vimSetSep contained "[,:]"
413syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
414
415" Let And Var: {{{2
416" ===========
417syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
418syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
419syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
420
421syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
422syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
423syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
424
425VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$'
426syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
427
428" For: {{{2
429" ===
430syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
431" Abbreviations: {{{2
432" =============
433" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
434
435" Autocmd: {{{2
436" =======
437syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
438syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
439syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod
440syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
441syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)"
442
443" Echo And Execute: -- prefer strings! {{{2
444" ================
445syn region vimEcho oneline excludenl matchgroup=vimCommand start="\<ec\%[ho]\>" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar
446syn region vimExecute oneline excludenl matchgroup=vimCommand start="\<exe\%[cute]\>" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar
447syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone
448syn case ignore
449syn keyword vimEchoHLNone none
450syn case match
451
452" Maps: {{{2
453" ====
454syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
455syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
456" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100457" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
458syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100459" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
460syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
dkearns16249702024-02-23 05:45:05 +1100461syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100462syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
463syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend
464syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue
465syn case ignore
466syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
467syn case match
468
469" Menus: {{{2
470" =====
471syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod
472" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimCommand', END_STR='skipwhite nextgroup=@vimMenuList'
473syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap
474syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName
475syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation
476syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList
477syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs
478syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vim9Comment,vimIsCommand
479syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList
480
481" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
482" ======================
483syn case ignore
484syn 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
485
486syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
487syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
488syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
489syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
490syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
491syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
492syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
493
494syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
495syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
496syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
497syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
498syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
499syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
500
501syn match vimBracket contained "[\\<>]"
502syn case match
503
504" User Function Highlighting: {{{2
505" (following Gautam Iyer's suggestion)
506" ==========================
507syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
508syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation
509syn keyword vimFuncEcho contained ec ech echo
510
511" User Command Highlighting: {{{2
512syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
513
514" Errors And Warnings: {{{2
515" ====================
516if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300517 " TODO: The new-prefix exception should only apply to constructor definitions.
518 syn match vimFunctionError "\s\zs\%(new\)\@![a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
h-east9b53c052024-02-13 21:09:22 +0100519 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
520 syn match vimElseIfErr "\<else\s\+if\>"
521 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
522endif
523
524syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
525
526" Norm: {{{2
527" ====
528syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
529syn match vimNormCmds contained ".*$"
530
531" Syntax: {{{2
532"=======
533syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
534syn 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
535syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
536
537if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
538 syn match vimSynError contained "\i\+"
539 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
540endif
541syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
542syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
543syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
544if has("conceal")
545 " no whitespace allowed after '='
546 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
547 syn match vimSynCcharValue contained "\S"
548endif
549
550syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
551syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
552syn cluster vimFuncBodyList add=vimSyntax
553
554" Syntax: case {{{2
555syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
556if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
557 syn match vimSynCaseError contained "\i\+"
558endif
559syn keyword vimSynCase contained ignore match
560
561" Syntax: clear {{{2
562syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
563
564" Syntax: cluster {{{2
565syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
566syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
567syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
568syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
569syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
570
571" Syntax: foldlevel {{{2
572syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
573if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
574 syn match vimSynFoldMethodError contained "\i\+"
575endif
576syn keyword vimSynFoldMethod contained start minimum
577
578" Syntax: iskeyword {{{2
579syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
580syn match vimIskList contained '\S\+' contains=vimIskSep
581syn match vimIskSep contained ','
582
583" Syntax: include {{{2
584syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
585syn cluster vimFuncBodyList add=vimSynType
586
587" Syntax: keyword {{{2
588syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
589syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
590syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
591syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
592syn cluster vimFuncBodyList add=vimSynType
593
594" Syntax: match {{{2
595syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
596syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
597syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
598syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
599syn cluster vimFuncBodyList add=vimSynMtchGroup
600
601" Syntax: off and on {{{2
602syn keyword vimSynType contained enable list manual off on reset
603
604" Syntax: region {{{2
605syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
606syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
607syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
608syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
609syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
610syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
611syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
612syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
613syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
614syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
615syn match vimSynPatMod contained "lc=\d\+"
616syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
617syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
618syn match vimSynNotPatRange contained "\\\\\|\\\["
619syn match vimMtchComment contained '"[^"]\+$'
620syn cluster vimFuncBodyList add=vimSynType
621
622" Syntax: sync {{{2
623" ============
624syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
625if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
626 syn match vimSyncError contained "\i\+"
627endif
628syn keyword vimSyncC contained ccomment clear fromstart
629syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
630syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
631syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
632syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
633syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
634syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
635syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
636syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
637syn keyword vimSyncNone contained NONE
638
639" Additional IsCommand: here by reasons of precedence {{{2
640" ====================
641syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
642
643" Highlighting: {{{2
644" ============
645syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment,vim9Comment
646if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
647 syn match vimHiCtermError contained "\D\i*"
648endif
649syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
650syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster
651
652syn match vimHiGroup contained "\i\+"
653syn case ignore
654syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
655syn keyword vimFgBgAttrib contained none bg background fg foreground
656syn case match
657syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
658syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
659syn case ignore
660syn 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
661syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
662
663syn case match
664syn match vimHiFontname contained "[a-zA-Z\-*]\+"
665syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
666syn match vimHiGuiRgb contained "#\x\{6}"
667
668" Highlighting: hi group key=arg ... {{{2
669syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
670syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster
671if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
672 syn match vimHiKeyError contained "\i\+="he=e-1
673endif
674syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
675syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
676syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
677syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
678syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
679syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
680syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
681syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
682syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
683syn match vimHiTermcap contained "\S\+" contains=vimNotation
684syn match vimHiNmbr contained '\d\+'
685
686" Highlight: clear {{{2
687syn keyword vimHiClear contained clear nextgroup=vimHiGroup
688
689" Highlight: link {{{2
690" see tst24 (hi def vs hi) (Jul 06, 2018)
691"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
692syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=@vimHiCluster
693syn cluster vimFuncBodyList add=vimHiLink
694
695" Control Characters: {{{2
696" ==================
697syn match vimCtrlChar "[- -]"
698
699" Beginners - Patterns that involve ^ {{{2
700" =========
701syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle,vimComment
702syn match vimLineComment +^[ \t:]*"\("[^"]*"\|[^"]\)*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
703syn match vim9LineComment +^[ \t:]\+#.*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
704syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
705" Note: Look-behind to work around nextgroup skipnl consuming leading whitespace and preventing a match
706syn match vimContinue "^\s*\zs\\"
707syn match vimContinueComment '^\s*\zs["#]\\ .*' contained
708syn cluster vimContinue contains=vimContinue,vimContinueComment
709syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
710syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
711
712" Searches And Globals: {{{2
713" ====================
714syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
715syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100716syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
717syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100718
719" Embedded Scripts: {{{2
720" ================
721" perl,ruby : Benoit Cerrina
722" python,tcl : Johannes Zellner
723" mzscheme, lua : Charles Campbell
724
725" Allows users to specify the type of embedded script highlighting
726" they want: (perl/python/ruby/tcl support)
727" g:vimsyn_embed == 0 : don't embed any scripts
728" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
729" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
730" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
731" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
732" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
733" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
734if !exists("g:vimsyn_embed")
735 let g:vimsyn_embed= "lmpPr"
736endif
737
738" [-- lua --] {{{3
739let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
740if !filereadable(s:luapath)
741 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
742 if filereadable(fnameescape(s:luapath))
743 let s:luapath= fnameescape(s:luapath)
744 break
745 endif
746 endfor
747endif
748if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
749 unlet! b:current_syntax
750 syn cluster vimFuncBodyList add=vimLuaRegion
751 exe "syn include @vimLuaScript ".s:luapath
752 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
753 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
754 syn cluster vimFuncBodyList add=vimLuaRegion
755else
756 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
757 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
758endif
759unlet s:luapath
760
761" [-- perl --] {{{3
762let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
763if !filereadable(s:perlpath)
764 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
765 if filereadable(fnameescape(s:perlpath))
766 let s:perlpath= fnameescape(s:perlpath)
767 break
768 endif
769 endfor
770endif
771if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
772 unlet! b:current_syntax
773 syn cluster vimFuncBodyList add=vimPerlRegion
774 exe "syn include @vimPerlScript ".s:perlpath
775 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
776 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
777 syn cluster vimFuncBodyList add=vimPerlRegion
778else
779 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
780 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
781endif
782unlet s:perlpath
783
784" [-- ruby --] {{{3
785let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
786if !filereadable(s:rubypath)
787 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
788 if filereadable(fnameescape(s:rubypath))
789 let s:rubypath= fnameescape(s:rubypath)
790 break
791 endif
792 endfor
793endif
794if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
795 syn cluster vimFuncBodyList add=vimRubyRegion
796 unlet! b:current_syntax
797 exe "syn include @vimRubyScript ".s:rubypath
798 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
799 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
800 syn cluster vimFuncBodyList add=vimRubyRegion
801else
802 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
803 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
804endif
805unlet s:rubypath
806
807" [-- python --] {{{3
808let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
809if !filereadable(s:pythonpath)
810 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
811 if filereadable(fnameescape(s:pythonpath))
812 let s:pythonpath= fnameescape(s:pythonpath)
813 break
814 endif
815 endfor
816endif
817if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
818 unlet! b:current_syntax
819 syn cluster vimFuncBodyList add=vimPythonRegion
820 exe "syn include @vimPythonScript ".s:pythonpath
821 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
822 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
823 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
824 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
825 syn cluster vimFuncBodyList add=vimPythonRegion
826else
827 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
828 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
829endif
830unlet s:pythonpath
831
832" [-- tcl --] {{{3
833if has("win32") || has("win95") || has("win64") || has("win16")
834 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
835 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
836else
837 let s:trytcl= 1
838endif
839if s:trytcl
840 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
841 if !filereadable(s:tclpath)
842 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
843 if filereadable(fnameescape(s:tclpath))
844 let s:tclpath= fnameescape(s:tclpath)
845 break
846 endif
847 endfor
848 endif
849 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
850 unlet! b:current_syntax
851 syn cluster vimFuncBodyList add=vimTclRegion
852 exe "syn include @vimTclScript ".s:tclpath
853 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
854 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
855 syn cluster vimFuncBodyList add=vimTclScript
856 else
857 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
858 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
859 endif
860 unlet s:tclpath
861else
862 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
863 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
864endif
865unlet s:trytcl
866
867" [-- mzscheme --] {{{3
868let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
869if !filereadable(s:mzschemepath)
870 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
871 if filereadable(fnameescape(s:mzschemepath))
872 let s:mzschemepath= fnameescape(s:mzschemepath)
873 break
874 endif
875 endfor
876endif
877if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
878 unlet! b:current_syntax
879 let s:iskKeep= &isk
880 syn cluster vimFuncBodyList add=vimMzSchemeRegion
881 exe "syn include @vimMzSchemeScript ".s:mzschemepath
882 let &isk= s:iskKeep
883 unlet s:iskKeep
884 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
885 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
886 syn cluster vimFuncBodyList add=vimMzSchemeRegion
887else
888 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
889 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
890endif
891unlet s:mzschemepath
892
893" Synchronize (speed) {{{2
894"============
895if exists("g:vimsyn_minlines")
896 exe "syn sync minlines=".g:vimsyn_minlines
897endif
898exe "syn sync maxlines=".s:vimsyn_maxlines
899syn sync linecont "^\s\+\\"
900syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
901
902" ====================
903" Highlighting Settings {{{2
904" ====================
905
906if !exists("skip_vim_syntax_inits")
907 if !exists("g:vimsyn_noerror")
908 hi def link vimBehaveError vimError
909 hi def link vimCollClassErr vimError
910 hi def link vimErrSetting vimError
911 hi def link vimEmbedError vimError
912 hi def link vimFTError vimError
913 hi def link vimFunctionError vimError
914 hi def link vimFunc vimError
915 hi def link vimHiAttribList vimError
916 hi def link vimHiCtermError vimError
917 hi def link vimHiKeyError vimError
918 hi def link vimKeyCodeError vimError
919 hi def link vimMapModErr vimError
920 hi def link vimSubstFlagErr vimError
921 hi def link vimSynCaseError vimError
922 hi def link vimSynFoldMethodError vimError
923 hi def link vimBufnrWarn vimWarn
924 endif
925
926 hi def link vimAbb vimCommand
927 hi def link vimAddress vimMark
928 hi def link vimAugroupError vimError
929 hi def link vimAugroupKey vimCommand
930 hi def link vimAuHighlight vimHighlight
931 hi def link vimAutoCmdOpt vimOption
932 hi def link vimAutoCmd vimCommand
933 hi def link vimAutoEvent Type
934 hi def link vimAutoCmdMod Special
935 hi def link vimAutoSet vimCommand
936 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +1100937 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +0100938 hi def link vimBehaveModel vimBehave
939 hi def link vimBehave vimCommand
940 hi def link vimBracket Delimiter
941 hi def link vimCmplxRepeat SpecialChar
942 hi def link vimCommand Statement
943 hi def link vimComment Comment
944 hi def link vim9Comment Comment
945 hi def link vimCommentString vimString
946 hi def link vimCommentTitle PreProc
947 hi def link vimCondHL vimCommand
948 hi def link vimConst vimCommand
949 hi def link vimContinue Special
950 hi def link vimContinueComment vimComment
951 hi def link vimCtrlChar SpecialChar
952 hi def link vimEchoHLNone vimGroup
953 hi def link vimEchoHL vimCommand
954 hi def link vimElseIfErr Error
955 hi def link vimElseif vimCondHL
956 hi def link vimEnvvar PreProc
957 hi def link vimError Error
958 hi def link vimEscape Special
959 hi def link vimFBVar vimVar
960 hi def link vimFgBgAttrib vimHiAttrib
961 hi def link vimFuncEcho vimCommand
962 hi def link vimHiCtermul vimHiTerm
963 hi def link vimHiCtermfont vimHiTerm
964 hi def link vimFold Folded
965 hi def link vimFor vimCommand
966 hi def link vimFTCmd vimCommand
967 hi def link vimFTOption vimSynType
968 hi def link vimFuncKey vimCommand
969 hi def link vimFuncName Function
970 hi def link vimFuncSID Special
971 hi def link vimFuncVar Identifier
972 hi def link vimGroupAdd vimSynOption
973 hi def link vimGroupName vimGroup
974 hi def link vimGroupRem vimSynOption
975 hi def link vimGroupSpecial Special
976 hi def link vimGroup Type
977 hi def link vimHiAttrib PreProc
978 hi def link vimHiBang vimBang
979 hi def link vimHiClear vimHighlight
980 hi def link vimHiCtermFgBg vimHiTerm
981 hi def link vimHiCTerm vimHiTerm
982 hi def link vimHighlight vimCommand
983 hi def link vimHiGroup vimGroupName
984 hi def link vimHiGuiFgBg vimHiTerm
985 hi def link vimHiGuiFont vimHiTerm
986 hi def link vimHiGuiRgb vimNumber
987 hi def link vimHiGui vimHiTerm
988 hi def link vimHiNmbr Number
989 hi def link vimHiStartStop vimHiTerm
990 hi def link vimHiTerm Type
991 hi def link vimHLGroup vimGroup
992 hi def link vimHLMod PreProc
993 hi def link vimInsert vimString
994 hi def link vimIskSep Delimiter
995 hi def link vimKeyCode vimSpecFile
996 hi def link vimKeymapLineComment vimComment
997 hi def link vimKeymapTailComment vimComment
998 hi def link vimKeyword Statement
999 hi def link vimLet vimCommand
1000 hi def link vimLetHereDoc vimString
1001 hi def link vimLetHereDocStart Special
1002 hi def link vimLetHereDocStop Special
1003 hi def link vimLetRegister Special
1004 hi def link vimLineComment vimComment
1005 hi def link vim9LineComment vimComment
1006 hi def link vimMapBang vimBang
1007 hi def link vimMapModKey vimFuncSID
1008 hi def link vimMapMod vimBracket
1009 hi def link vimMap vimCommand
1010 hi def link vimMark Number
1011 hi def link vimMarkNumber vimNumber
1012 hi def link vimMenuBang vimBang
1013 hi def link vimMenuMod vimMapMod
1014 hi def link vimMenuNameMore vimMenuName
1015 hi def link vimMenuName PreProc
1016 hi def link vimMtchComment vimComment
1017 hi def link vimNorm vimCommand
1018 hi def link vimNotation Special
1019 hi def link vimNotFunc vimCommand
1020 hi def link vimNotPatSep vimString
1021 hi def link vimNumber Number
1022 hi def link vimOperError Error
1023 hi def link vimOper Operator
1024 hi def link vimOperStar vimOper
1025 hi def link vimOption PreProc
1026 hi def link vimParenSep Delimiter
1027 hi def link vimPatSepErr vimError
1028 hi def link vimPatSepR vimPatSep
1029 hi def link vimPatSep SpecialChar
1030 hi def link vimPatSepZone vimString
1031 hi def link vimPatSepZ vimPatSep
1032 hi def link vimPattern Type
1033 hi def link vimPlainMark vimMark
1034 hi def link vimPlainRegister vimRegister
1035 hi def link vimRegister SpecialChar
1036 hi def link vimScriptDelim Comment
1037 hi def link vimSearchDelim Statement
1038 hi def link vimSearch vimString
1039 hi def link vimSep Delimiter
1040 hi def link vimSetMod vimOption
1041 hi def link vimSetSep Statement
1042 hi def link vimSetString vimString
1043 hi def link vimSpecFile Identifier
1044 hi def link vimSpecFileMod vimSpecFile
1045 hi def link vimSpecial Type
1046 hi def link vimStatement Statement
1047 hi def link vimStringCont vimString
1048 hi def link vimString String
1049 hi def link vimStringEnd vimString
1050 hi def link vimStringInterpolationBrace vimEscape
1051 hi def link vimSubst1 vimSubst
1052 hi def link vimSubstDelim Delimiter
1053 hi def link vimSubstFlags Special
1054 hi def link vimSubstSubstr SpecialChar
1055 hi def link vimSubstTwoBS vimString
1056 hi def link vimSubst vimCommand
1057 hi def link vimSynCaseError Error
1058 hi def link vimSynCase Type
1059 hi def link vimSyncC Type
1060 hi def link vimSyncError Error
1061 hi def link vimSyncGroupName vimGroupName
1062 hi def link vimSyncGroup vimGroupName
1063 hi def link vimSyncKey Type
1064 hi def link vimSyncNone Type
1065 hi def link vimSynContains vimSynOption
1066 hi def link vimSynError Error
1067 hi def link vimSynFoldMethodError Error
1068 hi def link vimSynFoldMethod Type
1069 hi def link vimSynKeyContainedin vimSynContains
1070 hi def link vimSynKeyOpt vimSynOption
1071 hi def link vimSynCchar vimSynOption
1072 hi def link vimSynCcharValue Character
1073 hi def link vimSynMtchGrp vimSynOption
1074 hi def link vimSynMtchOpt vimSynOption
1075 hi def link vimSynNextgroup vimSynOption
1076 hi def link vimSynNotPatRange vimSynRegPat
1077 hi def link vimSynOption Special
1078 hi def link vimSynPatRange vimString
1079 hi def link vimSynRegOpt vimSynOption
1080 hi def link vimSynRegPat vimString
1081 hi def link vimSynReg Type
1082 hi def link vimSyntax vimCommand
1083 hi def link vimSynType vimSpecial
1084 hi def link vimTodo Todo
1085 hi def link vimType Type
1086 hi def link vimUnlet vimCommand
1087 hi def link vimUnletBang vimBang
1088 hi def link vimUnmap vimMap
1089 hi def link vimUserAttrbCmpltFunc Special
1090 hi def link vimUserAttrbCmplt vimSpecial
1091 hi def link vimUserAttrbKey vimOption
1092 hi def link vimUserAttrb vimSpecial
1093 hi def link vimUserAttrbError Error
1094 hi def link vimUserCmdError Error
1095 hi def link vimUserCommand vimCommand
1096 hi def link vimUserFunc Normal
1097 hi def link vimVar Identifier
1098 hi def link vimWarn WarningMsg
1099endif
1100
1101" Current Syntax Variable: {{{2
1102let b:current_syntax = "vim"
1103
1104" ---------------------------------------------------------------------
1105" Cleanup: {{{1
1106delc VimFolda
1107delc VimFoldf
1108delc VimFoldl
1109delc VimFoldm
1110delc VimFoldp
1111delc VimFoldP
1112delc VimFoldr
1113delc VimFoldt
1114let &cpo = s:keepcpo
1115unlet s:keepcpo
1116" vim:ts=18 fdm=marker