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