blob: 7c6a9a073deb2b0d6c67188da4108257c2232a71 [file] [log] [blame]
h-east9b53c052024-02-13 21:09:22 +01001" Vim syntax file
dkearns982e1912024-03-28 20:06:03 +11002" Language: Vim script
3" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
4" Doug Kearns <dougkearns@gmail.com>
5" URL: https://github.com/vim-jp/syntax-vim-ex
dkearnse43ace52024-04-10 05:19:41 +10006" Last Change: 2024 Apr 09
Christian Brabandtf9ca1392024-02-19 20:37:11 +01007" Former Maintainer: Charles E. Campbell
h-east9b53c052024-02-13 21:09:22 +01008
9" DO NOT CHANGE DIRECTLY.
10" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
11" (Search string "GEN_SYN_VIM:" in this file)
12
13" Automatically generated keyword lists: {{{1
14
15" Quit when a syntax file was already loaded {{{2
16if exists("b:current_syntax")
17 finish
18endif
h-east9b53c052024-02-13 21:09:22 +010019let s:keepcpo= &cpo
20set cpo&vim
21
dkearns04e53632024-04-11 06:18:37 +100022let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
23
h-east9b53c052024-02-13 21:09:22 +010024" 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" =======
dkearns5cd86c62024-03-12 07:40:58 +1100160syn case ignore
dkearns04e53632024-04-11 06:18:37 +1000161syn match vimNumber '\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
162syn match vimNumber '\<0b[01]\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
163syn match vimNumber '\<0o\=\o\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
164syn match vimNumber '\<0x\x\+' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
165syn match vimNumber '\<0z\>' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
166syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
167syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,@vimComment
dkearns5cd86c62024-03-12 07:40:58 +1100168syn case match
h-east9b53c052024-02-13 21:09:22 +0100169
170" All vimCommands are contained by vimIsCommand. {{{2
dkearns35e6f4c2024-03-22 06:41:10 +1100171syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
dkearnsc4aef9a2024-03-04 02:42:47 +1100172syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100173syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
174syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>"
175syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
176syn match vimVar "\s\zs&\%([lg]:\)\=\a\+\>"
177syn match vimVar "\s\zs&t_\S[a-zA-Z0-9]\>"
178syn match vimVar "\s\zs&t_k;"
179syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
180syn keyword vimCommand contained in
181
dkearnsb1427b42024-02-28 05:59:30 +1100182syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
183
h-east9b53c052024-02-13 21:09:22 +0100184" Insertions And Appends: insert append {{{2
185" (buftype != nofile test avoids having append, change, insert show up in the command window)
186" =======================
187if &buftype != 'nofile'
188 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$""
189 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$""
190 syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$""
191endif
192
193" Behave! {{{2
194" =======
h-east9b53c052024-02-13 21:09:22 +0100195if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
196 syn match vimBehaveError contained "[^ ]\+"
197endif
Doug Kearnsfe6d5b02024-02-14 21:17:43 +0100198syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
199syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
200syn keyword vimBehaveModel contained mswin xterm
h-east9b53c052024-02-13 21:09:22 +0100201
202" Filetypes {{{2
203" =========
204syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
205if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
206 syn match vimFTError contained "\I\i*"
207endif
208syn keyword vimFTCmd contained filet[ype]
209syn keyword vimFTOption contained detect indent off on plugin
210
211" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
212" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
dkearns04e53632024-04-11 06:18:37 +1000213syn cluster vimAugroupList contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimFuncVar,vimContinue
dkearnsc4aef9a2024-03-04 02:42:47 +1100214syn match vimAugroup "\<aug\%[roup]\>" contains=vimAugroupKey,vimAugroupBang skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup
h-east9b53c052024-02-13 21:09:22 +0100215if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'a'
dkearnsc4aef9a2024-03-04 02:42:47 +1100216 syn region vimAugroup fold start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100217else
dkearnsc4aef9a2024-03-04 02:42:47 +1100218 syn region vimAugroup start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+" matchgroup=vimAugroupKey end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>" contains=vimAutoCmd,@vimAugroupList,vimAugroupkey skipwhite nextgroup=vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100219endif
h-east9b53c052024-02-13 21:09:22 +0100220if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
dkearnsc4aef9a2024-03-04 02:42:47 +1100221 syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
h-east9b53c052024-02-13 21:09:22 +0100222endif
dkearnsc4aef9a2024-03-04 02:42:47 +1100223
224syn match vimAutoCmdGroup contained "\S\+"
225syn match vimAugroupEnd contained "\c\<END\>"
226syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAutoCmdGroup
227syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAutoCmdGroup,vimAugroupEnd
h-east9b53c052024-02-13 21:09:22 +0100228
229" Operators: {{{2
230" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100231syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
h-east9b53c052024-02-13 21:09:22 +0100232syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile
233syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile
234syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile
dkearns76d62982024-03-23 05:55:25 +1100235syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup
h-east9b53c052024-02-13 21:09:22 +0100236syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar
237if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
238 syn match vimOperError ")"
239endif
240
241" Functions : Tag is provided for those who wish to highlight tagged functions {{{2
242" =========
dkearns35e6f4c2024-03-22 06:41:10 +1100243syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
244syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
245syn cluster vimFuncBodyList contains=@vimCmdList,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimLetHereDoc,vimLineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
246syn cluster vimDefBodyList contains=@vimCmdList,vimCmplxRepeat,vim9Comment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vim9LineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
247
248syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList
249syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
250syn match vimDef "\<def\>" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
251
252syn match vimFunction "\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimFuncList skipwhite nextgroup=vimFuncParams
253syn match vimDef "\<def\s\+new\%(\i\|{.\{-1,}}\)\+" contains=@vimDefList nextgroup=vimDefParams
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300254syn match vimDef "\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+" contains=@vimDefList,vimMethodName nextgroup=vimDefParams
dkearns35e6f4c2024-03-22 06:41:10 +1100255
256syn match vimFuncComment contained +".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
257syn match vimDefComment contained "#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
258
259syn match vimFuncBang contained "!"
260syn match vimFuncSID contained "\c<sid>"
261syn match vimFuncSID contained "\<[sg]:"
262syn keyword vimFuncKey contained fu[nction]
263syn keyword vimDefKey contained def
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300264syn keyword vimMethodName contained empty len string
dkearns35e6f4c2024-03-22 06:41:10 +1100265
266syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
267syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment
268syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals
269syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals
270
271syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList
272syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
273
274syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\<endfu\%[nction]\>" contains=@vimFuncBodyList
275syn region vimDefBody contained start="^" matchgroup=vimCommand end="\<enddef\>" contains=@vimDefBodyList
276
277syn match vimEndfunction "\<endf\%[unction]\>"
278syn match vimEnddef "\<enddef\>"
h-east9b53c052024-02-13 21:09:22 +0100279
280if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
dkearns35e6f4c2024-03-22 06:41:10 +1100281 syn region vimFuncFold start="\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="\<endf\%[unction]\>" contains=vimFunction fold keepend transparent
dkearnse43ace52024-04-10 05:19:41 +1000282 syn region vimFuncFold start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+(" end="\<enddef\>" contains=vimDef fold keepend transparent
283 syn region vimFuncFold start="\<def\s\+new\i\+(" end="\<enddef\>" contains=vimDef fold keepend transparent
h-east9b53c052024-02-13 21:09:22 +0100284endif
dkearns35e6f4c2024-03-22 06:41:10 +1100285
286syn match vimFuncVar contained "a:\%(\K\k*\|\d\+\)\>"
h-east9b53c052024-02-13 21:09:22 +0100287syn match vimFuncBlank contained "\s\+"
288
dkearns35e6f4c2024-03-22 06:41:10 +1100289" Types: {{{2
290" =====
h-east9b53c052024-02-13 21:09:22 +0100291" vimTypes : new for vim9
dkearns35e6f4c2024-03-22 06:41:10 +1100292syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
293syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType
294
295syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType
296syn keyword vimType contained any blob bool channel float job number string void
297syn match vimType contained "\<func\>"
298syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vimType oneline transparent
299syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
300syn match vimUserType contained "\<\u\w*\>"
301
302syn cluster vimType contains=vimType,vimCompoundType,vimUserType
h-east9b53c052024-02-13 21:09:22 +0100303
dkearns04e53632024-04-11 06:18:37 +1000304" Keymaps: {{{2
h-east9b53c052024-02-13 21:09:22 +0100305" =======
306
dkearns04e53632024-04-11 06:18:37 +1000307syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100308syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
309syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
310syn match vimKeymapTailComment "\S.*" contained
dkearns04e53632024-04-11 06:18:37 +1000311
312" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
313if s:vim9script
314 syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
315else
316 syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
317endif
318syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
h-east9b53c052024-02-13 21:09:22 +0100319
320syn region vimKeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
321
322" Special Filenames, Modifiers, Extension Removal: {{{2
323" ===============================================
dkearns2c51e152024-02-27 07:10:18 +1100324syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
325syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
326syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
327syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
328syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
329syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100330syn match vimSpecFileMod "\(:[phtre]\)\+" contained
331
332" User-Specified Commands: {{{2
333" =======================
dkearns04e53632024-04-11 06:18:37 +1000334syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
h-east9b53c052024-02-13 21:09:22 +0100335syn keyword vimUserCommand contained com[mand]
dkearns04e53632024-04-11 06:18:37 +1000336syn match vimUserCmdName contained "\<\u\w*\>" nextgroup=vimUserCmdBlock skipwhite
337syn match vimUserCmd "\<com\%[mand]!\=\>.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList,vimComFilter,vimCmdBlock,vimUserCmdName
h-east9b53c052024-02-13 21:09:22 +0100338syn match vimUserAttrbError contained "-\a\+\ze\s"
339syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper
340syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError
341syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
342syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey
343syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey
344syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey
345syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey
346syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey
347if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
348 syn match vimUserCmdError contained "\S\+\>"
349endif
350syn case ignore
351syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister]
352" GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
353syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
354syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
355
356syn case match
357syn match vimUserAttrbCmplt contained "custom,\u\w*"
358
dkearns04e53632024-04-11 06:18:37 +1000359syn region vimUserCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
360
h-east9b53c052024-02-13 21:09:22 +0100361" Lower Priority Comments: after some vim commands... {{{2
362" =======================
dkearns04e53632024-04-11 06:18:37 +1000363syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"'
364
365if s:vim9script
366 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
367 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
368 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
369 " Vim9 comments - TODO: might be highlighted while they don't work
370 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString
371 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString
372 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString
373 " Vim9 comment inside expression
374 " syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString
375 " syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString
376 " syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString
377
378 syn cluster vimComment contains=vim9Comment
379else
380 syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString
381 syn match vimComment +\<endif\s\+".*$+lc=5 contains=@vimCommentGroup,vimCommentString
382 syn match vimComment +\<else\s\+".*$+lc=4 contains=@vimCommentGroup,vimCommentString
383 " Vim9 comments - TODO: might be highlighted while they don't work
384 syn match vim9Comment excludenl +\s#[^{].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained
385 syn match vim9Comment +\<endif\s\+#[^{].*$+lc=5 contains=@vimCommentGroup,vimCommentString contained
386 syn match vim9Comment +\<else\s\+#[^{].*$+lc=4 contains=@vimCommentGroup,vimCommentString contained
387 " Vim9 comment inside expression
388 syn match vim9Comment +\s\zs#[^{].*$+ms=s+1 contains=@vimCommentGroup,vimCommentString contained
389 syn match vim9Comment +^\s*#[^{].*$+ contains=@vimCommentGroup,vimCommentString contained
390 syn match vim9Comment +^\s*#$+ contains=@vimCommentGroup,vimCommentString contained
391
392 syn cluster vimComment contains=vimComment
393endif
h-east9b53c052024-02-13 21:09:22 +0100394
395" Environment Variables: {{{2
396" =====================
397syn match vimEnvvar "\$\I\i*"
398syn match vimEnvvar "\${\I\i*}"
399
400" In-String Specials: {{{2
401" Try to catch strings, if nothing else matches (therefore it must precede the others!)
402" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
403syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
404syn match vimPatSepErr contained "\\)"
405syn match vimPatSep contained "\\|"
406syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
407syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
408syn match vimNotPatSep contained "\\\\"
409syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
410syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup
411syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
h-east9b53c052024-02-13 21:09:22 +0100412"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
413syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont
414syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+
415syn match vimEscape contained "\\."
416" syn match vimEscape contained +\\[befnrt\"]+
417syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
418syn match vimEscape contained "\\<" contains=vimNotation
419syn match vimEscape contained "\\<\*[^>]*>\=>"
420
dkearnsb1427b42024-02-28 05:59:30 +1100421syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
422syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
423syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
424syn match vimStringInterpolationBrace contained "{{"
425syn match vimStringInterpolationBrace contained "}}"
h-east9b53c052024-02-13 21:09:22 +0100426
427" Substitutions: {{{2
428" =============
429syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
430syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
431syn cluster vimSubstList add=vimCollection
dkearns2c51e152024-02-27 07:10:18 +1100432syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
433syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
434syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
435syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>[\"#|]\@!" nextgroup=vimSubstPat
436syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)_\@=" nextgroup=vimSubstPat
437syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat
438" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
439" : # is allowed but "not recommended" (see :h pattern-delimiter)
440syn 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
441syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
442syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
443syn match vimCollClassErr contained "\[:.\{-\}:\]"
444syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
445syn match vimSubstSubstr contained "\\z\=\d"
446syn match vimSubstTwoBS contained "\\\\"
447syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
448syn match vimSubstFlags contained "[&cegiIlnpr#]\+"
h-east9b53c052024-02-13 21:09:22 +0100449
450" 'String': {{{2
451syn match vimString "[^(,]'[^']\{-}\zs'"
452
453" Marks, Registers, Addresses, Filters: {{{2
dkearns2c51e152024-02-27 07:10:18 +1100454syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
455syn match vimMark "'[<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
456syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1
457syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
458syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
459syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100460syn match vimPlainMark contained "'[a-zA-Z0-9]"
461syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
462
463syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
464syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]'
465syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]'
466syn match vimRegister '@"'
467syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]'
468syn match vimLetRegister contained '@["0-9\-a-zA-Z#=*+_/]'
469
470syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
471syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
472
473syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
474syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
475syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
476
477" Complex Repeats: (:h complex-repeat) {{{2
478" ===============
479syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
480syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
481
482" Set command and associated set-options (vimOptions) with comment {{{2
dkearns04e53632024-04-11 06:18:37 +1000483syn 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,vimSetString,vimSetMod
h-east9b53c052024-02-13 21:09:22 +0100484syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
485syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar
486syn match vimSetSep contained "[,:]"
487syn match vimSetMod contained "&vim\=\|[!&?<]\|all&"
488
489" Let And Var: {{{2
490" ===========
491syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
492syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
493syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue
494
495syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
496syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars
497syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
498
499VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$'
500syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
501
502" For: {{{2
503" ===
504syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList
dkearns76d62982024-03-23 05:55:25 +1100505
h-east9b53c052024-02-13 21:09:22 +0100506" Abbreviations: {{{2
507" =============
508" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
dkearns982e1912024-03-28 20:06:03 +1100509" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
h-east9b53c052024-02-13 21:09:22 +0100510
511" Autocmd: {{{2
512" =======
513syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace
514syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList
dkearns04e53632024-04-11 06:18:37 +1000515syn match vimAutoCmdSfxList contained "\S*" skipwhite nextgroup=vimAutoCmdMod,vimAutoCmdBlock
h-east9b53c052024-02-13 21:09:22 +0100516syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList
dkearns04e53632024-04-11 06:18:37 +1000517syn match vimAutoCmdMod "\(++\)\=\(once\|nested\)" skipwhite nextgroup=vimAutoCmdBlock
518syn region vimAutoCmdBlock contained matchgroup=vimSep start="{" end="}" contains=@vimDefBodyList
h-east9b53c052024-02-13 21:09:22 +0100519
520" Echo And Execute: -- prefer strings! {{{2
521" ================
dkearns61887b32024-03-15 23:45:48 +1100522" NOTE: No trailing comments
dkearnsb1427b42024-02-28 05:59:30 +1100523
dkearns61887b32024-03-15 23:45:48 +1100524syn region vimEcho
525 \ matchgroup=vimCommand
526 \ start="\<ec\%[ho]\>"
527 \ start="\<echoe\%[rr]\>"
528 \ start="\<echom\%[sg]\>"
529 \ start="\<echoc\%[onsole]\>"
530 \ start="\<echon\>"
531 \ start="\<echow\%[indow]\>"
532 \ skip=+\\|\|\n\s*\\\|\n\s*"\\ +
533 \ matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
534
535syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
h-east9b53c052024-02-13 21:09:22 +0100536syn case ignore
dkearns61887b32024-03-15 23:45:48 +1100537syn keyword vimEchohlNone contained none
h-east9b53c052024-02-13 21:09:22 +0100538syn case match
539
dkearns35e6f4c2024-03-22 06:41:10 +1100540syn cluster vimEcho contains=vimEcho,vimEchohl
dkearns61887b32024-03-15 23:45:48 +1100541
542syn region vimExecute matchgroup=vimCommand start="\<exe\%[cute]\>" skip=+\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimExprList transparent
dkearnsb1427b42024-02-28 05:59:30 +1100543
h-east9b53c052024-02-13 21:09:22 +0100544" Maps: {{{2
545" ====
546syn match vimMap "\<map\>\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs
547syn match vimMap "\<map!" contains=vimMapBang skipwhite nextgroup=vimMapMod,vimMapLhs
548" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns16249702024-02-23 05:45:05 +1100549" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
550syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
h-east9b53c052024-02-13 21:09:22 +0100551" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
dkearns5d67aef2024-03-10 04:01:22 +1100552syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs
553syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
554syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
h-east9b53c052024-02-13 21:09:22 +0100555syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
dkearns5d67aef2024-03-10 04:01:22 +1100556syn region vimMapRhs contained start="\S" skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation skipnl nextgroup=vimMapRhsContinue
557" assume a continuation comment introduces the RHS
558syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\|\@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation
h-east9b53c052024-02-13 21:09:22 +0100559syn case ignore
560syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique
561syn case match
562
563" Menus: {{{2
564" =====
dkearns62b26042024-03-10 03:43:28 +1100565" NOTE: tail comments disallowed
566" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
567syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
568syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
569syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
dkearnsec21baf2024-03-20 04:04:42 +1100570syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
571syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
dkearns62b26042024-03-10 03:43:28 +1100572syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
573syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
574syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
575syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
576syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
577
578syn region vimMenutranslate
579 \ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
580 \ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
581 \ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
582 \ contains=@vimContinue,vimMenutranslateName keepend transparent
583" oneline is sufficient to match the current formatting in runtime/lang/*.vim
584syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
585syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
h-east9b53c052024-02-13 21:09:22 +0100586
587" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
588" ======================
589syn case ignore
590syn 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
591
592syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
593syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
594syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
595syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
596syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
597syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
598syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
599
600syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
601syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
602syn match vimNotation '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
603syn match vimNotation '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
604syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
605syn match vimNotation "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
606
607syn match vimBracket contained "[\\<>]"
608syn case match
609
610" User Function Highlighting: {{{2
611" (following Gautam Iyer's suggestion)
612" ==========================
dkearns9530fe42024-03-19 05:19:51 +1100613syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300614syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vimMethodName
dkearns9530fe42024-03-19 05:19:51 +1100615syn keyword vimFuncEcho contained ec ech echo
h-east9b53c052024-02-13 21:09:22 +0100616
617" User Command Highlighting: {{{2
618syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
619
620" Errors And Warnings: {{{2
621" ====================
622if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
Aliaksei Budaveidfcef892024-02-18 21:02:14 +0300623 " TODO: The new-prefix exception should only apply to constructor definitions.
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +0300624 " TODO: The |builtin-object-methods| exception should only apply to method
625 " definitions.
626 syn match vimFunctionError "\s\zs\%(empty\|len\|new\|string\)\@![a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
h-east9b53c052024-02-13 21:09:22 +0100627 syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank
628 syn match vimElseIfErr "\<else\s\+if\>"
629 syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
630endif
631
632syn match vimNotFunc "\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
633
634" Norm: {{{2
635" ====
636syn match vimNorm "\<norm\%[al]!\=" skipwhite nextgroup=vimNormCmds
637syn match vimNormCmds contained ".*$"
638
639" Syntax: {{{2
640"=======
641syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
642syn 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
643syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
644
645if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
646 syn match vimSynError contained "\i\+"
647 syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
648endif
649syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
650syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
651syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
652if has("conceal")
653 " no whitespace allowed after '='
654 syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
655 syn match vimSynCcharValue contained "\S"
656endif
657
dkearns04e53632024-04-11 06:18:37 +1000658syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100659syn cluster vimFuncBodyList add=vimSyntax
660
661" Syntax: case {{{2
662syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
663if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
664 syn match vimSynCaseError contained "\i\+"
665endif
666syn keyword vimSynCase contained ignore match
667
668" Syntax: clear {{{2
669syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
670
671" Syntax: cluster {{{2
672syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
673syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
674syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
675syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100676
677" Syntax: foldlevel {{{2
678syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldMethod,vimSynFoldMethodError
679if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldmethoderror")
680 syn match vimSynFoldMethodError contained "\i\+"
681endif
682syn keyword vimSynFoldMethod contained start minimum
683
684" Syntax: iskeyword {{{2
685syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList
686syn match vimIskList contained '\S\+' contains=vimIskSep
687syn match vimIskSep contained ','
688
689" Syntax: include {{{2
690syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
h-east9b53c052024-02-13 21:09:22 +0100691
692" Syntax: keyword {{{2
693syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
694syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
695syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
696syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
h-east9b53c052024-02-13 21:09:22 +0100697
698" Syntax: match {{{2
699syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
700syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
701syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
702syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
h-east9b53c052024-02-13 21:09:22 +0100703
704" Syntax: off and on {{{2
705syn keyword vimSynType contained enable list manual off on reset
706
707" Syntax: region {{{2
708syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
709syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
710syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
711syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + end="|\|$" contains=@vimSynRegGroup
712syn match vimSynRegOpt contained "\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
713syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
714syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
715syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
716syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
717syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
718syn match vimSynPatMod contained "lc=\d\+"
719syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
720syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
721syn match vimSynNotPatRange contained "\\\\\|\\\["
722syn match vimMtchComment contained '"[^"]\+$'
h-east9b53c052024-02-13 21:09:22 +0100723
724" Syntax: sync {{{2
725" ============
726syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion
727if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
728 syn match vimSyncError contained "\i\+"
729endif
730syn keyword vimSyncC contained ccomment clear fromstart
731syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
732syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg
733syn match vimSyncLinebreak contained "\<linebreaks=" skipwhite nextgroup=vimNumber
734syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
735syn match vimSyncLines contained "\(min\|max\)\=lines=" nextgroup=vimNumber
736syn match vimSyncGroupName contained "\h\w*" skipwhite nextgroup=vimSyncKey
737syn match vimSyncKey contained "\<groupthere\|grouphere\>" skipwhite nextgroup=vimSyncGroup
738syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone
739syn keyword vimSyncNone contained NONE
740
741" Additional IsCommand: here by reasons of precedence {{{2
742" ====================
743syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
744
745" Highlighting: {{{2
746" ============
dkearns04e53632024-04-11 06:18:37 +1000747syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
h-east9b53c052024-02-13 21:09:22 +0100748if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
749 syn match vimHiCtermError contained "\D\i*"
750endif
751syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
dkearns9530fe42024-03-19 05:19:51 +1100752syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
h-east9b53c052024-02-13 21:09:22 +0100753
754syn match vimHiGroup contained "\i\+"
755syn case ignore
756syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
757syn keyword vimFgBgAttrib contained none bg background fg foreground
758syn case match
759syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
760syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
761syn case ignore
762syn 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
763syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
764
765syn case match
766syn match vimHiFontname contained "[a-zA-Z\-*]\+"
767syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
768syn match vimHiGuiRgb contained "#\x\{6}"
769
770" Highlighting: hi group key=arg ... {{{2
771syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
dkearns9530fe42024-03-19 05:19:51 +1100772syn region vimHiKeyList contained start="\i\+" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster
h-east9b53c052024-02-13 21:09:22 +0100773if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
774 syn match vimHiKeyError contained "\i\+="he=e-1
775endif
776syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
dkearns9530fe42024-03-19 05:19:51 +1100777syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
h-east9b53c052024-02-13 21:09:22 +0100778syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
779syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
780syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
781syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
782syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
783syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
784syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
785syn match vimHiTermcap contained "\S\+" contains=vimNotation
786syn match vimHiNmbr contained '\d\+'
787
788" Highlight: clear {{{2
dkearns9530fe42024-03-19 05:19:51 +1100789syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHiGroup
h-east9b53c052024-02-13 21:09:22 +0100790
791" Highlight: link {{{2
792" see tst24 (hi def vs hi) (Jul 06, 2018)
793"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
dkearns9530fe42024-03-19 05:19:51 +1100794" TODO: simplify and allow line continuations --djk
795syn region vimHiLink contained matchgroup=Type start="\%(\<hi\%[ghlight]!\=\s\+\)\@<=\%(\%(def\%[ault]\s\+\)\=link\>\|\<def\%[ault]\>\)" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster
h-east9b53c052024-02-13 21:09:22 +0100796
797" Control Characters: {{{2
798" ==================
799syn match vimCtrlChar "[- -]"
800
801" Beginners - Patterns that involve ^ {{{2
802" =========
dkearns04e53632024-04-11 06:18:37 +1000803if s:vim9script
804 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained
805 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
806else
807 syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
808 syn match vim9LineComment +^[ \t:]*#.*$+ contains=@vimCommentGroup,vimCommentString,vim9CommentTitle contained
809endif
h-east9b53c052024-02-13 21:09:22 +0100810syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
dkearns04e53632024-04-11 06:18:37 +1000811syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
h-east9b53c052024-02-13 21:09:22 +0100812syn match vimContinue "^\s*\zs\\"
813syn match vimContinueComment '^\s*\zs["#]\\ .*' contained
814syn cluster vimContinue contains=vimContinue,vimContinueComment
815syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
816syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
dkearns04e53632024-04-11 06:18:37 +1000817syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
h-east9b53c052024-02-13 21:09:22 +0100818
819" Searches And Globals: {{{2
820" ====================
821syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
822syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
dkearns2c51e152024-02-27 07:10:18 +1100823syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
824syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
h-east9b53c052024-02-13 21:09:22 +0100825
dkearns04e53632024-04-11 06:18:37 +1000826" Vim9 Script Regions: {{{2
827" ==================
828
829if s:vim9script
830 syn cluster vimLegacyTop contains=TOP,vimPreVim9script,vim9Comment,vim9LineComment
831 syn region vimPreVim9script start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
832
833 syn keyword vim9ScriptArg noclear
834 syn keyword vimCommand vim9s[cript] nextgroup=vim9ScriptArg skipwhite
835endif
836
h-east9b53c052024-02-13 21:09:22 +0100837" Embedded Scripts: {{{2
838" ================
839" perl,ruby : Benoit Cerrina
840" python,tcl : Johannes Zellner
841" mzscheme, lua : Charles Campbell
842
843" Allows users to specify the type of embedded script highlighting
844" they want: (perl/python/ruby/tcl support)
845" g:vimsyn_embed == 0 : don't embed any scripts
846" g:vimsyn_embed =~# 'l' : embed lua (but only if vim supports it)
847" g:vimsyn_embed =~# 'm' : embed mzscheme (but only if vim supports it)
848" g:vimsyn_embed =~# 'p' : embed perl (but only if vim supports it)
849" g:vimsyn_embed =~# 'P' : embed python (but only if vim supports it)
850" g:vimsyn_embed =~# 'r' : embed ruby (but only if vim supports it)
851" g:vimsyn_embed =~# 't' : embed tcl (but only if vim supports it)
852if !exists("g:vimsyn_embed")
853 let g:vimsyn_embed= "lmpPr"
854endif
855
856" [-- lua --] {{{3
857let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
858if !filereadable(s:luapath)
859 for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n")
860 if filereadable(fnameescape(s:luapath))
861 let s:luapath= fnameescape(s:luapath)
862 break
863 endif
864 endfor
865endif
866if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath)
867 unlet! b:current_syntax
868 syn cluster vimFuncBodyList add=vimLuaRegion
869 exe "syn include @vimLuaScript ".s:luapath
870 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript
871 VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript
872 syn cluster vimFuncBodyList add=vimLuaRegion
873else
874 syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+
875 syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+
876endif
877unlet s:luapath
878
879" [-- perl --] {{{3
880let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
881if !filereadable(s:perlpath)
882 for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n")
883 if filereadable(fnameescape(s:perlpath))
884 let s:perlpath= fnameescape(s:perlpath)
885 break
886 endif
887 endfor
888endif
889if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath)
890 unlet! b:current_syntax
891 syn cluster vimFuncBodyList add=vimPerlRegion
892 exe "syn include @vimPerlScript ".s:perlpath
893 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript
894 VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript
895 syn cluster vimFuncBodyList add=vimPerlRegion
896else
897 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+
898 syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+
899endif
900unlet s:perlpath
901
902" [-- ruby --] {{{3
903let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
904if !filereadable(s:rubypath)
905 for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n")
906 if filereadable(fnameescape(s:rubypath))
907 let s:rubypath= fnameescape(s:rubypath)
908 break
909 endif
910 endfor
911endif
912if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath)
913 syn cluster vimFuncBodyList add=vimRubyRegion
914 unlet! b:current_syntax
915 exe "syn include @vimRubyScript ".s:rubypath
916 VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript
917 syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript
918 syn cluster vimFuncBodyList add=vimRubyRegion
919else
920 syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+
921 syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+
922endif
923unlet s:rubypath
924
925" [-- python --] {{{3
926let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
927if !filereadable(s:pythonpath)
928 for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n")
929 if filereadable(fnameescape(s:pythonpath))
930 let s:pythonpath= fnameescape(s:pythonpath)
931 break
932 endif
933 endfor
934endif
935if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath)
936 unlet! b:current_syntax
937 syn cluster vimFuncBodyList add=vimPythonRegion
938 exe "syn include @vimPythonScript ".s:pythonpath
939 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
940 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon][3x]\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
941 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\%(trim\s*\)\=\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript
942 VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*\%(trim\s*\)\=$+ end=+\.$+ contains=@vimPythonScript
943 syn cluster vimFuncBodyList add=vimPythonRegion
944else
945 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
946 syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+
947endif
948unlet s:pythonpath
949
950" [-- tcl --] {{{3
951if has("win32") || has("win95") || has("win64") || has("win16")
952 " apparently has("tcl") has been hanging vim on some windows systems with cygwin
953 let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\<zsh\)\>\%(\.exe\)\=$')
954else
955 let s:trytcl= 1
956endif
957if s:trytcl
958 let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
959 if !filereadable(s:tclpath)
960 for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n")
961 if filereadable(fnameescape(s:tclpath))
962 let s:tclpath= fnameescape(s:tclpath)
963 break
964 endif
965 endfor
966 endif
967 if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath)
968 unlet! b:current_syntax
969 syn cluster vimFuncBodyList add=vimTclRegion
970 exe "syn include @vimTclScript ".s:tclpath
971 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript
972 VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript
973 syn cluster vimFuncBodyList add=vimTclScript
974 else
975 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
976 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
977 endif
978 unlet s:tclpath
979else
980 syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+
981 syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+
982endif
983unlet s:trytcl
984
985" [-- mzscheme --] {{{3
986let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
987if !filereadable(s:mzschemepath)
988 for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n")
989 if filereadable(fnameescape(s:mzschemepath))
990 let s:mzschemepath= fnameescape(s:mzschemepath)
991 break
992 endif
993 endfor
994endif
995if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
996 unlet! b:current_syntax
997 let s:iskKeep= &isk
998 syn cluster vimFuncBodyList add=vimMzSchemeRegion
999 exe "syn include @vimMzSchemeScript ".s:mzschemepath
1000 let &isk= s:iskKeep
1001 unlet s:iskKeep
1002 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript
1003 VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript
1004 syn cluster vimFuncBodyList add=vimMzSchemeRegion
1005else
1006 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+
1007 syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+
1008endif
1009unlet s:mzschemepath
1010
1011" Synchronize (speed) {{{2
1012"============
1013if exists("g:vimsyn_minlines")
1014 exe "syn sync minlines=".g:vimsyn_minlines
1015endif
1016exe "syn sync maxlines=".s:vimsyn_maxlines
1017syn sync linecont "^\s\+\\"
dkearns62b26042024-03-10 03:43:28 +11001018syn sync linebreaks=1
h-east9b53c052024-02-13 21:09:22 +01001019syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
1020
1021" ====================
1022" Highlighting Settings {{{2
1023" ====================
1024
1025if !exists("skip_vim_syntax_inits")
1026 if !exists("g:vimsyn_noerror")
1027 hi def link vimBehaveError vimError
1028 hi def link vimCollClassErr vimError
1029 hi def link vimErrSetting vimError
1030 hi def link vimEmbedError vimError
1031 hi def link vimFTError vimError
1032 hi def link vimFunctionError vimError
1033 hi def link vimFunc vimError
1034 hi def link vimHiAttribList vimError
1035 hi def link vimHiCtermError vimError
1036 hi def link vimHiKeyError vimError
h-east9b53c052024-02-13 21:09:22 +01001037 hi def link vimMapModErr vimError
1038 hi def link vimSubstFlagErr vimError
1039 hi def link vimSynCaseError vimError
1040 hi def link vimSynFoldMethodError vimError
1041 hi def link vimBufnrWarn vimWarn
1042 endif
1043
dkearns04e53632024-04-11 06:18:37 +10001044 hi def link vim9ScriptArg Special
h-east9b53c052024-02-13 21:09:22 +01001045 hi def link vimAbb vimCommand
1046 hi def link vimAddress vimMark
dkearnsc4aef9a2024-03-04 02:42:47 +11001047 hi def link vimAugroupBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001048 hi def link vimAugroupError vimError
1049 hi def link vimAugroupKey vimCommand
h-east9b53c052024-02-13 21:09:22 +01001050 hi def link vimAutoCmd vimCommand
1051 hi def link vimAutoEvent Type
1052 hi def link vimAutoCmdMod Special
h-east9b53c052024-02-13 21:09:22 +01001053 hi def link vimBang vimOper
dkearns2c51e152024-02-27 07:10:18 +11001054 hi def link vimBehaveBang vimBang
h-east9b53c052024-02-13 21:09:22 +01001055 hi def link vimBehaveModel vimBehave
1056 hi def link vimBehave vimCommand
1057 hi def link vimBracket Delimiter
1058 hi def link vimCmplxRepeat SpecialChar
1059 hi def link vimCommand Statement
1060 hi def link vimComment Comment
1061 hi def link vim9Comment Comment
1062 hi def link vimCommentString vimString
1063 hi def link vimCommentTitle PreProc
dkearns04e53632024-04-11 06:18:37 +10001064 hi def link vim9CommentTitle PreProc
h-east9b53c052024-02-13 21:09:22 +01001065 hi def link vimCondHL vimCommand
1066 hi def link vimConst vimCommand
1067 hi def link vimContinue Special
1068 hi def link vimContinueComment vimComment
1069 hi def link vimCtrlChar SpecialChar
dkearns35e6f4c2024-03-22 06:41:10 +11001070 hi def link vimDefComment vimComment
1071 hi def link vimDefKey vimCommand
1072 hi def link vimDefParam vimVar
dkearnsb1427b42024-02-28 05:59:30 +11001073 hi def link vimEcho vimCommand
dkearns61887b32024-03-15 23:45:48 +11001074 hi def link vimEchohlNone vimGroup
1075 hi def link vimEchohl vimCommand
h-east9b53c052024-02-13 21:09:22 +01001076 hi def link vimElseIfErr Error
dkearns35e6f4c2024-03-22 06:41:10 +11001077 hi def link vimEndfunction vimCommand
1078 hi def link vimEnddef vimCommand
h-east9b53c052024-02-13 21:09:22 +01001079 hi def link vimEnvvar PreProc
1080 hi def link vimError Error
1081 hi def link vimEscape Special
1082 hi def link vimFBVar vimVar
1083 hi def link vimFgBgAttrib vimHiAttrib
1084 hi def link vimFuncEcho vimCommand
h-east9b53c052024-02-13 21:09:22 +01001085 hi def link vimFor vimCommand
1086 hi def link vimFTCmd vimCommand
1087 hi def link vimFTOption vimSynType
dkearns35e6f4c2024-03-22 06:41:10 +11001088 hi def link vimFuncBang vimBang
1089 hi def link vimFuncComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001090 hi def link vimFuncKey vimCommand
1091 hi def link vimFuncName Function
dkearns35e6f4c2024-03-22 06:41:10 +11001092 hi def link vimFuncMod Special
1093 hi def link vimFuncParam vimVar
1094 hi def link vimFuncParamEquals vimOper
h-east9b53c052024-02-13 21:09:22 +01001095 hi def link vimFuncSID Special
1096 hi def link vimFuncVar Identifier
1097 hi def link vimGroupAdd vimSynOption
1098 hi def link vimGroupName vimGroup
1099 hi def link vimGroupRem vimSynOption
1100 hi def link vimGroupSpecial Special
1101 hi def link vimGroup Type
1102 hi def link vimHiAttrib PreProc
1103 hi def link vimHiBang vimBang
dkearns9530fe42024-03-19 05:19:51 +11001104 hi def link vimHiClear Type
1105 hi def link vimHiCtermColor Constant
h-east9b53c052024-02-13 21:09:22 +01001106 hi def link vimHiCtermFgBg vimHiTerm
dkearns9530fe42024-03-19 05:19:51 +11001107 hi def link vimHiCtermfont vimHiTerm
1108 hi def link vimHiCtermul vimHiTerm
h-east9b53c052024-02-13 21:09:22 +01001109 hi def link vimHiCTerm vimHiTerm
1110 hi def link vimHighlight vimCommand
1111 hi def link vimHiGroup vimGroupName
1112 hi def link vimHiGuiFgBg vimHiTerm
1113 hi def link vimHiGuiFont vimHiTerm
1114 hi def link vimHiGuiRgb vimNumber
1115 hi def link vimHiGui vimHiTerm
1116 hi def link vimHiNmbr Number
1117 hi def link vimHiStartStop vimHiTerm
1118 hi def link vimHiTerm Type
1119 hi def link vimHLGroup vimGroup
h-east9b53c052024-02-13 21:09:22 +01001120 hi def link vimInsert vimString
1121 hi def link vimIskSep Delimiter
dkearns04e53632024-04-11 06:18:37 +10001122 hi def link vim9KeymapLineComment vimKeymapLineComment
h-east9b53c052024-02-13 21:09:22 +01001123 hi def link vimKeymapLineComment vimComment
1124 hi def link vimKeymapTailComment vimComment
h-east9b53c052024-02-13 21:09:22 +01001125 hi def link vimLet vimCommand
1126 hi def link vimLetHereDoc vimString
1127 hi def link vimLetHereDocStart Special
1128 hi def link vimLetHereDocStop Special
1129 hi def link vimLetRegister Special
1130 hi def link vimLineComment vimComment
1131 hi def link vim9LineComment vimComment
1132 hi def link vimMapBang vimBang
1133 hi def link vimMapModKey vimFuncSID
1134 hi def link vimMapMod vimBracket
1135 hi def link vimMap vimCommand
1136 hi def link vimMark Number
1137 hi def link vimMarkNumber vimNumber
1138 hi def link vimMenuBang vimBang
dkearns62b26042024-03-10 03:43:28 +11001139 hi def link vimMenuClear Special
h-east9b53c052024-02-13 21:09:22 +01001140 hi def link vimMenuMod vimMapMod
h-east9b53c052024-02-13 21:09:22 +01001141 hi def link vimMenuName PreProc
dkearns62b26042024-03-10 03:43:28 +11001142 hi def link vimMenu vimCommand
1143 hi def link vimMenuNotation vimNotation
1144 hi def link vimMenuPriority Number
1145 hi def link vimMenuStatus Special
1146 hi def link vimMenutranslateComment vimComment
Aliaksei Budavei80aabaa2024-03-31 19:26:32 +03001147 hi def link vimMethodName vimFuncName
h-east9b53c052024-02-13 21:09:22 +01001148 hi def link vimMtchComment vimComment
1149 hi def link vimNorm vimCommand
1150 hi def link vimNotation Special
1151 hi def link vimNotFunc vimCommand
1152 hi def link vimNotPatSep vimString
1153 hi def link vimNumber Number
1154 hi def link vimOperError Error
1155 hi def link vimOper Operator
h-east9b53c052024-02-13 21:09:22 +01001156 hi def link vimOption PreProc
1157 hi def link vimParenSep Delimiter
1158 hi def link vimPatSepErr vimError
1159 hi def link vimPatSepR vimPatSep
1160 hi def link vimPatSep SpecialChar
1161 hi def link vimPatSepZone vimString
1162 hi def link vimPatSepZ vimPatSep
1163 hi def link vimPattern Type
1164 hi def link vimPlainMark vimMark
1165 hi def link vimPlainRegister vimRegister
1166 hi def link vimRegister SpecialChar
1167 hi def link vimScriptDelim Comment
1168 hi def link vimSearchDelim Statement
1169 hi def link vimSearch vimString
1170 hi def link vimSep Delimiter
1171 hi def link vimSetMod vimOption
1172 hi def link vimSetSep Statement
1173 hi def link vimSetString vimString
1174 hi def link vimSpecFile Identifier
1175 hi def link vimSpecFileMod vimSpecFile
1176 hi def link vimSpecial Type
h-east9b53c052024-02-13 21:09:22 +01001177 hi def link vimStringCont vimString
1178 hi def link vimString String
1179 hi def link vimStringEnd vimString
1180 hi def link vimStringInterpolationBrace vimEscape
1181 hi def link vimSubst1 vimSubst
1182 hi def link vimSubstDelim Delimiter
1183 hi def link vimSubstFlags Special
1184 hi def link vimSubstSubstr SpecialChar
1185 hi def link vimSubstTwoBS vimString
1186 hi def link vimSubst vimCommand
1187 hi def link vimSynCaseError Error
1188 hi def link vimSynCase Type
1189 hi def link vimSyncC Type
1190 hi def link vimSyncError Error
1191 hi def link vimSyncGroupName vimGroupName
1192 hi def link vimSyncGroup vimGroupName
1193 hi def link vimSyncKey Type
1194 hi def link vimSyncNone Type
1195 hi def link vimSynContains vimSynOption
1196 hi def link vimSynError Error
1197 hi def link vimSynFoldMethodError Error
1198 hi def link vimSynFoldMethod Type
1199 hi def link vimSynKeyContainedin vimSynContains
1200 hi def link vimSynKeyOpt vimSynOption
1201 hi def link vimSynCchar vimSynOption
1202 hi def link vimSynCcharValue Character
1203 hi def link vimSynMtchGrp vimSynOption
1204 hi def link vimSynMtchOpt vimSynOption
1205 hi def link vimSynNextgroup vimSynOption
1206 hi def link vimSynNotPatRange vimSynRegPat
1207 hi def link vimSynOption Special
1208 hi def link vimSynPatRange vimString
1209 hi def link vimSynRegOpt vimSynOption
1210 hi def link vimSynRegPat vimString
1211 hi def link vimSynReg Type
1212 hi def link vimSyntax vimCommand
1213 hi def link vimSynType vimSpecial
1214 hi def link vimTodo Todo
1215 hi def link vimType Type
1216 hi def link vimUnlet vimCommand
1217 hi def link vimUnletBang vimBang
1218 hi def link vimUnmap vimMap
1219 hi def link vimUserAttrbCmpltFunc Special
1220 hi def link vimUserAttrbCmplt vimSpecial
1221 hi def link vimUserAttrbKey vimOption
1222 hi def link vimUserAttrb vimSpecial
1223 hi def link vimUserAttrbError Error
1224 hi def link vimUserCmdError Error
1225 hi def link vimUserCommand vimCommand
1226 hi def link vimUserFunc Normal
1227 hi def link vimVar Identifier
1228 hi def link vimWarn WarningMsg
1229endif
1230
1231" Current Syntax Variable: {{{2
1232let b:current_syntax = "vim"
1233
1234" ---------------------------------------------------------------------
1235" Cleanup: {{{1
1236delc VimFolda
1237delc VimFoldf
1238delc VimFoldl
1239delc VimFoldm
1240delc VimFoldp
1241delc VimFoldP
1242delc VimFoldr
1243delc VimFoldt
1244let &cpo = s:keepcpo
dkearns04e53632024-04-11 06:18:37 +10001245unlet s:keepcpo s:vim9script
dkearns5d67aef2024-03-10 04:01:22 +11001246" vim:ts=18 fdm=marker ft=vim