blob: cf4aedd9dfc19a5dc7811d4dbd734b543cd844dc [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=+'+
h-east9b53c052024-02-13 21:09:22 +0100336"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
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100932 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +0100933 hi def link vimBehaveModel vimBehave
934 hi def link vimBehave vimCommand
935 hi def link vimBracket Delimiter
936 hi def link vimCmplxRepeat SpecialChar
937 hi def link vimCommand Statement
938 hi def link vimComment Comment
939 hi def link vim9Comment Comment
940 hi def link vimCommentString vimString
941 hi def link vimCommentTitle PreProc
942 hi def link vimCondHL vimCommand
943 hi def link vimConst vimCommand
944 hi def link vimContinue Special
945 hi def link vimContinueComment vimComment
946 hi def link vimCtrlChar SpecialChar
947 hi def link vimEchoHLNone vimGroup
948 hi def link vimEchoHL vimCommand
949 hi def link vimElseIfErr Error
950 hi def link vimElseif vimCondHL
951 hi def link vimEnvvar PreProc
952 hi def link vimError Error
953 hi def link vimEscape Special
954 hi def link vimFBVar vimVar
955 hi def link vimFgBgAttrib vimHiAttrib
956 hi def link vimFuncEcho vimCommand
957 hi def link vimHiCtermul vimHiTerm
958 hi def link vimHiCtermfont vimHiTerm
959 hi def link vimFold Folded
960 hi def link vimFor vimCommand
961 hi def link vimFTCmd vimCommand
962 hi def link vimFTOption vimSynType
963 hi def link vimFuncKey vimCommand
964 hi def link vimFuncName Function
965 hi def link vimFuncSID Special
966 hi def link vimFuncVar Identifier
967 hi def link vimGroupAdd vimSynOption
968 hi def link vimGroupName vimGroup
969 hi def link vimGroupRem vimSynOption
970 hi def link vimGroupSpecial Special
971 hi def link vimGroup Type
972 hi def link vimHiAttrib PreProc
973 hi def link vimHiBang vimBang
974 hi def link vimHiClear vimHighlight
975 hi def link vimHiCtermFgBg vimHiTerm
976 hi def link vimHiCTerm vimHiTerm
977 hi def link vimHighlight vimCommand
978 hi def link vimHiGroup vimGroupName
979 hi def link vimHiGuiFgBg vimHiTerm
980 hi def link vimHiGuiFont vimHiTerm
981 hi def link vimHiGuiRgb vimNumber
982 hi def link vimHiGui vimHiTerm
983 hi def link vimHiNmbr Number
984 hi def link vimHiStartStop vimHiTerm
985 hi def link vimHiTerm Type
986 hi def link vimHLGroup vimGroup
987 hi def link vimHLMod PreProc
988 hi def link vimInsert vimString
989 hi def link vimIskSep Delimiter
990 hi def link vimKeyCode vimSpecFile
991 hi def link vimKeymapLineComment vimComment
992 hi def link vimKeymapTailComment vimComment
993 hi def link vimKeyword Statement
994 hi def link vimLet vimCommand
995 hi def link vimLetHereDoc vimString
996 hi def link vimLetHereDocStart Special
997 hi def link vimLetHereDocStop Special
998 hi def link vimLetRegister Special
999 hi def link vimLineComment vimComment
1000 hi def link vim9LineComment vimComment
1001 hi def link vimMapBang vimBang
1002 hi def link vimMapModKey vimFuncSID
1003 hi def link vimMapMod vimBracket
1004 hi def link vimMap vimCommand
1005 hi def link vimMark Number
1006 hi def link vimMarkNumber vimNumber
1007 hi def link vimMenuBang vimBang
1008 hi def link vimMenuMod vimMapMod
1009 hi def link vimMenuNameMore vimMenuName
1010 hi def link vimMenuName PreProc
1011 hi def link vimMtchComment vimComment
1012 hi def link vimNorm vimCommand
1013 hi def link vimNotation Special
1014 hi def link vimNotFunc vimCommand
1015 hi def link vimNotPatSep vimString
1016 hi def link vimNumber Number
1017 hi def link vimOperError Error
1018 hi def link vimOper Operator
1019 hi def link vimOperStar vimOper
1020 hi def link vimOption PreProc
1021 hi def link vimParenSep Delimiter
1022 hi def link vimPatSepErr vimError
1023 hi def link vimPatSepR vimPatSep
1024 hi def link vimPatSep SpecialChar
1025 hi def link vimPatSepZone vimString
1026 hi def link vimPatSepZ vimPatSep
1027 hi def link vimPattern Type
1028 hi def link vimPlainMark vimMark
1029 hi def link vimPlainRegister vimRegister
1030 hi def link vimRegister SpecialChar
1031 hi def link vimScriptDelim Comment
1032 hi def link vimSearchDelim Statement
1033 hi def link vimSearch vimString
1034 hi def link vimSep Delimiter
1035 hi def link vimSetMod vimOption
1036 hi def link vimSetSep Statement
1037 hi def link vimSetString vimString
1038 hi def link vimSpecFile Identifier
1039 hi def link vimSpecFileMod vimSpecFile
1040 hi def link vimSpecial Type
1041 hi def link vimStatement Statement
1042 hi def link vimStringCont vimString
1043 hi def link vimString String
1044 hi def link vimStringEnd vimString
1045 hi def link vimStringInterpolationBrace vimEscape
1046 hi def link vimSubst1 vimSubst
1047 hi def link vimSubstDelim Delimiter
1048 hi def link vimSubstFlags Special
1049 hi def link vimSubstSubstr SpecialChar
1050 hi def link vimSubstTwoBS vimString
1051 hi def link vimSubst vimCommand
1052 hi def link vimSynCaseError Error
1053 hi def link vimSynCase Type
1054 hi def link vimSyncC Type
1055 hi def link vimSyncError Error
1056 hi def link vimSyncGroupName vimGroupName
1057 hi def link vimSyncGroup vimGroupName
1058 hi def link vimSyncKey Type
1059 hi def link vimSyncNone Type
1060 hi def link vimSynContains vimSynOption
1061 hi def link vimSynError Error
1062 hi def link vimSynFoldMethodError Error
1063 hi def link vimSynFoldMethod Type
1064 hi def link vimSynKeyContainedin vimSynContains
1065 hi def link vimSynKeyOpt vimSynOption
1066 hi def link vimSynCchar vimSynOption
1067 hi def link vimSynCcharValue Character
1068 hi def link vimSynMtchGrp vimSynOption
1069 hi def link vimSynMtchOpt vimSynOption
1070 hi def link vimSynNextgroup vimSynOption
1071 hi def link vimSynNotPatRange vimSynRegPat
1072 hi def link vimSynOption Special
1073 hi def link vimSynPatRange vimString
1074 hi def link vimSynRegOpt vimSynOption
1075 hi def link vimSynRegPat vimString
1076 hi def link vimSynReg Type
1077 hi def link vimSyntax vimCommand
1078 hi def link vimSynType vimSpecial
1079 hi def link vimTodo Todo
1080 hi def link vimType Type
1081 hi def link vimUnlet vimCommand
1082 hi def link vimUnletBang vimBang
1083 hi def link vimUnmap vimMap
1084 hi def link vimUserAttrbCmpltFunc Special
1085 hi def link vimUserAttrbCmplt vimSpecial
1086 hi def link vimUserAttrbKey vimOption
1087 hi def link vimUserAttrb vimSpecial
1088 hi def link vimUserAttrbError Error
1089 hi def link vimUserCmdError Error
1090 hi def link vimUserCommand vimCommand
1091 hi def link vimUserFunc Normal
1092 hi def link vimVar Identifier
1093 hi def link vimWarn WarningMsg
1094endif
1095
1096" Current Syntax Variable: {{{2
1097let b:current_syntax = "vim"
1098
1099" ---------------------------------------------------------------------
1100" Cleanup: {{{1
1101delc VimFolda
1102delc VimFoldf
1103delc VimFoldl
1104delc VimFoldm
1105delc VimFoldp
1106delc VimFoldP
1107delc VimFoldr
1108delc VimFoldt
1109let &cpo = s:keepcpo
1110unlet s:keepcpo
1111" vim:ts=18 fdm=marker