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