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