2024-02-13 21:09:22 +01:00
" Vim syntax file
2024-03-28 20:06:03 +11:00
" Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com>
2025-06-30 20:22:38 +02:00
" Last Change: 2025 Jun 30
2024-02-19 20:37:11 +01:00
" Former Maintainer: Charles E. Campbell
2024-02-13 21:09:22 +01:00
" DO NOT CHANGE DIRECTLY.
" THIS FILE PARTLY GENERATED BY gen_syntax_vim.vim.
" (Search string "GEN_SYN_VIM:" in this file)
2025-03-09 16:30:28 +01:00
" Quit when a syntax file was already loaded {{{1
2024-02-13 21:09:22 +01:00
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
2025-03-09 16:30:28 +01:00
" Feature testing {{{1
2024-04-11 06:18:37 +10:00
let s:vim9script = "\n" .. getline(1, 32)->join("\n") =~# '\n\s*vim9\%[script]\>'
2025-03-09 16:30:28 +01:00
function s:has(feature)
return has(a:feature) || index(get(g:, "vimsyn_vim_features", []), a:feature) != -1
endfunction
" Automatically generated keyword lists: {{{1
2024-02-13 21:09:22 +01:00
" vimTodo: contains common special-notices for comments {{{2
" Use the vimCommentGroup cluster to add your own.
syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
2025-01-08 18:20:47 +01:00
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
2024-02-13 21:09:22 +01:00
2024-02-18 21:02:14 +03:00
" Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!"
2024-02-13 21:09:22 +01:00
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn 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
" vimOptions are caught only when contained in a vimSet {{{2
2024-07-24 20:21:22 +02:00
" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
2024-02-13 21:09:22 +01:00
" vimOptions: These are the turn-off setting variants {{{2
" GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
" vimOptions: These are the invertible variants {{{2
" GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR=''
" termcap codes (which can also be set) {{{2
2024-07-24 20:21:22 +02:00
" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
2024-02-13 21:09:22 +01:00
" term key codes
syn 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
syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4"
syn match vimOption contained "t_@7"
syn match vimOption contained "t_*7"
syn match vimOption contained "t_&8"
syn match vimOption contained "t_%i"
syn match vimOption contained "t_k;"
2025-03-09 16:30:28 +01:00
" vimOptions: These are the variable names {{{2
" GEN_SYN_VIM: vimOption normal variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
" GEN_SYN_VIM: vimOption term output code variable, START_STR='syn keyword vimOptionVarName contained', END_STR=''
syn keyword vimOptionVarName 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
syn match vimOptionVarName contained "t_%1"
syn match vimOptionVarName contained "t_#2"
syn match vimOptionVarName contained "t_#4"
syn match vimOptionVarName contained "t_@7"
syn match vimOptionVarName contained "t_*7"
syn match vimOptionVarName contained "t_&8"
syn match vimOptionVarName contained "t_%i"
syn match vimOptionVarName contained "t_k;"
2024-02-13 21:09:22 +01:00
" unsupported settings: some were supported by vi but don't do anything in vim {{{2
" GEN_SYN_VIM: Missing vimOption, START_STR='syn keyword vimErrSetting contained', END_STR=''
" AutoCmd Events {{{2
syn case ignore
2025-04-22 19:48:13 +02:00
" GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR='skipwhite nextgroup=vimAutoEventSep,@vimAutocmdPattern'
syn keyword vimAutoEvent contained User skipwhite nextgroup=vimUserAutoEvent
2025-06-18 18:02:47 +02:00
syn match vimUserAutoEvent contained "\<\h\w*\>" skipwhite nextgroup=vimUserAutoEventSep,vimAutocmdMod,vimAutocmdBlock
2024-02-13 21:09:22 +01:00
" Highlight commonly used Groupnames {{{2
syn 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
" Default highlighting groups {{{2
" GEN_SYN_VIM: vimHLGroup, START_STR='syn keyword vimHLGroup contained', END_STR=''
2024-05-27 22:40:25 +09:00
syn match vimHLGroup contained "\<Conceal\>"
2024-02-13 21:09:22 +01:00
syn case match
" Function Names {{{2
" GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
2025-03-09 16:30:28 +01:00
" Predefined variable names {{{2
" GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', END_STR=''
"--- syntax here and above generated by runtime/syntax/generator/gen_syntax_vim.vim ---
2024-02-13 21:09:22 +01:00
" Special Vim Highlighting (not automatic) {{{1
2025-03-09 16:30:28 +01:00
" Neovim keyword list additions {{{2
if s:has("nvim")
syn keyword vimOptionVarName contained channel inccommand mousescroll pumblend redrawdebug scrollback shada shadafile statuscolumn termpastefilter termsync winbar winblend winhighlight
syn keyword vimVimVarName contained lua msgpack_types relnum stderr termrequest virtnum
endif
2024-07-17 19:34:14 +02:00
" Set up commands for this syntax highlighting file {{{2
com! -nargs=* Vim9 execute <q-args> s:vim9script ? "" : "contained"
com! -nargs=* VimL execute <q-args> s:vim9script ? "contained" : ""
2024-10-06 17:00:48 +02:00
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[acefhiHlmpPrt]'
2024-02-13 21:09:22 +01:00
if g:vimsyn_folding =~# 'a'
com! -nargs=* VimFolda <args> fold
else
com! -nargs=* VimFolda <args>
endif
2024-10-06 17:00:48 +02:00
if g:vimsyn_folding =~# 'c'
com! -nargs=* VimFoldc <args> fold
else
com! -nargs=* VimFoldc <args>
endif
if g:vimsyn_folding =~# 'e'
com! -nargs=* VimFolde <args> fold
else
com! -nargs=* VimFolde <args>
endif
2024-02-13 21:09:22 +01:00
if g:vimsyn_folding =~# 'f'
com! -nargs=* VimFoldf <args> fold
else
com! -nargs=* VimFoldf <args>
endif
if g:vimsyn_folding =~# 'h'
com! -nargs=* VimFoldh <args> fold
else
com! -nargs=* VimFoldh <args>
endif
2024-04-13 18:24:01 +02:00
if g:vimsyn_folding =~# 'H'
com! -nargs=* VimFoldH <args> fold
else
com! -nargs=* VimFoldH <args>
endif
2024-10-06 17:00:48 +02:00
if g:vimsyn_folding =~# 'i'
com! -nargs=* VimFoldi <args> fold
else
com! -nargs=* VimFoldi <args>
endif
2024-02-13 21:09:22 +01:00
if g:vimsyn_folding =~# 'l'
com! -nargs=* VimFoldl <args> fold
else
com! -nargs=* VimFoldl <args>
endif
if g:vimsyn_folding =~# 'm'
com! -nargs=* VimFoldm <args> fold
else
com! -nargs=* VimFoldm <args>
endif
if g:vimsyn_folding =~# 'p'
com! -nargs=* VimFoldp <args> fold
else
com! -nargs=* VimFoldp <args>
endif
if g:vimsyn_folding =~# 'P'
com! -nargs=* VimFoldP <args> fold
else
com! -nargs=* VimFoldP <args>
endif
if g:vimsyn_folding =~# 'r'
com! -nargs=* VimFoldr <args> fold
else
com! -nargs=* VimFoldr <args>
endif
if g:vimsyn_folding =~# 't'
com! -nargs=* VimFoldt <args> fold
else
com! -nargs=* VimFoldt <args>
endif
else
com! -nargs=* VimFolda <args>
2024-10-06 17:00:48 +02:00
com! -nargs=* VimFoldc <args>
com! -nargs=* VimFolde <args>
2024-02-13 21:09:22 +01:00
com! -nargs=* VimFoldf <args>
2024-10-06 17:00:48 +02:00
com! -nargs=* VimFoldi <args>
2024-02-13 21:09:22 +01:00
com! -nargs=* VimFoldh <args>
2024-04-13 18:24:01 +02:00
com! -nargs=* VimFoldH <args>
2024-02-13 21:09:22 +01:00
com! -nargs=* VimFoldl <args>
com! -nargs=* VimFoldm <args>
com! -nargs=* VimFoldp <args>
com! -nargs=* VimFoldP <args>
com! -nargs=* VimFoldr <args>
com! -nargs=* VimFoldt <args>
endif
" Deprecated variable options {{{2
if exists("g:vim_minlines")
let g:vimsyn_minlines= g:vim_minlines
endif
if exists("g:vim_maxlines")
let g:vimsyn_maxlines= g:vim_maxlines
endif
if exists("g:vimsyntax_noerror")
let g:vimsyn_noerror= g:vimsyntax_noerror
endif
2024-07-17 19:34:14 +02:00
" Nulls {{{2
" =====
Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
" Booleans {{{2
" ========
Vim9 syn keyword vim9Boolean true false
2024-02-13 21:09:22 +01:00
" Numbers {{{2
" =======
2024-03-12 07:40:58 +11:00
syn case ignore
2025-05-04 21:01:18 +02:00
syn match vimNumber "\<\d\+\%('\d\+\)*" skipwhite nextgroup=@vimComment,vimSubscript,vimGlobal,vimSubst1
syn match vimNumber "\<\d\+\%('\d\+\)*\.\d\+\%(e[+-]\=\d\+\)\=" skipwhite nextgroup=@vimComment
syn match vimNumber "\<0b[01]\+\%('[01]\+\)*" skipwhite nextgroup=@vimComment,vimSubscript
syn match vimNumber "\<0o\=\o\+\%('\o\+\)*" skipwhite nextgroup=@vimComment,vimSubscript
syn match vimNumber "\<0x\x\+\%('\x\+\)*" skipwhite nextgroup=@vimComment,vimSubscript
syn match vimNumber '\<0z\>' skipwhite nextgroup=@vimComment
syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vimComment,vimSubscript
2024-03-12 07:40:58 +11:00
syn case match
2024-02-13 21:09:22 +01:00
" All vimCommands are contained by vimIsCommand. {{{2
2025-06-24 20:23:34 +02:00
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
2025-01-03 17:32:54 +01:00
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
2025-02-27 19:15:20 +01:00
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
2025-02-03 18:59:09 +01:00
syn match vimCount contained "\d\+"
2025-01-08 18:20:47 +01:00
syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" nextgroup=vimBang contains=vimCommand
2024-09-02 10:03:37 +02:00
syn match vimBang contained "!"
2025-04-26 20:14:15 +02:00
syn match vimWhitespace contained "\s\+"
2024-02-13 21:09:22 +01:00
2025-02-10 22:00:27 +01:00
syn region vimSubscript contained matchgroup=vimSubscriptBracket start="\[" end="]" nextgroup=vimSubscript contains=@vimExprList
syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vim9Super,vim9This
2025-03-09 16:30:28 +01:00
syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
syn match vimVar "\<a:\%(000\|1\=[0-9]\|20\)\>" nextgroup=vimSubscript contains=vimVarScope
syn match vimFBVar contained "\<[bwglsta]:\h[a-zA-Z0-9#_]*\>" nextgroup=vimSubscript contains=vimVarScope
" match the scope prefix independently of the retrofitted scope dictionary
syn match vimVarScope contained "\<[bwglstav]:"
syn match vimVimVar contained "\<[bwglstav]:\%(\h\|\d\)\@!" nextgroup=vimSubscript
syn match vimVarNameError contained "\<\h\w*\>"
syn match vimVimVar "\<v:" nextgroup=vimSubscript,vimVimVarName,vimVarNameError
syn match vimOptionVar "&\%([lg]:\)\=" nextgroup=vimSubscript,vimOptionVarName,vimVarNameError
2025-02-10 22:00:27 +01:00
syn cluster vimSpecialVar contains=vimEnvvar,vimLetRegister,vimOptionVar,vimVimVar
2025-06-10 21:02:43 +02:00
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\s\+[-+/*%]\=="
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\s\+\.\.="
Vim9 syn match vim9LhsVariable "\s\=\%([bwgt]:\)\=\h[a-zA-Z0-9#_]*\ze\s\+=<<" skipwhite nextgroup=vimLetHeredoc contains=vimVarScope
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\[" nextgroup=vimSubscript
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\." nextgroup=vimOper contains=vim9Super,vim9This
Vim9 syn match vim9LhsVariable "\s\=\h[a-zA-Z0-9#_]*\ze\s*->" contains=vim9Super,vim9This
2025-02-10 22:00:27 +01:00
2025-06-10 21:02:43 +02:00
Vim9 syn match vim9LhsVariableList "\[\_[^]]\+]\ze\s\+[-+/*%]\==" contains=vimVar,@vimSpecialVar
Vim9 syn match vim9LhsVariableList "\[\_[^]]\+]\ze\s\+=<<" skipwhite nextgroup=vimLetHeredoc contains=vimVar,@vimSpecialVar
Vim9 syn match vim9LhsVariableList "\[\_[^]]\+]\ze\s\+\.\.=" contains=vimVar,@vimSpecialVar
2025-02-10 22:00:27 +01:00
Vim9 syn match vim9LhsRegister "@["0-9\-a-zA-Z#=*+_/]\ze\s\+\%(\.\.\)\=="
syn cluster vimExprList contains=@vimSpecialVar,vimFunc,vimNumber,vimOper,vimOperParen,vimLambda,vimString,vimVar,@vim9ExprList
syn cluster vim9ExprList contains=vim9Boolean,vim9LambdaParams,vim9Null
2024-02-28 05:59:30 +11:00
2024-02-13 21:09:22 +01:00
" Insertions And Appends: insert append {{{2
" (buftype != nofile test avoids having append, change, insert show up in the command window)
" =======================
if &buftype != 'nofile'
2024-04-15 04:32:56 +10:00
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$" extend
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$" extend
syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$" extend
2024-02-13 21:09:22 +01:00
endif
" Behave! {{{2
" =======
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror")
syn match vimBehaveError contained "[^ ]\+"
endif
2024-02-14 21:17:43 +01:00
syn match vimBehave "\<be\%[have]\>" nextgroup=vimBehaveBang,vimBehaveModel,vimBehaveError skipwhite
syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite
syn keyword vimBehaveModel contained mswin xterm
2024-02-13 21:09:22 +01:00
2024-07-18 20:45:19 +02:00
" Call {{{2
" ====
syn match vimCall "\<call\=\>" skipwhite nextgroup=vimFunc
2025-02-12 20:44:17 +01:00
" Debuggreedy {{{2
2025-02-03 18:59:09 +01:00
" ===========
" TODO: special-cased until generalised range/count support is implemented
syn match vimDebuggreedy "\<0\=debugg\%[reedy]\>" contains=vimCount
2024-06-14 01:48:10 +10:00
" Exception Handling {{{2
syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList
syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern
syn region vimCatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
2024-10-06 17:00:48 +02:00
" Export {{{2
" ======
if s:vim9script
syn keyword vim9Export export skipwhite nextgroup=vim9Abstract,vim9ClassBody,vim9Const,vim9Def,vim9EnumBody,vim9Final,vim9InterfaceBody,vim9Type,vim9Var
endif
2024-02-13 21:09:22 +01:00
" Filetypes {{{2
" =========
syn match vimFiletype "\<filet\%[ype]\(\s\+\I\i*\)*" skipwhite contains=vimFTCmd,vimFTOption,vimFTError
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimFTError")
syn match vimFTError contained "\I\i*"
endif
syn keyword vimFTCmd contained filet[ype]
syn keyword vimFTOption contained detect indent off on plugin
2025-05-18 20:37:34 +02:00
" Import {{{2
" ======
syn keyword vimImportAutoload contained autoload skipwhite nextgroup=vimImportFilename
if s:vim9script
syn region vimImportFilename contained
\ start="\S"
\ skip=+\%#=1
"\ continuation operators at SOL
\\n\%(\s*#.*\n\)*\s*\%([[:punct:]]\+\&[^#"'(]\)
\\|
"\ continuation operators at EOL
\\%(\%([[:punct:]]\+\&[^#"')]\)\s*\%(#.*\)\=\)\@<=$
\\|
\\n\%(\s*#.*\n\)*\s*as\s
\\|
\\%(^\s*#.*\)\@<=$
\\|
2025-06-20 18:59:21 +02:00
\\n\s*\%(\\\|#\\ \)
2025-05-18 20:37:34 +02:00
\+
\ matchgroup=vimCommand
\ end="\s\+\zsas\ze\s\+\h"
\ matchgroup=NONE
\ end="$"
\ skipwhite nextgroup=vimImportName
\ contains=@vim9Continue,@vimExprList,vim9Comment
\ transparent
else
syn region vimImportFilename contained
\ start="\S"
2025-06-20 18:59:21 +02:00
\ skip=+\n\s*\%(\\\|"\\ \)+
2025-05-18 20:37:34 +02:00
\ matchgroup=vimCommand
\ end="\s\+\zsas\ze\s\+\h"
\ matchgroup=NONE
\ end="$"
\ skipwhite nextgroup=vimImportName
\ contains=@vimContinue,@vimExprList
\ transparent
endif
syn match vimImportName contained "\%(\<as\s\+\)\@<=\h\w*\>" skipwhite nextgroup=@vimComment
syn match vimImport "\<imp\%[ort]\>" skipwhite nextgroup=vimImportAutoload,vimImportFilename
2024-02-13 21:09:22 +01:00
" Augroup : vimAugroupError removed because long augroups caused sync'ing problems. {{{2
" ======= : Trade-off: Increasing synclines with slower editing vs augroup END error checking.
2025-02-10 22:00:27 +01:00
syn cluster vimAugroupList contains=@vimCmdList,vimFilter,vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimContinue
2025-04-22 19:48:13 +02:00
" define
VimFolda syn region vimAugroup
\ start="\<aug\%[roup]\>\ze\s\+\%([eE][nN][dD]\)\@!\S\+"
\ matchgroup=vimAugroupKey
\ end="\<aug\%[roup]\>\ze\s\+[eE][nN][dD]\>"
\ skipwhite nextgroup=vimAugroupEnd
\ contains=vimAutocmd,@vimAugroupList,vimAugroupkey
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noaugrouperror")
2025-04-22 19:48:13 +02:00
syn match vimAugroupError "\<aug\%[roup]\>\s\+[eE][nN][dD]\>"
2024-02-13 21:09:22 +01:00
endif
2024-03-04 02:42:47 +11:00
2025-04-22 19:48:13 +02:00
" TODO: Vim9 comment
syn match vimAugroupName contained "\%(\\["|[:space:]]\|[^"|[:space:]]\)\+"
2025-04-26 20:14:15 +02:00
\ skipwhite nextgroup=vimCmdSep,vimComment
syn match vimAugroupEnd contained "\c\<END\>" skipwhite nextgroup=vimCmdSep,vimComment
2025-04-22 19:48:13 +02:00
syn match vimAugroupBang contained "\a\@1<=!" skipwhite nextgroup=vimAugroupName
syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBang,vimAugroupName,vimAugroupEnd
2024-02-13 21:09:22 +01:00
2025-04-22 19:48:13 +02:00
" remove
2025-06-07 17:55:58 +02:00
syn match vimAugroup "\<aug\%[roup]!" skipwhite nextgroup=vimAugroupName contains=vimAugroupKey,vimAugroupBang
2025-04-22 19:48:13 +02:00
" list
VimL syn match vimAugroup "\<aug\%[roup]\>\ze\s*\%(["|]\|$\)" skipwhite nextgroup=vimCmdSep,vimComment contains=vimAugroupKey
Vim9 syn match vimAugroup "\<aug\%[roup]\>\ze\s*\%([#|]\|$\)" skipwhite nextgroup=vimCmdSep,vim9Comment contains=vimAugroupKey
2024-02-13 21:09:22 +01:00
" Operators: {{{2
" =========
2025-04-27 19:17:06 +02:00
syn cluster vimOperGroup contains=@vimContinue,@vimExprList,vim9Comment,vim9LineComment,vimContinueString
2025-02-10 22:00:27 +01:00
syn match vimOper "\a\@<!!" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
syn match vimOper "||\|&&\|[-+*/%.]" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimSpecFile
2025-04-26 20:14:15 +02:00
syn match vimOper "?" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
2025-01-20 21:53:01 +01:00
" distinguish ternary : from ex-colon
2025-04-26 20:14:15 +02:00
syn match vimOper "\s\@1<=:\ze\s\|\s\@1<=:$" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
syn match vimOper "??" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString
syn match vimOper "=" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
syn match vimOper "\%#=1\%(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\)[?#]\=" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
syn match vimOper "\<is\%(not\)\=\>" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
syn match vimOper "\<is\%(not\)\=[?#]" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList,vimContinueString,vimSpecFile
2025-02-10 22:00:27 +01:00
syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup nextgroup=vimSubscript
syn region vimOperParen matchgroup=vimSep start="#\={" end="}" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
syn region vimOperParen contained matchgroup=vimSep start="\[" end="]" contains=@vimOperGroup nextgroup=vimSubscript,vimVar
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror")
syn match vimOperError ")"
endif
2025-04-26 20:14:15 +02:00
syn match vimOperContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList contains=vimWhitespace
syn match vimOperContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimOperContinue,@vimExprList contains=vimWhitespace
2025-02-10 22:00:27 +01:00
syn cluster vimOperContinue contains=vimOperContinue,vimOperContinueComment
" Lambda Expressions: {{{2
" ==================
syn match vimLambdaOperator contained "->" skipwhite nextgroup=@vimExprList
2025-03-28 19:36:37 +01:00
syn region vimLambda contained
\ matchgroup=vimLambdaBrace
\ start=+{\ze[[:space:][:alnum:]_.,]*\%(\n\s*\%(\\[[:space:][:alnum:]_.,]*\|"\\ .*\)\)*->+
\ skip=+\n\s*\%(\\\|"\\ \)+
\ end="}" end="$"
\ contains=@vimContinue,@vimExprList,vimLambdaParams
2025-06-11 21:16:14 +02:00
syn match vimLambdaParams contained "\%({\n\=\)\@1<=\_.\{-}\%(->\)\@=" nextgroup=vimLambdaOperator contains=@vimContinue,vimFunctionParam
2025-03-28 19:36:37 +01:00
syn match vim9LambdaOperator contained "=>" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
syn match vim9LambdaParen contained "[()]"
syn match vim9LambdaParams contained
\ "(\%(\<func(\|[^(]\)*\%(\n\s*\\\%(\<func(\|[^(]\)*\|\n\s*#\\ .*\)*\ze\s\+=>"
\ skipwhite nextgroup=vim9LambdaOperator
\ contains=@vim9Continue,vimDefParam,vim9LambdaParen,vim9LambdaReturnType
syn region vim9LambdaReturnType contained start=")\@<=:\s" end="\ze\s*#" end="\ze\s*=>" contains=@vim9Continue,@vimType transparent
syn region vim9LambdaBlock contained matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
2025-02-10 22:00:27 +01:00
syn match vim9LambdaOperatorComment contained "#.*" skipwhite skipempty nextgroup=@vimExprList,vim9LambdaBlock,vim9LambdaOperatorComment
2024-04-15 04:32:56 +10:00
" Functions: Tag is provided for those who wish to highlight tagged functions {{{2
2024-02-13 21:09:22 +01:00
" =========
2025-06-11 21:16:14 +02:00
syn cluster vimFunctionBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimFBVar,vimFunc,vimFunction,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSpecFile,vimString,vimSubst,vimFunctionFold,vimDefFold,vimCmdSep
syn cluster vimFunctionBodyList contains=@vimFunctionBodyCommon,vimComment,vimLineComment,vimInsert,vimConst,vimLet,vimSearch
syn cluster vimDefBodyList contains=@vimFunctionBodyCommon,vim9Comment,vim9LineComment,vim9Block,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For,vim9LhsVariable,vim9LhsVariableList,vim9LhsRegister,vim9Search,@vimSpecialVar
2024-04-15 04:32:56 +10:00
2025-06-11 21:16:14 +02:00
syn region vimFunctionPattern contained
\ matchgroup=vimOper
\ start="/"
\ end="$"
\ contains=@vimSubstList
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn match vimFunctionBang contained "\a\@1<=!" skipwhite nextgroup=vimFunctionName
syn match vimDefBang contained "\a\@1<=!" skipwhite nextgroup=vimDefName
syn match vimFunctionSID contained "\c<sid>"
syn match vimFunctionScope contained "\<[bwglstav]:"
syn match vimFunctionName contained
\ "\%(<[sS][iI][dD]>\|[bwglstav]:\)\=\%([[:alnum:]_#.]\+\|{.\{-1,}}\)\+"
\ skipwhite nextgroup=vimFunctionParams,vimCmdSep,vimComment,vim9Comment
\ contains=vimFunctionError,vimFunctionScope,vimFunctionSID,Tag
syn match vimDefName contained
\ "\%(<[sS][iI][dD]>\|[bwglstav]:\)\=\%([[:alnum:]_#.]\+\|{.\{-1,}}\)\+"
\ nextgroup=vimDefParams,vimCmdSep,vimComment,vim9Comment
\ contains=vimFunctionError,vimFunctionScope,vimFunctionSID,Tag
syn match vimFunction "\<fu\%[nction]\>" skipwhite nextgroup=vimFunctionBang,vimFunctionName,vimFunctionPattern,vimCmdSep,vimComment
syn match vimDef "\<def\>" skipwhite nextgroup=vimDefBang,vimDefName,vimFunctionPattern,vimCmdSep,vimComment
syn region vimFunctionComment contained
2025-03-17 20:27:13 +01:00
\ start=+".*+
2025-06-11 21:16:14 +02:00
\ skip=+\n\s*\%(\\\|"\\ \)+
2025-03-17 20:27:13 +01:00
\ end="$"
2025-06-11 21:16:14 +02:00
\ skipwhite skipempty nextgroup=vimFunctionBody,vimEndfunction
2025-03-17 20:27:13 +01:00
syn region vimDefComment contained
\ start="#.*"
2025-06-11 21:16:14 +02:00
\ skip=+\n\s*\%(\\\|#\\ \)+
2025-03-17 20:27:13 +01:00
\ end="$"
\ skipwhite skipempty nextgroup=vimDefBody,vimEnddef
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn region vimFunctionParams contained
\ matchgroup=Delimiter
\ start="("
\ skip=+\n\s*\%(\\\|"\\ \)+
\ end=")"
\ skipwhite skipempty nextgroup=vimFunctionBody,vimFunctionComment,vimEndfunction,vimFunctionMod,vim9CommentError
\ contains=vimFunctionParam,vimOperParen,@vimContinue
syn region vimDefParams contained
\ matchgroup=Delimiter
\ start="("
\ end=")"
\ skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals,vimOperParen
syn match vimFunctionParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFunctionParamEquals
syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFunctionParamEquals
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn match vimFunctionParamEquals contained "=" skipwhite nextgroup=@vimExprList
syn match vimFunctionMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipempty nextgroup=vimFunctionBody,vimFunctionComment,vimEndfunction,vimFunctionMod,vim9CommentError
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn region vimFunctionBody contained
\ start="^."
\ matchgroup=vimCommand
\ end="\<endfu\%[nction]\>"
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
\ contains=@vimFunctionBodyList
syn region vimDefBody contained
\ start="^."
\ matchgroup=vimCommand
\ end="\<enddef\>"
\ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
\ contains=@vimDefBodyList
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn match vimEndfunction "\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
syn match vimEnddef "\<enddef\>" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
2024-02-13 21:09:22 +01:00
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
2025-06-11 21:16:14 +02:00
syn region vimFunctionFold
\ start="\<fu\%[nction]!"
"\ assume no dict literal in curly-brace name expressions
\ start="\<fu\%[nction]\>\s*\%([[:alnum:]_:<>.#]\+\|{.\{-1,}}\)\+\s*("
\ end="^\s*:\=\s*endf\%[unction]\>"
\ contains=vimFunction
\ extend fold keepend transparent
syn region vimDefFold
\ start="\<def!"
"\ assume no dict literal in curly-brace name expressions
\ start="\<def\>\s*\%([[:alnum:]_:<>.#]\+\|{.\{-1,}}\)\+("
\ end="^\s*:\=\s*enddef\>"
\ contains=vimDef
\ extend fold keepend transparent
2024-02-13 21:09:22 +01:00
endif
2024-03-22 06:41:10 +11:00
2025-06-11 21:16:14 +02:00
syn match vimDelfunctionBang contained "\a\@1<=!" skipwhite nextgroup=vimFunctionName
syn match vimDelfunction "\<delf\%[unction]\>" skipwhite nextgroup=vimDelfunctionBang,vimFunctionName
2024-03-22 06:41:10 +11:00
" Types: {{{2
" =====
2024-07-17 19:34:14 +02:00
2025-03-17 20:27:13 +01:00
syn region vimReturnType contained
\ start=":\%(\s\|\n\)\@="
\ skip=+\n\s*\\\|\n\s*#\\ \|^\s*#\\ +
\ end="$"
\ matchgroup=vim9Comment
"\ allow for legacy script tail comment error
\ end="\ze[#"]"
\ skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError
\ contains=@vim9Continue,@vimType
\ transparent
2024-07-17 19:34:14 +02:00
syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
2024-03-22 06:41:10 +11:00
2025-03-17 20:27:13 +01:00
syn match vimTypeSep contained ":\%(\s\|\n\)\@=" skipwhite nextgroup=@vimType
2024-03-22 06:41:10 +11:00
syn keyword vimType contained any blob bool channel float job number string void
2025-03-28 19:36:37 +01:00
syn match vimType contained "\<\%(func\)\>"
syn region vimCompoundType contained matchgroup=vimType start="\<func(" end=")" nextgroup=vimTypeSep contains=@vim9Continue,@vimType transparent
syn region vimCompoundType contained matchgroup=vimType start="\<tuple<" end=">" contains=@vim9Continue,@vimType transparent
syn region vimCompoundType contained matchgroup=vimType start="\<\%(list\|dict\)<" end=">" contains=@vimType oneline transparent
2025-03-17 20:27:13 +01:00
syn match vimUserType contained "\<\%(\h\w*\.\)*\u\w*\>"
2024-03-22 06:41:10 +11:00
syn cluster vimType contains=vimType,vimCompoundType,vimUserType
2024-02-13 21:09:22 +01:00
2024-10-06 17:00:48 +02:00
" Classes, Enums And Interfaces: {{{2
" =============================
if s:vim9script
2025-05-01 17:43:17 +02:00
2024-10-06 17:00:48 +02:00
" Methods {{{3
2025-02-10 22:00:27 +01:00
syn match vim9MethodDef contained "\<def\>" skipwhite nextgroup=vim9MethodDefName,vim9ConstructorDefName
2024-10-06 17:00:48 +02:00
syn match vim9MethodDefName contained "\<\h\w*\>" nextgroup=vim9MethodDefParams contains=@vim9MethodName
syn region vim9MethodDefParams contained
\ matchgroup=Delimiter start="(" end=")"
2025-03-17 20:27:13 +01:00
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vim9MethodDefReturnType,vimCommentError
2025-06-11 21:16:14 +02:00
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals
2025-02-10 22:00:27 +01:00
2025-03-23 16:14:20 +01:00
syn match vim9ConstructorDefName contained "\<_\=new\w*\>"
2025-02-10 22:00:27 +01:00
\ nextgroup=vim9ConstructorDefParams
\ contains=@vim9MethodName
syn match vim9ConstructorDefParam contained "\<\%(this\.\)\=\h\w*\>"
2025-06-11 21:16:14 +02:00
\ skipwhite nextgroup=vimParamType,vimFunctionParamEquals
2025-02-10 22:00:27 +01:00
\ contains=vim9This,vimOper
syn region vim9ConstructorDefParams contained
\ matchgroup=Delimiter start="(" end=")"
2025-03-17 20:27:13 +01:00
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError
2025-06-11 21:16:14 +02:00
\ contains=vim9ConstructorDefParam,vim9Comment,vimFunctionParamEquals
2025-02-10 22:00:27 +01:00
2024-10-06 17:00:48 +02:00
syn region vim9MethodDefReturnType contained
2025-03-17 20:27:13 +01:00
\ start=":\%(\s\|\n\)\@="
\ skip=+\n\s*\\\|\n\s*#\\ \|^\s*#\\ +
\ end="$"
\ matchgroup=vim9Comment
\ end="\ze#"
\ skipwhite skipnl nextgroup=vim9MethodDefBody,vim9MethodDefComment,vimEnddef,vimCommentError
\ contains=@vim9Continue,vimType,vimTypeSep
2024-10-06 17:00:48 +02:00
\ transparent
2025-03-17 20:27:13 +01:00
syn region vim9MethodDefComment contained
\ start="#.*"
\ skip=+\n\s*\\\|\n\s*#\\ +
\ end="$"
\ skipwhite skipempty nextgroup=vim9MethodDefBody,vimEnddef
2024-10-06 17:00:48 +02:00
syn region vim9MethodDefBody contained
\ start="^.\=" matchgroup=vimCommand end="\<enddef\>"
\ skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
\ contains=@vim9MethodDefBodyList
syn cluster vim9MethodDefBodyList contains=@vimDefBodyList,vim9This,vim9Super
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
syn match vim9MethodNameError contained "\<[a-z0-9]\i\>"
endif
2025-03-23 16:14:20 +01:00
syn match vim9MethodName contained "\<_\=new\w*\>"
2024-10-06 17:00:48 +02:00
syn keyword vim9MethodName contained empty len string
syn cluster vim9MethodName contains=vim9MethodName,vim9MethodNameError
if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
syn region vim9MethodDefFold contained start="\%(^\s*\%(:\=static\s\+\)\=\)\@16<=:\=def\s\+\h\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent
2025-03-23 16:14:20 +01:00
syn region vim9MethodDefFold contained start="^\s*:\=def\s\+_\=new\i*(" end="^\s*:\=enddef\>" contains=vim9MethodDef fold keepend extend transparent
2024-10-06 17:00:48 +02:00
endif
syn cluster vim9MethodDef contains=vim9MethodDef,vim9MethodDefFold
" Classes {{{3
syn cluster vim9ClassBodyList contains=vim9Abstract,vim9Class,vim9Comment,vim9LineComment,@vim9Continue,@vimExprList,vim9Extends,vim9Implements,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Super,vim9Var
syn match vim9Class contained "\<class\>" skipwhite nextgroup=vim9ClassName
syn match vim9ClassName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends,vim9Implements
syn match vim9SuperClass contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Implements
syn match vim9ImplementedInterface contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9InterfaceListComma,vim9Extends
syn match vim9InterfaceListComma contained "," skipwhite skipnl nextgroup=vim9ImplementedInterface
syn keyword vim9Abstract abstract skipwhite skipnl nextgroup=vim9ClassBody,vim9AbstractDef
syn keyword vim9Extends contained extends skipwhite skipnl nextgroup=vim9SuperClass
syn keyword vim9Implements contained implements skipwhite skipnl nextgroup=vim9ImplementedInterface
syn keyword vim9Public contained public
syn keyword vim9Static contained static
2025-02-10 22:00:27 +01:00
" FIXME: don't match as dictionary keys, remove when operators are not
" shared between Vim9 and legacy script
syn match vim9This contained "\.\@1<!\<this\>:\@!"
" super must be folowed by '.'
syn match vim9Super contained "\.\@1<!\<super\.\@="
2024-10-06 17:00:48 +02:00
VimFoldc syn region vim9ClassBody start="\<class\>" matchgroup=vimCommand end="\<endclass\>" contains=@vim9ClassBodyList transparent
" Enums {{{3
2025-05-01 17:43:17 +02:00
syn cluster vim9EnumBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Enum,@vimExprList,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Var
syn match vim9Enum contained "\<enum\>" skipwhite nextgroup=vim9EnumName
syn match vim9EnumName contained "\<\u\w*\>" skipwhite skipempty nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
syn match vim9EnumNameTrailing contained "\S.*"
syn region vim9EnumNameComment contained
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
\ skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
\ contains=@vimCommentGroup,vimCommentString
" vim9EnumName's "skipempty" should only apply to comments and enum values and not implements clauses
syn match vim9EnumNameEmpty contained "^" skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
" allow line continuation between enum name and "implements"
syn match vim9EnumNameContinue contained
\ "^\s*\\"
\ skipwhite skipnl nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
\ contains=vimWhitespace
syn match vim9EnumNameContinueComment contained
\ "^\s*#\\ .*"
\ skipwhite skipnl nextgroup=vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue
\ contains=vimWhitespace
syn cluster vim9EnumNameContinue contains=vim9EnumNameContinue,vim9EnumNameContinueComment
" enforce enum value list location
syn match vim9EnumValue contained "\<\a\w*\>" nextgroup=vim9EnumValueArgList,vim9EnumValueListComma,vim9Comment
syn match vim9EnumValueListComma contained "," skipwhite skipempty nextgroup=vim9EnumValue,vim9EnumValueListCommaComment
syn region vim9EnumValueListCommaComment contained
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
\ skipwhite skipempty nextgroup=vim9EnumValueListCommaComment,vim9EnumValue
\ contains=@vimCommentGroup,vimCommentString
syn region vim9EnumValueArgList contained
\ matchgroup=vimParenSep start="(" end=")"
\ nextgroup=vim9EnumValueListComma
\ contains=@vimExprList,vimContinueString,vim9Comment
syn keyword vim9EnumImplements contained implements skipwhite nextgroup=vim9EnumImplementedInterface
syn match vim9EnumImplementedInterface contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9EnumInterfaceListComma,vim9EnumImplementedInterfaceComment,vim9EnumValue
syn match vim9EnumInterfaceListComma contained "," skipwhite nextgroup=vim9EnumImplementedInterface
syn region vim9EnumImplementedInterfaceComment contained
\ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
\ skipwhite skipempty nextgroup=vim9EnumImplementedInterfaceComment,vim9EnumValue
\ contains=@vimCommentGroup,vimCommentString
2024-10-06 17:00:48 +02:00
VimFolde syn region vim9EnumBody start="\<enum\>" matchgroup=vimCommand end="\<endenum\>" contains=@vim9EnumBodyList transparent
" Interfaces {{{3
" TODO: limit to decl only - no init values
syn cluster vim9InterfaceBodyList contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Extends,vim9Interface,vim9AbstractDef,vim9Var
syn match vim9Interface contained "\<interface\>" skipwhite nextgroup=vim9InterfaceName
syn match vim9InterfaceName contained "\<\u\w*\>" skipwhite skipnl nextgroup=vim9Extends
syn keyword vim9AbstractDef contained def skipwhite nextgroup=vim9AbstractDefName
syn match vim9AbstractDefName contained "\<\h\w*\>" skipwhite nextgroup=vim9AbstractDefParams contains=@vim9MethodName
syn region vim9AbstractDefParams contained
\ matchgroup=Delimiter start="(" end=")"
\ skipwhite skipnl nextgroup=vimDefComment,vim9AbstractDefReturnType,vimCommentError
2025-06-11 21:16:14 +02:00
\ contains=vimDefParam,vim9Comment,vimFunctionParamEquals
2024-10-06 17:00:48 +02:00
syn region vim9AbstractDefReturnType contained
\ start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]"
\ skipwhite skipnl nextgroup=vimDefComment,vimCommentError
\ contains=vimTypeSep
\ transparent
VimFoldi syn region vim9InterfaceBody start="\<interface\>" matchgroup=vimCommand end="\<endinterface\>" contains=@vim9InterfaceBodyList transparent
2025-02-10 22:00:27 +01:00
" Type Aliases {{{3
2024-10-06 17:00:48 +02:00
syn match vim9Type "\<ty\%[pe]\>" skipwhite nextgroup=vim9TypeAlias,vim9TypeAliasError
syn match vim9TypeAlias contained "\<\u\w*\>" skipwhite nextgroup=vim9TypeEquals
syn match vim9TypeEquals contained "=" skipwhite nextgroup=@vimType
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_notypealiaserror")
2025-02-10 22:00:27 +01:00
syn match vim9TypeAliasError contained "\<\l\w*\>" skipwhite nextgroup=vim9TypeEquals
2024-10-06 17:00:48 +02:00
endif
endif
2025-02-10 22:00:27 +01:00
" Blocks: {{{2
" ======
2025-06-05 20:23:07 +02:00
Vim9 syn region vim9Block
\ matchgroup=vimSep
\ start="{\ze\s*\%($\|[#|]\)"
\ end="^\s*\zs}"
\ skipwhite nextgroup=vim9Comment,vimCmdSep
\ contains=@vimDefBodyList
2025-02-10 22:00:27 +01:00
2024-04-11 06:18:37 +10:00
" Keymaps: {{{2
2024-02-13 21:09:22 +01:00
" =======
2024-04-11 06:18:37 +10:00
syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,@vimKeymapLineComment
2024-02-13 21:09:22 +01:00
syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation
syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation
syn match vimKeymapTailComment "\S.*" contained
2024-04-11 06:18:37 +10:00
" TODO: remove when :" comment is matched in parts as "ex-colon comment" --djk
if s:vim9script
syn match vim9KeymapLineComment "#.*" contained contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
else
syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle
endif
syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
2024-02-13 21:09:22 +01:00
2024-08-23 18:37:55 +02:00
syn region vimLoadkeymap matchgroup=vimCommand start="\<loadk\%[eymap]\>" end="\%$" contains=vimKeymapStart
2024-02-13 21:09:22 +01:00
" Special Filenames, Modifiers, Extension Removal: {{{2
" ===============================================
2024-02-27 07:10:18 +11:00
syn match vimSpecFile "<c\(word\|WORD\)>" nextgroup=vimSpecFileMod,vimSubst1
syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst1
syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst1
syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1
syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1
2024-02-13 21:09:22 +01:00
syn match vimSpecFileMod "\(:[phtre]\)\+" contained
" User-Specified Commands: {{{2
" =======================
2024-04-11 06:18:37 +10:00
syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange
2025-04-08 20:50:00 +02:00
syn match vimUserCmd "\<com\%[mand]\>!\=" skipwhite nextgroup=vimUserCmdAttrs,vimUserCmdName contains=vimBang
syn match vimUserCmd +\<com\%[mand]\>!\=\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimUserCmdAttrs,vimUserCmdName contains=vimBang
syn region vimUserCmdAttrs contained
\ start="-\l"
\ start=+^\s*\%(\\\|["#]\\ \)+
\ end="\ze\s\u"
\ skipwhite nextgroup=vimUserCmdName
\ contains=@vimContinue,vimUserCmdAttr,vimUserCmdAttrError
\ transparent
syn match vimUserCmdAttrError contained "-\a\+\ze\%(\s\|=\)"
syn match vimUserCmdAttr contained "-addr=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrAddr
syn match vimUserCmdAttr contained "-bang\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-bar\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-buffer\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-complete=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrComplete,vimUserCmdError
syn match vimUserCmdAttr contained "-count\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-count=" contains=vimUserCmdAttrKey nextgroup=vimNumber
syn match vimUserCmdAttr contained "-keepscript\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-nargs=" contains=vimUserCmdAttrKey nextgroup=vimUserCmdAttrNargs
syn match vimUserCmdAttr contained "-range\>" contains=vimUserCmdAttrKey
syn match vimUserCmdAttr contained "-range=" contains=vimUserCmdAttrKey nextgroup=vimNumber,vimUserCmdAttrRange
syn match vimUserCmdAttr contained "-register\>" contains=vimUserCmdAttrKey
2024-09-02 10:03:37 +02:00
syn match vimUserCmdAttrNargs contained "[01*?+]"
syn match vimUserCmdAttrRange contained "%"
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror")
syn match vimUserCmdError contained "\S\+\>"
endif
2024-09-02 10:03:37 +02:00
syn case ignore
syn keyword vimUserCmdAttrKey contained a[ddr] ban[g] bar bu[ffer] com[plete] cou[nt] k[eepscript] n[args] ra[nge] re[gister]
2025-04-08 20:50:00 +02:00
" GEN_SYN_VIM: vimUserCmdAttrComplete, START_STR='syn keyword vimUserCmdAttrComplete contained', END_STR=''
syn keyword vimUserCmdAttrComplete contained arglist augroup behave breakpoint buffer color command compiler cscope diff_buffer dir dir_in_path environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages option packadd runtime scriptnames shellcmd shellcmdline sign syntax syntime tag tag_listfiles user var
syn keyword vimUserCmdAttrComplete contained custom customlist nextgroup=vimUserCmdAttrCompleteFunc,vimUserCmdError
2025-06-11 21:16:14 +02:00
syn match vimUserCmdAttrCompleteFunc contained ",\%([bwglstav]:\|<[sS][iI][dD]>\)\=\h\w*\%([.#]\h\w*\)*"hs=s+1 nextgroup=vimUserCmdError contains=vimVarScope,vimFunctionSID
2025-04-08 20:50:00 +02:00
2024-09-02 10:03:37 +02:00
" GEN_SYN_VIM: vimUserCmdAttrAddr, START_STR='syn keyword vimUserCmdAttrAddr contained', END_STR=''
2025-04-08 20:50:00 +02:00
syn keyword vimUserCmdAttrAddr contained arguments arg buffers buf lines line loaded_buffers load other quickfix qf tabs tab windows win
syn match vimUserCmdAttrAddr contained "?"
2024-02-13 21:09:22 +01:00
syn case match
2025-04-08 20:50:00 +02:00
syn match vimUserCmdName contained "\<\u[[:alnum:]]*\>" skipwhite nextgroup=vimUserCmdBlock,vimUserCmdReplacement
syn match vimUserCmdName contained +\<\u[[:alnum:]]*\>\ze\s*\n\s*\%(\\\|["#]\\ \)+ skipwhite skipnl nextgroup=vimUserCmdBlock,vimUserCmdReplacement
syn region vimUserCmdReplacement contained
\ start="\S"
\ start=+^\s*\%(\\\|["#]\\ \)+
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimContinue,@vimUserCmdList,vimComFilter
syn region vimUserCmdBlock contained
\ matchgroup=vimSep
\ start="{"
\ end="^\s*\zs}"
\ contains=@vimDefBodyList
2024-04-11 06:18:37 +10:00
2025-04-08 20:50:00 +02:00
syn match vimDelcommand "\<delc\%[ommand]\>" skipwhite nextgroup=vimDelcommandAttr,vimDelcommandName
syn match vimDelcommandAttr contained "-buffer\>" skipwhite nextgroup=vimDelcommandName
syn match vimDelcommandName contained "\<\u[[:alnum:]]*\>"
2024-09-02 10:03:37 +02:00
2024-02-13 21:09:22 +01:00
" Lower Priority Comments: after some vim commands... {{{2
" =======================
2024-06-12 04:18:08 +10:00
if get(g:, "vimsyn_comment_strings", 1)
2024-09-19 19:51:59 +02:00
syn region vimCommentString contained oneline start='\S\s\+"'ms=e end='"' extend
2024-06-12 04:18:08 +10:00
endif
2024-04-11 06:18:37 +10:00
if s:vim9script
syn cluster vimComment contains=vim9Comment
else
syn cluster vimComment contains=vimComment
endif
2024-02-13 21:09:22 +01:00
2025-04-26 20:14:15 +02:00
VimL syn region vimComment
\ excludenl
\ start=+"+
\ skip=+\n\s*\%(\\\|"\\ \)+
\ end="$"
\ contains=@vimCommentGroup,vimCommentString
\ extend
Vim9 syn region vim9Comment
\ excludenl
\ start="\%#=1\s\@1<=#\%({\@!\|{{\)"
\ skip="\n\s*\%(\\\|#\\ \)"
\ end="$"
\ contains=@vimCommentGroup,vimCommentString
\ extend
2024-07-17 19:34:14 +02:00
2024-06-22 11:20:36 +02:00
syn match vim9CommentError contained "#.*"
syn match vimCommentError contained +".*+
2024-02-13 21:09:22 +01:00
" Environment Variables: {{{2
" =====================
syn match vimEnvvar "\$\I\i*"
syn match vimEnvvar "\${\I\i*}"
2025-02-16 16:40:12 +01:00
" Strings {{{2
" =======
" In-String Specials:
2024-02-13 21:09:22 +01:00
" Try to catch strings, if nothing else matches (therefore it must precede the others!)
" vimEscapeBrace handles ["] []"] (ie. "s don't terminate string inside [])
2025-04-26 20:14:15 +02:00
" syn region vimEscapeBrace oneline contained transparent start="[^\\]\(\\\\\)*\[\zs\^\=\]\=" skip="\\\\\|\\\]" end="]"me=e-1
2024-02-13 21:09:22 +01:00
syn match vimPatSepErr contained "\\)"
syn match vimPatSep contained "\\|"
syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup
syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline
syn match vimNotPatSep contained "\\\\"
syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell
2025-06-02 19:31:10 +02:00
syn region vimString oneline keepend matchgroup=vimString start=+[^a-zA-Z\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ nextgroup=vimSubscript contains=@vimStringGroup extend
syn region vimString oneline matchgroup=vimString start=+[^a-zA-Z\\@]'+lc=1 end=+'+ nextgroup=vimSubscript contains=vimQuoteEscape extend
2024-02-13 21:09:22 +01:00
"syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim
2025-01-10 20:02:17 +01:00
2024-02-13 21:09:22 +01:00
syn match vimEscape contained "\\."
" syn match vimEscape contained +\\[befnrt\"]+
syn match vimEscape contained "\\\o\{1,3}\|\\[xX]\x\{1,2}\|\\u\x\{1,4}\|\\U\x\{1,8}"
syn match vimEscape contained "\\<" contains=vimNotation
syn match vimEscape contained "\\<\*[^>]*>\=>"
2025-01-10 20:02:17 +01:00
syn match vimQuoteEscape contained "''"
2024-02-13 21:09:22 +01:00
2025-04-26 20:14:15 +02:00
syn region vimString oneline matchgroup=vimString start=+$'+ end=+'+ nextgroup=vimSubscript contains=@vimStringInterpolation,vimQuoteEscape extend
syn region vimString oneline matchgroup=vimString start=+$"+ end=+"+ nextgroup=vimSubscript contains=@vimStringInterpolation,@vimStringGroup extend
2024-02-28 05:59:30 +11:00
syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
syn match vimStringInterpolationBrace contained "{{"
syn match vimStringInterpolationBrace contained "}}"
2024-08-22 21:29:39 +02:00
syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
2024-02-13 21:09:22 +01:00
2025-04-26 20:14:15 +02:00
syn region vimContinueString contained matchgroup=vimContinueString start=+"+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+"+ end="$" skipwhite nextgroup=vimSubscript,vimComment contains=@vimContinue,@vimStringGroup
syn region vimContinueString contained matchgroup=vimContinueString start=+'+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+'+ end="$" skipwhite nextgroup=vimSubscript,vimComment contains=@vimContinue,vimQuoteEscape
syn region vimContinueString contained matchgroup=vimContinueString start=+$"+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+"+ end="$" skipwhite nextgroup=vimSubscript,vimComment contains=@vimContinue,@vimStringInterpolation,@vimStringGroup
syn region vimContinueString contained matchgroup=vimContinueString start=+$'+ skip=+\n\s*\%(\\\|["#]\\ \)+ end=+'+ end="$" skipwhite nextgroup=vimSubscript,vimComment contains=@vimContinue,@vimStringInterpolation,vimQuoteEscape
2024-02-13 21:09:22 +01:00
" Substitutions: {{{2
" =============
syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation
syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation
syn cluster vimSubstList add=vimCollection
2025-05-31 17:52:48 +02:00
syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat,vimSubstFlags,vimSubstCount
syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
syn match vimSubst "^\s*\%(s\%[ubstitute]\|sm\%[agic]\|sno\%[magic]\)\%(\d\+\)\@=" skipwhite nextgroup=vimSubstCount
syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\>" skipwhite nextgroup=vimSubstPat,vimSubstFlags,vimSubstCount
2024-06-05 19:45:43 +02:00
syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)[_#]\@=" skipwhite nextgroup=vimSubstPat
2025-05-31 17:52:48 +02:00
syn match vimSubst1 contained "\%(s\%[ubstitute]\|sm\%[agic]\>\|sno\%[magic]\)\%(\d\+\)\@=" skipwhite nextgroup=vimSubstCount
syn match vimSubstFlagErr contained "[^< \t\r|]\+" contains=vimSubstFlags
" & and # after :s are always pattern delimiters not flags
syn match vimSubstFlags contained "[&cegiIlnpr#]\+" skipwhite nextgroup=vimSubstCount
syn match vimSubstCount contained "\d\+\>"
2024-02-27 07:10:18 +11:00
" TODO: Vim9 illegal separators for abbreviated :s form are [-.:], :su\%[...] required
" : # is allowed but "not recommended" (see :h pattern-delimiter)
syn 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
syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline
syn region vimCollection contained transparent start="\\\@<!\[" skip="\\\[" end="\]" contains=vimCollClass
syn match vimCollClassErr contained "\[:.\{-\}:\]"
syn match vimCollClass contained transparent "\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
syn match vimSubstSubstr contained "\\z\=\d"
syn match vimSubstTwoBS contained "\\\\"
2025-05-31 17:52:48 +02:00
" TODO: flags, unlike count, must follow immediately
" : distinguish from with Vim9 &var
" syn match vimSubst "^\s*\zs&&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
" syn match vimSubst "^\s*\zs\~&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
" syn match vimSubst1 contained "&&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
" syn match vimSubst1 contained "\~&\=" skipwhite nextgroup=vimSubstFlags,vimSubstCount
" two and three letter variants (matched as :s + flags, count may follow immediately)
syn match vimSubst "^\s*\zssc[egiIlnp]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst "^\s*\zssg[ceiIlnpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst "^\s*\zssi[ceInpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst "^\s*\zssI[ceginplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst "^\s*\zssr[cgiInplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst1 contained "\<sc[egiIlnp]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst1 contained "\<sg[ceiIlnpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst1 contained "\<si[ceInpr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst1 contained "\<sI[ceginplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
syn match vimSubst1 contained "\<sr[cgiInplr]\=\a\@!" skipwhite nextgroup=vimSubstCount contains=vimSubstFlags
2024-02-13 21:09:22 +01:00
2024-06-05 19:45:43 +02:00
" Vi compatibility
syn match vimSubstDelim contained "\\"
syn match vimSubstPat contained "\\\ze[/?&]" contains=vimSubstDelim nextgroup=vimSubstRep4
2025-05-31 17:52:48 +02:00
" Mark: {{{2
" ====
VimL syn match vimExMark "\<k\%([a-zA-Z0-9]\>\|[[\]<>'`]\)\@=" nextgroup=@vimMarkArg
VimL syn match vimExMark "\<k\>" skipwhite nextgroup=@vimMarkArg
syn match vimExMark "\<mark\>" skipwhite nextgroup=@vimMarkArg
syn match vimMarkArg contained "[a-zA-Z]\>\|[[\]<>'`]" skipwhite nextgroup=vimCmdSep,vimComment
syn match vimMarkArgError contained "["^.(){}0-9]"
syn cluster vimMarkArg contains=vimMarkArg,vimMarkArgError
2024-02-13 21:09:22 +01:00
" Marks, Registers, Addresses, Filters: {{{2
2025-06-22 18:47:49 +02:00
syn match vimMark "'[a-zA-Z0-9]\ze\s*$"
syn match vimMark "'[[\]{}()<>'`"^.]\ze\s*$"
2024-02-27 07:10:18 +11:00
syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
2025-06-22 18:47:49 +02:00
syn match vimMark "'[[\]{}()<>'`"^.]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
syn match vimMark ",\zs'[[\]{}()<>'`"^.]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
2024-02-27 07:10:18 +11:00
syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1
syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1
2024-02-13 21:09:22 +01:00
syn match vimPlainMark contained "'[a-zA-Z0-9]"
syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter
syn match vimRegister '[^,;[{: \t]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]'
syn match vimRegister '@"'
2025-06-25 20:58:50 +02:00
syn match vimLetRegister contained '@["@0-9\-a-zA-Z:.%#=*+~_/]'
2024-02-13 21:09:22 +01:00
syn match vimAddress ",\zs[.$]" skipwhite nextgroup=vimSubst1
syn match vimAddress "%\ze\a" skipwhite nextgroup=vimString,vimSubst1
syn match vimFilter "^!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
syn match vimFilter contained "!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
syn match vimComFilter contained "|!!\=[^"]\{-}\(|\|\ze\"\|$\)" contains=vimOper,vimSpecFile
" Complex Repeats: (:h complex-repeat) {{{2
" ===============
syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
" Set command and associated set-options (vimOptions) with comment {{{2
2025-05-30 16:17:30 +02:00
syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimCmdSep,vimComment,vimSetArgs
2025-04-03 21:39:24 +02:00
syn region vimSetComment contained start=+"+ skip=+\n\s*\%(\\\||"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString extend
syn match vimSetCmdSep contained "|" skipwhite nextgroup=@vimCmdList,vimSubst1,vimFunc
syn match vimSetEscape contained "\\\%(\\[|"]\|.\)"
syn match vimSetBarEscape contained "\\|"
syn match vimSetQuoteEscape contained +\\"+
syn region vimSetArgs contained
2025-05-30 16:17:30 +02:00
\ start="\l\|<"
2025-04-03 21:39:24 +02:00
\ skip=+\n\s*\%(\\\|["#]\\ \)\|^\s*"\\ +
\ end=+\ze\\\@1<![|"]+
"\ assume this isn't an escaped char with backslash on the previous line
\ end=+^\s*\\\ze[|"]+
\ end="\ze\s#"
\ end="$"
\ nextgroup=vimSetCmdSep,vimSetComment,vim9Comment
\ contains=@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap
\ keepend
2025-05-30 16:17:30 +02:00
" TODO: restrict this to valid values?
syn match vimOption contained "<[^>]\+>" contains=vimOption
2025-04-03 21:39:24 +02:00
syn region vimSetEqual contained
\ matchgroup=vimOper
\ start="[=:]\|[-+^]="
\ skip=+\\\s\|^\s*\%(\\\|["#]\\ \)+
\ end="\ze\s"
\ contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep,vimSetEscape,vimSetBarEscape,vimSetQuoteEscape
2024-07-24 20:21:22 +02:00
syn match vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
syn keyword vimSetAll contained all nextgroup=vimSetMod
syn keyword vimSetTermcap contained termcap
2024-02-13 21:09:22 +01:00
syn match vimSetSep contained "[,:]"
2024-07-24 20:21:22 +02:00
syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)"
2024-02-13 21:09:22 +01:00
2024-07-17 19:34:14 +02:00
" Variable Declarations: {{{2
" =====================
2025-06-10 21:02:43 +02:00
VimL syn keyword vimLet let skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList,vimLetVar
VimL syn keyword vimConst cons[t] skipwhite nextgroup=@vimSpecialVar,vimVar,vimVarList,vimLetVar
2025-02-10 22:00:27 +01:00
syn region vimVarList contained
\ start="\[" end="]"
2025-06-10 21:02:43 +02:00
\ skipwhite nextgroup=vimLetHeredoc
2025-02-10 22:00:27 +01:00
\ contains=@vimContinue,@vimSpecialVar,vimVar
2025-06-10 21:02:43 +02:00
syn match vimLetVar contained "\<\%([bwglstav]:\)\=\h[a-zA-Z0-9#_]*\>\ze\%(\[.*]\)\=\s*=<<" skipwhite nextgroup=vimLetVarSubscript,vimLetHeredoc contains=vimVarScope,vimSubscript
hi link vimLetVar vimVar
syn region vimLetVarSubscript contained
\ matchgroup=vimSubscriptBracket
\ start="\S\@1<=\["
\ end="]"
\ skipwhite nextgroup=vimLetVarSubscript,vimLetHeredoc
\ contains=@vimExprList
2025-02-10 22:00:27 +01:00
VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars
syn match vimUnletBang contained "\a\@1<=!" skipwhite nextgroup=vimUnletVars
syn region vimUnletVars contained
\ start="$\I\|\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
\ nextgroup=vimCmdSep,vimComment
2025-03-09 16:30:28 +01:00
\ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar
2024-02-13 21:09:22 +01:00
2025-06-10 21:02:43 +02:00
" TODO: type error after register or environment variables (strings)
VimFoldh syn region vimLetHeredoc contained
\ matchgroup=vimLetHeredocStart
\ start="\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)"
\ matchgroup=vimLetHeredocStop
\ end="^\z1\=\z2$"
\ extend
VimFoldh syn region vimLetHeredoc contained
\ matchgroup=vimLetHeredocStart
\ start="=<<\%(\s*\)\@>\z(\L\S*\)"
\ matchgroup=vimLetHeredocStop end="^\z1$"
\ extend
VimFoldh syn region vimLetHeredoc contained
\ matchgroup=vimLetHeredocStart
\ start="\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)"
\ matchgroup=vimLetHeredocStop
\ end="^\z1\=\z2$"
\ contains=@vimStringInterpolation
\ extend
VimFoldh syn region vimLetHeredoc contained
\ matchgroup=vimLetHeredocStart
\ start="=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)"
\ matchgroup=vimLetHeredocStop
\ end="^\z1$"
\ contains=@vimStringInterpolation
\ extend
2024-07-17 19:34:14 +02:00
Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList
Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList
Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList
2025-06-10 21:02:43 +02:00
syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vim9VariableTypeSep,vimLetHeredoc,vimOper
syn region vim9VariableList contained start="\[" end="]" contains=@vimContinue,@vimSpecialVar,vim9Variable skipwhite nextgroup=vimLetHeredoc
syn match vim9VariableTypeSep contained "\S\@1<=:\%(\s\|\n\)\@=" skipwhite nextgroup=@vim9VariableType
syn keyword vim9VariableType contained any blob bool channel float job number string void skipwhite nextgroup=vimLetHeredoc
syn match vim9VariableType contained "\<\%(func\)\>" skipwhite nextgroup=vimLetHeredoc
syn region vim9VariableCompoundType contained
\ matchgroup=vim9VariableType
\ start="\<func("
\ end=")"
\ skipwhite nextgroup=vim9VariableTypeSep,vimLetHeredoc
\ contains=@vim9Continue,@vim9VariableType
\ transparent
syn region vim9VariableCompoundType contained
\ matchgroup=vim9VariableType
\ start="\<tuple<"
\ end=">"
\ skipwhite nextgroup=vimLetHeredoc
\ contains=@vim9Continue,@vim9VariableType
\ transparent
syn region vim9VariableCompoundType contained
\ matchgroup=vim9VariableType
\ start="\<\%(list\|dict\)<"
\ end=">"
\ skipwhite nextgroup=vimLetHeredoc
\ contains=@vim9VariableType
\ oneline
\ transparent
syn match vim9VariableUserType contained "\<\%(\h\w*\.\)*\u\w*\>" skipwhite nextgroup=vimLetHeredoc
syn cluster vim9VariableType contains=vim9VariableType,vim9VariableCompoundType,vim9VariableUserType
2025-02-10 22:00:27 +01:00
" Lockvar and Unlockvar: {{{2
" =====================
syn keyword vimLockvar lockv[ar] skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
syn keyword vimUnlockvar unlo[ckvar] skipwhite nextgroup=vimLockvarBang,vimLockvarDepth,vimLockvarVars
syn match vimLockvarBang contained "\a\@1<=!" skipwhite nextgroup=vimLockvarVars
syn match vimLockvarDepth contained "\<[0-3]\>" skipwhite nextgroup=vimLockvarVars
syn region vimLockvarVars contained
\ start="\h" skip=+\n\s*\\\|\n\s*"\\ \|^\s*"\\ + end="$" end="\ze[|"]"
\ nextgroup=vimCmdSep,vimComment
\ contains=@vimContinue,vimVar
hi def link vimLockvar vimCommand
hi def link vimUnlockvar vimCommand
hi def link vimLockvarBang vimBang
hi def link vimLockvarDepth vimNumber
2024-02-13 21:09:22 +01:00
" For: {{{2
" ===
2025-02-10 22:00:27 +01:00
" handles Vim9 and legacy for now
syn region vimFor
\ matchgroup=vimCommand
\ start="\<for\>" end="\<in\>"
\ skipwhite skipnl nextgroup=@vimForInContinue,vim9ForInComment,@vimExprList
\ contains=@vimContinue,vimVar,vimVarList,vim9VariableList
\ transparent
syn match vim9ForInComment contained "#.*" skipwhite skipempty nextgroup=vimForInComment,@vimExprList
syn match vimForInContinue contained "^\s*\zs\\" skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
syn match vimForInContinueComment contained '^\s*\zs["#]\\ .*' skipwhite skipnl nextgroup=@vimForInContinue,@vimExprList
syn cluster vimForInContinue contains=vimForInContinue,vimForInContinueComment
2024-03-23 05:55:25 +11:00
2024-02-13 21:09:22 +01:00
" Abbreviations: {{{2
" =============
" GEN_SYN_VIM: vimCommand abbrev, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
2024-03-28 20:06:03 +11:00
" GEN_SYN_VIM: vimCommand abclear, START_STR='syn keyword vimAbb', END_STR='skipwhite nextgroup=vimMapMod'
2024-02-13 21:09:22 +01:00
2025-04-22 19:48:13 +02:00
" Filename Patterns: {{{2
" =================
syn match vimWildcardQuestion contained "?"
syn match vimWildcardStar contained "*"
syn match vimWildcardBraceComma contained ","
syn region vimWildcardBrace contained
\ matchgroup=vimWildcard
\ start="{"
\ end="}"
\ contains=vimWildcardEscape,vimWildcardBrace,vimWildcardBraceComma,vimWildcardQuestion,vimWildcardStar,vimWildcardBracket
\ oneline
syn match vimWildcardIntervalNumber contained "\d\+"
syn match vimWildcardInterval contained "\\\\\\{\d\+\%(,\d\+\)\=\\}" contains=vimWildcardIntervalNumber
syn match vimWildcardBracket contained "\[\%(\^\=]\=\%(\\.\|\[\([:.=]\)[^:.=]\+\1]\|[^][:space:]]\)*\)\@>]"
\ contains=vimWildcardBracketStart,vimWildcardEscape
syn match vimWildcardBracketCharacter contained "." nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketHyphen,vimWildcardBracketEnd
syn match vimWildcardBracketRightBracket contained "]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
syn match vimWildcardBracketHyphen contained "-]\@!" nextgroup=@vimWildcardBracketCharacter
syn match vimWildcardBracketEscape contained "\\." nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketHyphen,vimWildcardBracketEnd
syn match vimWildcardBracketCharacterClass contained "\[:[^:]\+:]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
syn match vimWildcardBracketEquivalenceClass contained "\[=[^=]\+=]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
syn match vimWildcardBracketCollatingSymbol contained "\[\.[^.]\+\.]" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketEnd
syn match vimWildcardBracketStart contained "\[" nextgroup=vimWildcardBracketCaret,vimWildcardBracketRightBracket,@vimWildcardBracketCharacter
2025-06-07 17:55:58 +02:00
syn match vimWildcardBracketCaret contained "\^" nextgroup=@vimWildcardBracketCharacter,vimWildcardBracketRightBracket
2025-04-22 19:48:13 +02:00
syn match vimWildcardBracketEnd contained "]"
syn cluster vimWildcardBracketCharacter contains=vimWildcardBracketCharacter,vimWildcardBracketEscape,vimWildcardBracketCharacterClass,vimWildcardBracketEquivalenceClass,vimWildcardBracketCollatingSymbol
syn match vimWildcardEscape contained "\\."
syn cluster vimWildcard contains=vimWildcardQuestion,vimWildcardStar,vimWildcardBrace,vimWildcardBracket,vimWildcardInterval
" Autocmd and Doauto{cmd,all}: {{{2
" ===========================
" TODO: explicitly match the {cmd} arg rather than bailing out to TOP
syn region vimAutocmdBlock contained matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
syn match vimAutocmdGroup contained "\%(\\["|[:space:]]\|[^"|[:space:]]\)\+" skipwhite nextgroup=vimAutoEvent,vimAutoEventGlob
syn match vimAutocmdBang contained "\a\@1<=!" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
" TODO: cleaner handling of | in pattern position
" : match pattern items in addition to wildcards
syn region vimAutocmdPattern contained
\ start="|\@!\S"
\ skip="\\\\\|\\[,[:space:]]"
\ end="\ze[,[:space:]]"
\ end="$"
\ skipwhite nextgroup=vimAutocmdPatternSep,vimAutocmdMod,vimAutocmdBlock
\ contains=vimEnvvar,@vimWildcard,vimAutocmdPatternEscape
syn match vimAutocmdBufferPattern contained "<buffer\%(=\%(\d\+\|abuf\)\)\=>" skipwhite nextgroup=vimAutocmdPatternSep,vimAutocmdMod,vimAutocmdBlock
" trailing pattern separator comma allowed
syn match vimAutocmdPatternSep contained "," skipwhite nextgroup=@vimAutocmdPattern,vimAutocmdMod,vimAutocmdBlock
syn match vimAutocmdPatternEscape contained "\\."
syn cluster vimAutocmdPattern contains=vimAutocmdPattern,vimAutocmdBufferPattern
" TODO: Vim9 requires '++' prefix
syn match vimAutocmdMod contained "\%(++\)\=\<nested\>" skipwhite nextgroup=vimAutocmdMod,vimAutocmdBlock
syn match vimAutocmdMod contained "++once\>" skipwhite nextgroup=vimAutocmdMod,vimAutocmdBlock
" higher priority than vimAutocmdGroup, assume no group is so named
syn match vimAutoEventGlob contained "*" skipwhite nextgroup=@vimAutocmdPattern
syn match vimAutoEventSep contained "\a\@1<=," nextgroup=vimAutoEvent
2025-06-18 18:02:47 +02:00
syn match vimUserAutoEventSep contained "\a\@1<=," nextgroup=vimUserAutoEvent
2025-04-22 19:48:13 +02:00
syn match vimAutocmd "\<au\%[tocmd]\>" skipwhite nextgroup=vimAutocmdBang,vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
syn match vimDoautocmdMod contained "<nomodeline>" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent
syn match vimDoautocmd "\<do\%[autocmd]\>" skipwhite nextgroup=vimDoautocmdMod,vimAutocmdGroup,vimAutoEvent
syn match vimDoautocmd "\<doautoa\%[ll]\>" skipwhite nextgroup=vimDoautocmdMod,vimAutocmdGroup,vimAutoEvent
2024-02-13 21:09:22 +01:00
" Echo And Execute: -- prefer strings! {{{2
" ================
2024-03-15 23:45:48 +11:00
" NOTE: No trailing comments
syn region vimEcho
\ matchgroup=vimCommand
\ start="\<ec\%[ho]\>"
\ start="\<echoe\%[rr]\>"
\ start="\<echom\%[sg]\>"
\ start="\<echoc\%[onsole]\>"
\ start="\<echon\>"
\ start="\<echow\%[indow]\>"
2025-06-23 21:51:44 +02:00
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
\ end="\ze|"
\ excludenl end="$"
\ nextgroup=vimCmdSep
\ contains=@vimContinue,@vimExprList
\ transparent
2024-03-15 23:45:48 +11:00
syn match vimEchohl "\<echohl\=\>" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchohlNone
2024-02-13 21:09:22 +01:00
syn case ignore
2024-03-15 23:45:48 +11:00
syn keyword vimEchohlNone contained none
2024-02-13 21:09:22 +01:00
syn case match
2024-03-22 06:41:10 +11:00
syn cluster vimEcho contains=vimEcho,vimEchohl
2024-03-15 23:45:48 +11:00
2025-06-23 21:51:44 +02:00
syn region vimExecute
\ matchgroup=vimCommand
\ start="\<exe\%[cute]\>"
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
\ end="\ze|"
\ excludenl end="$"
\ nextgroup=vimCmdSep
\ contains=@vimContinue,@vimExprList
\ transparent
2024-02-28 05:59:30 +11:00
2025-04-10 19:59:22 +02:00
" Filter: {{{2
" ======
syn match vimExFilter "\<filt\%[er]\>" skipwhite nextgroup=vimExFilterBang,vimExFilterPattern
syn match vimExFilterBang contained "\a\@1<=!" skipwhite nextgroup=vimExFilterPattern
syn region vimExFilterPattern contained
2025-06-07 17:55:58 +02:00
\ start="[[:ident:]]"
2025-04-10 19:59:22 +02:00
\ end="\ze[[:space:]\n]"
\ skipwhite nextgroup=@vimCmdList
\ contains=@vimSubstList
\ oneline
syn region vimExFilterPattern contained
\ matchgroup=Delimiter
\ start="\z([^[:space:][:ident:]|"]\)"
\ skip="\\\\\|\\\z1"
\ end="\z1"
\ skipwhite nextgroup=@vimCmdList
\ contains=@vimSubstList
\ oneline
" Grep and Make: {{{2
" =============
" | is the command separator, escaped with \| all other backslashes are passed through literally, no tail comments
syn match vimGrep "\<l\=gr\%[ep]\>" skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
syn match vimGrepadd "\<l\=grepa\%[dd]\>" skipwhite nextgroup=vimGrepBang,vimGrepArgs,vimCmdSep
syn region vimGrepArgs contained
\ start="|\@!\S"
\ skip=+\n\s*\%(\\\|[#"]\\ \)+
\ matchgroup=vimCmdSep
\ end="|"
\ end="$"
"\ TODO: include vimSpecFile
\ contains=vimGrepBarEscape
syn match vimGrepBarEscape contained "\\|"
syn match vimGrepBang contained "\a\@1<=!" skipwhite nextgroup=vimGrepArgs,vimCmdSep
syn match vimMake "\<l\=make\=\>" skipwhite nextgroup=vimMakeBang,vimMakeArgs,vimCmdSep
syn region vimMakeArgs contained
\ start="|\@!\S"
\ skip=+\n\s*\%(\\\|[#"]\\ \)+
\ matchgroup=vimCmdSep
\ end="|"
\ end="$"
"\ TODO: include vimSpecFile
\ contains=vimMakeBarEscape
syn match vimMakeBarEscape contained "\\|"
syn match vimMakeBang contained "\a\@1<=!" skipwhite nextgroup=vimMakeArgs,vimCmdSep
syn match vimHelpgrep "\<l\=helpg\%[rep]\>" skipwhite nextgroup=vimHelpgrepBang,vimHelpgrepPattern
syn region vimHelpgrepPattern contained
\ start="\S"
\ matchgroup=Special
\ end="@\w\w\>"
\ end="$"
\ contains=@vimSubstList
\ oneline
" Vimgrep: {{{2
" =======
syn match vimVimgrep "\<l\=vim\%[grep]\>" skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
syn match vimVimgrepadd "\<l\=vimgrepa\%[dd]\>" skipwhite nextgroup=vimVimgrepBang,vimVimgrepPattern
syn match vimVimgrepBang contained "\a\@1<=!" skipwhite nextgroup=vimVimgrepPattern
syn region vimVimgrepPattern contained
2025-06-07 17:55:58 +02:00
\ start="[[:ident:]]"
2025-04-10 19:59:22 +02:00
\ end="\ze[[:space:]\n]"
\ skipwhite nextgroup=vimVimgrepFile,vimCmdSep
\ contains=@vimSubstList
\ oneline
syn region vimVimgrepPattern contained
\ matchgroup=Delimiter
\ start="\z([^[:space:][:ident:]|"]\)"
\ skip="\\\\\|\\\z1"
\ end="\z1"
\ skipwhite nextgroup=vimVimgrepFlags,vimVimgrepFile,vimCmdSep
\ contains=@vimSubstList
\ oneline
syn match vimVimgrepEscape contained "\\\%(\\|\|.\)"
syn match vimVimgrepBarEscape contained "\\|"
syn region vimVimgrepFile contained
\ start="|\@!\S"
\ matchgroup=vimCmdSep
\ end="|"
\ end="\ze\s"
\ end="$"
\ skipwhite nextgroup=vimVimgrepFile
\ contains=vimSpecFile,vimVimgrepEscape,vimVimgrepBarEscape
syn match vimVimgrepFlags contained "\<[gjf]\{,3\}\>" skipwhite nextgroup=vimVimgrepfile
2024-02-13 21:09:22 +01:00
" Maps: {{{2
" ====
2024-07-18 20:45:19 +02:00
" GEN_SYN_VIM: vimCommand map, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
syn match vimMap "\<map\>" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
syn keyword vimMap no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
2024-02-23 05:45:05 +11:00
" GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
2024-07-18 20:45:19 +02:00
syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod
" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
syn keyword vimUnmap unm[ap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
2025-03-07 18:49:11 +01:00
syn match vimMapLhs contained "\%( .\|\S\)\+" contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite nextgroup=vimMapRhs
syn match vimMapLhs contained "\%( .\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation,vimMapLeader skipwhite skipnl nextgroup=vimMapRhsContinue
2024-03-10 04:01:22 +11:00
syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs
2025-03-07 18:49:11 +01:00
syn match vimMapMod contained "\%#=1<\%(buffer\|expr\|nowait\|script\|silent\|special\|unique\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs
syn region vimMapRhs contained start="\S" skip=+\\|\| \@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader skipnl nextgroup=vimMapRhsContinue
2024-03-10 04:01:22 +11:00
" assume a continuation comment introduces the RHS
2025-03-07 18:49:11 +01:00
syn region vimMapRhsContinue contained start=+^\s*\%(\\\|"\\ \)+ skip=+\\|\| \@1<=|\|\n\s*\\\|\n\s*"\\ + end="|" end="$" contains=@vimContinue,vimCtrlChar,vimNotation,vimMapLeader
syn match vimMapLeader contained "\%#=1\c<\%(local\)\=leader>" contains=vimMapLeaderKey
syn keyword vimMapModKey contained buffer expr nowait script silent special unique
2024-02-13 21:09:22 +01:00
syn case ignore
2025-03-07 18:49:11 +01:00
syn keyword vimMapLeaderKey contained leader localleader
2024-02-13 21:09:22 +01:00
syn case match
" Menus: {{{2
" =====
2024-03-10 03:43:28 +11:00
" NOTE: tail comments disallowed
" GEN_SYN_VIM: vimCommand menu, START_STR='syn keyword vimMenu', END_STR='skipwhite nextgroup=vimMenuBang,vimMenuMod,vimMenuName,vimMenuPriority,vimMenuStatus'
syn keyword vimMenu popu[p] skipwhite nextgroup=vimMenuBang,vimMenuName
syn region vimMenuRhs contained contains=@vimContinue,vimNotation start="|\@!\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
syn region vimMenuRhsContinue contained contains=@vimContinue,vimNotation start=+^\s*\%(\\\|"\\ \)+ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + end="$" matchgroup=vimSep end="|"
2024-03-20 04:04:42 +11:00
syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation skipwhite nextgroup=vimCmdSep,vimMenuRhs
syn match vimMenuName "\.\@!\%(\\\s\|\S\)\+\ze\s*$" contained contains=vimMenuNotation,vimNotation skipwhite skipnl nextgroup=vimCmdSep,vimMenuRhsContinue
2024-03-10 03:43:28 +11:00
syn match vimMenuNotation "&\a\|&&\|\\\s\|\\\." contained
syn match vimMenuPriority "\<\d\+\%(\.\d\+\)*\>" contained skipwhite nextgroup=vimMenuName
syn match vimMenuMod "\c<\%(script\|silent\|special\)>" contained skipwhite nextgroup=vimMenuName,vimMenuPriority,vimMenuMod contains=vimMapModKey,vimMapModErr
syn keyword vimMenuStatus enable disable nextgroup=vimMenuName skipwhite
syn match vimMenuBang "\a\@1<=!" contained skipwhite nextgroup=vimMenuName,vimMenuMod
syn region vimMenutranslate
\ matchgroup=vimCommand start="\<menut\%[ranslate]\>"
\ skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ +
\ end="$" matchgroup=vimCmdSep end="|" matchgroup=vimMenuClear end="\<clear\ze\s*\%(["#|]\|$\)"
\ contains=@vimContinue,vimMenutranslateName keepend transparent
" oneline is sufficient to match the current formatting in runtime/lang/*.vim
syn match vimMenutranslateName "\%(\\\s\|\S\)\+" contained contains=vimMenuNotation,vimNotation
syn match vimMenutranslateComment +".*+ contained containedin=vimMenutranslate
2024-02-13 21:09:22 +01:00
" Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
" ======================
syn case ignore
2025-02-16 16:40:12 +01:00
syn match vimNotation contained "\%#=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
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(net\|dec\|jsb\|pterm\|urxvt\|sgr\)mouse>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}\%(left\|middle\|right\)\%(mouse\|drag\|release\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}left\%(mouse\|release\)nm>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}x[12]\%(mouse\|drag\|release\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}sgrmouserelease>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}mouse\%(up\|down\|move\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd2-4]-\)\{0,4}scrollwheel\%(up\|down\|right\|left\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%(sid\|nop\|nul\|lt\|drop\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%(snr\|plug\|cursorhold\|ignore\|cmd\|scriptcmd\|focus\%(gained\|lost\)\)>" contains=vimBracket
2025-04-26 20:14:15 +02:00
" syn match vimNotation contained '\%(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket
2025-02-16 16:40:12 +01:00
syn match vimNotation contained '\%#=1\%(\\\|<lt>\)\=<\%(q-\)\=\%(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([cas]file\|abuf\|amatch\|cexpr\|cword\|cWORD\|client\|stack\|script\|sf\=lnum\)>" contains=vimBracket
syn match vimNotation contained "\%#=1\%(\\\|<lt>\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket
2024-02-13 21:09:22 +01:00
syn match vimBracket contained "[\\<>]"
syn case match
" User Function Highlighting: {{{2
" (following Gautam Iyer's suggestion)
" ==========================
2025-02-10 22:00:27 +01:00
syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute
syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation,vim9MethodName,vim9Super,vim9This
2024-03-19 05:19:51 +11:00
syn keyword vimFuncEcho contained ec ech echo
2024-02-13 21:09:22 +01:00
2024-07-18 20:45:19 +02:00
syn match vimMap "\<map\%(\s\+(\)\@=" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
2024-02-13 21:09:22 +01:00
" User Command Highlighting: {{{2
syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
2025-02-23 15:48:52 +01:00
" Vim user commands
" Compiler plugins
2025-03-07 18:49:11 +01:00
syn match vimCompilerSet "\<CompilerSet\>" skipwhite nextgroup=vimSetArgs
2025-02-23 15:48:52 +01:00
" runtime/makemenu.vim
syn match vimSynMenu "\<SynMenu\>" skipwhite nextgroup=vimSynMenuPath
syn match vimSynMenuPath contained ".*\ze:" nextgroup=vimSynMenuColon contains=vimMenuNotation
syn match vimSynMenuColon contained ":" nextgroup=vimSynMenuName
syn match vimSynMenuName contained "\w\+"
syn cluster vimExUserCmdList contains=vimCompilerSet,vimSynMenu
2024-02-13 21:09:22 +01:00
" Errors And Warnings: {{{2
" ====================
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror")
2025-06-11 21:16:14 +02:00
syn match vimFunctionError contained "[[:space:]!]\@1<=\<[a-z0-9]\w\{-}\ze\s*("
syn match vimFunctionError contained "\%(<[sS][iI][dD]>\|[sg]:\)\d\w\{-}\ze\s*("
2024-02-13 21:09:22 +01:00
syn match vimElseIfErr "\<else\s\+if\>"
syn match vimBufnrWarn /\<bufnr\s*(\s*["']\.['"]\s*)/
endif
2025-04-26 20:14:15 +02:00
" If, While and Return: {{{2
" ====================
2025-02-16 16:40:12 +01:00
syn match vimNotFunc "\%#=1\<\%(if\|el\%[seif]\|retu\%[rn]\|while\)\>" skipwhite nextgroup=@vimExprList,vimNotation
2025-04-26 20:14:15 +02:00
syn match vimElse "\<el\%[se]\>" skipwhite nextgroup=vimComment,vim9Comment
syn match vimEndif "\<en\%[dif]\>" skipwhite nextgroup=vimComment,vim9Comment
2024-02-13 21:09:22 +01:00
2024-07-07 20:45:37 +02:00
" Match: {{{2
" =====
syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern
syn case ignore
syn keyword vimMatchNone contained none
syn case match
syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
2024-11-09 19:11:25 +01:00
" Normal: {{{2
" ======
syn match vimNormal "\<norm\%[al]\>!\=" skipwhite nextgroup=vimNormalArg contains=vimBang
syn region vimNormalArg contained start="\S" skip=+\n\s*\\\|\n\s*["#]\\ + end="$" contains=@vimContinue
2024-02-13 21:09:22 +01:00
2025-06-01 18:26:39 +02:00
" Profile: {{{2
" =======
syn match vimProfileBang contained "\a\@1<=!" skipwhite nextgroup=vimProfileArg
syn keyword vimProfileArg contained start skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfileArg contained stop pause skipwhite nextgroup=vimCmdSep,@vimComment
syn keyword vimProfileArg contained continue dump skipwhite nextgroup=vimCmdSep,@vimComment
" TODO: match file pattern
syn region vimProfilePattern contained
\ start="\S"
\ skip=+\\[|"#]+
\ end="$" end=+\ze\s*[|"#]+
\ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment
syn match vimProfile "\<prof\%[ile]\>" skipwhite nextgroup=vimProfileBang,vimProfileArg
2025-06-02 19:31:10 +02:00
syn keyword vimProfdelArg contained func skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg contained file skipwhite nextgroup=vimProfilePattern
syn keyword vimProfdelArg contained here skipwhite nextgroup=vimCmdSep,@vimComment
2025-06-01 18:26:39 +02:00
syn match vimProfdel "\<profd\%[el]\>" skipwhite nextgroup=vimProfdelArg
2025-04-05 15:55:36 +02:00
" Redir: {{{2
" =====
syn match vimRedir "\<redir\=\>" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd
syn match vimRedirBang contained "\a\@1<=!" skipwhite nextgroup=vimRedirFileOperator
syn match vimRedirFileOperator contained ">>\=" skipwhite nextgroup=vimRedirFile
syn region vimRedirFile contained
\ start="\S"
\ matchgroup=Normal
\ end="\s*$"
\ end="\s*\ze[|"]"
\ nextgroup=vimCmdSep,vimComment
\ contains=vimSpecFile
syn match vimRedirRegisterOperator contained ">>\="
syn match vimRedirRegister contained "@[a-zA-Z*+"]" nextgroup=vimRedirRegisterOperator
syn match vimRedirVariableOperator contained "=>>\=" skipwhite nextgroup=vimVar
syn keyword vimRedirEnd contained END
2024-06-14 20:16:35 +02:00
" Sleep: {{{2
" =====
syn keyword vimSleep sl[eep] skipwhite nextgroup=vimSleepBang,vimSleepArg
syn match vimSleepBang contained "\a\@1<=!" skipwhite nextgroup=vimSleepArg
syn match vimSleepArg contained "\<\%(\d\+\)\=m\=\>"
2025-04-10 19:59:22 +02:00
" Sort: {{{2
" ====
syn match vimSort "\<sort\=\>" skipwhite nextgroup=vimSortBang,@vimSortOptions,vimSortPattern,vimCmdSep
syn match vimSortBang contained "\a\@1<=!" skipwhite nextgroup=@vimSortOptions,vimSortPattern,vimCmdSep
syn match vimSortOptionsError contained "\a\+"
syn match vimSortOptions contained "\<[ilur]*[nfxob]\=[ilur]*\>" skipwhite nextgroup=vimSortPattern,vimCmdSep
syn region vimSortPattern contained
\ matchgroup=Delimiter
\ start="\z([^[:space:][:alpha:]|]\)"
\ skip="\\\\\|\\\z1"
\ end="\z1"
\ skipwhite nextgroup=@vimSortOptions,vimCmdSep
\ contains=@vimSubstList
\ oneline
syn cluster vimSortOptions contains=vimSortOptions,vimSortOptionsError
2025-06-24 20:23:34 +02:00
" Uniq: {{{2
" ====
syn match vimUniq "\<uniq\=\>" skipwhite nextgroup=vimUniqBang,@vimUniqOptions,vimUniqPattern,vimCmdSep
syn match vimUniqBang contained "\a\@1<=!" skipwhite nextgroup=@vimUniqOptions,vimUniqPattern,vimCmdSep
syn match vimUniqOptionsError contained "\a\+"
syn match vimUniqOptions contained "\<[ilur]*\>" skipwhite nextgroup=vimUniqPattern,vimCmdSep
syn region vimUniqPattern contained
\ matchgroup=Delimiter
\ start="\z([^[:space:][:alpha:]|]\)"
\ skip="\\\\\|\\\z1"
\ end="\z1"
\ skipwhite nextgroup=@vimUniqOptions,vimCmdSep
\ contains=@vimSubstList
\ oneline
syn cluster vimUniqOptions contains=vimUniqOptions,vimUniqOptionsError
2024-02-13 21:09:22 +01:00
" Syntax: {{{2
"=======
syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
syn 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
syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
syn match vimSynError contained "\i\+"
syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
endif
syn match vimSynContains contained "\<contain\%(s\|edin\)=" skipwhite skipnl nextgroup=vimGroupList
syn match vimSynKeyContainedin contained "\<containedin=" skipwhite skipnl nextgroup=vimGroupList
syn match vimSynNextgroup contained "\<nextgroup=" skipwhite skipnl nextgroup=vimGroupList
if has("conceal")
" no whitespace allowed after '='
syn match vimSynCchar contained "\<cchar=" nextgroup=vimSynCcharValue
syn match vimSynCcharValue contained "\S"
endif
2024-04-11 06:18:37 +10:00
syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand skipwhite nextgroup=vimSynType,@vimComment
2025-06-11 21:16:14 +02:00
syn cluster vimFunctionBodyList add=vimSyntax
2024-02-13 21:09:22 +01:00
" Syntax: case {{{2
syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror")
syn match vimSynCaseError contained "\i\+"
endif
syn keyword vimSynCase contained ignore match
" Syntax: clear {{{2
syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList
" Syntax: cluster {{{2
syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName
syn region vimClusterName contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="$\||" contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
syn match vimGroupAdd contained keepend "\<add=" skipwhite skipnl nextgroup=vimGroupList
syn match vimGroupRem contained keepend "\<remove=" skipwhite skipnl nextgroup=vimGroupList
2025-03-10 21:04:53 +01:00
" Syntax: conceal {{{2
syn match vimSynType contained "\<conceal\>" skipwhite nextgroup=vimSynConceal,vimSynConcealError
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynconcealerror")
syn match vimSynConcealError contained "\i\+"
endif
syn keyword vimSynConceal contained on off
2024-02-13 21:09:22 +01:00
" Syntax: foldlevel {{{2
2025-03-10 21:04:53 +01:00
syn keyword vimSynType contained foldlevel skipwhite nextgroup=vimSynFoldlevel,vimSynFoldlevelError
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynfoldlevelerror")
syn match vimSynFoldlevelError contained "\i\+"
2024-02-13 21:09:22 +01:00
endif
2025-03-10 21:04:53 +01:00
syn keyword vimSynFoldlevel contained start minimum
2024-02-13 21:09:22 +01:00
" Syntax: iskeyword {{{2
2025-03-10 21:04:53 +01:00
syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimSynIskeyword
syn keyword vimSynIskeyword contained clear
syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep
syn match vimSynIskeywordSep contained ","
2024-02-13 21:09:22 +01:00
" Syntax: include {{{2
syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList
" Syntax: keyword {{{2
syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion
syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
2025-03-10 21:04:53 +01:00
syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
2024-02-13 21:09:22 +01:00
" Syntax: match {{{2
syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion
syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
2025-03-10 21:04:53 +01:00
syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
2024-02-13 21:09:22 +01:00
" Syntax: off and on {{{2
syn keyword vimSynType contained enable list manual off on reset
" Syntax: region {{{2
syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion
2025-03-10 21:04:53 +01:00
syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup
syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
2024-02-13 21:09:22 +01:00
syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup
syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\\\|\\\z1\|\n\s*\\\|\n\s*"\\ / end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
2025-03-10 21:04:53 +01:00
syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\="
syn match vimSynPatMod contained "\%#=1\%(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\%([-+]\d\+\)\=," nextgroup=vimSynPatMod
2024-02-13 21:09:22 +01:00
syn match vimSynPatMod contained "lc=\d\+"
syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod
syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]"
syn match vimSynNotPatRange contained "\\\\\|\\\["
syn match vimMtchComment contained '"[^"]\+$'
2025-03-10 21:04:53 +01:00
" Syntax: spell {{{2
syn keyword vimSynType contained spell skipwhite nextgroup=vimSynSpell,vimSynSpellError
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynspellerror")
syn match vimSynSpellError contained "\i\+"
endif
syn keyword vimSynSpell contained default notoplevel toplevel
2024-02-13 21:09:22 +01:00
" Syntax: sync {{{2
" ============
2025-03-10 21:04:53 +01:00
syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncClear,vimSyncMatch,vimSyncError,vimSyncRegion,vimSyncArgs
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror")
syn match vimSyncError contained "\i\+"
endif
2025-03-10 21:04:53 +01:00
syn region vimSyncArgs contained start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|\|$" contains=vimSyncLines,vimSyncLinebreak,vimSyncLinecont,vimSyncFromstart,vimSyncCcomment
syn keyword vimSyncCcomment contained ccomment skipwhite nextgroup=vimGroupName
syn keyword vimSyncClear contained clear skipwhite nextgroup=vimSyncGroupName
syn keyword vimSyncFromstart contained fromstart
2024-02-13 21:09:22 +01:00
syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName
2025-03-15 09:29:31 +01:00
syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynRegion
2025-03-10 21:04:53 +01:00
syn match vimSyncLinebreak contained "\<linebreaks=" nextgroup=vimNumber
2024-02-13 21:09:22 +01:00
syn keyword vimSyncLinecont contained linecont skipwhite nextgroup=vimSynRegPat
2025-03-10 21:04:53 +01:00
syn match vimSyncLines contained "\<lines=" nextgroup=vimNumber
syn match vimSyncLines contained "\<minlines=" nextgroup=vimNumber
syn match vimSyncLines contained "\<maxlines=" nextgroup=vimNumber
syn match vimSyncGroupName contained "\<\h\w*\>" skipwhite nextgroup=vimSyncKey
syn match vimSyncKey contained "\<grouphere\>" skipwhite nextgroup=vimSyncGroup
syn match vimSyncKey contained "\<groupthere\>" skipwhite nextgroup=vimSyncGroup
syn match vimSyncGroup contained "\<\h\w*\>" skipwhite nextgroup=vimSynRegPat,vimSyncNone
2024-02-13 21:09:22 +01:00
syn keyword vimSyncNone contained NONE
" Additional IsCommand: here by reasons of precedence {{{2
" ====================
syn match vimIsCommand "<Bar>\s*\a\+" transparent contains=vimCommand,vimNotation
" Highlighting: {{{2
" ============
2024-04-11 06:18:37 +10:00
syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,@vimComment
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror")
syn match vimHiCtermError contained "\D\i*"
endif
syn match vimHighlight "\<hi\%[ghlight]\>" skipwhite nextgroup=vimHiBang,@vimHighlightCluster
2024-03-19 05:19:51 +11:00
syn match vimHiBang contained "\a\@1<=!" skipwhite nextgroup=@vimHighlightCluster
2024-02-13 21:09:22 +01:00
syn match vimHiGroup contained "\i\+"
syn case ignore
2025-03-10 21:04:53 +01:00
syn keyword vimHiNone contained NONE
2024-02-13 21:09:22 +01:00
syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdashed underdotted underdouble
syn keyword vimFgBgAttrib contained none bg background fg foreground
syn case match
syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib
syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList
syn case ignore
syn 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
syn match vimHiCtermColor contained "\<color\d\{1,3}\>"
syn case match
2025-03-10 21:04:53 +01:00
2024-02-13 21:09:22 +01:00
syn match vimHiFontname contained "[a-zA-Z\-*]\+"
syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'"
syn match vimHiGuiRgb contained "#\x\{6}"
" Highlighting: hi group key=arg ... {{{2
2025-06-07 17:59:11 +02:00
syn cluster vimHiCluster contains=vimGroup,vimHLGroup,vimHiGroup,vimHiNone,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiCtermul,vimHiCtermfont,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation,vimComment,vim9comment
2024-03-19 05:19:51 +11:00
syn region vimHiKeyList contained start="\i\+" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*"\\ + matchgroup=vimCmdSep end="|" excludenl end="$" contains=@vimContinue,@vimHiCluster
2024-02-13 21:09:22 +01:00
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror")
syn match vimHiKeyError contained "\i\+="he=e-1
endif
syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList
2024-03-19 05:19:51 +11:00
syn match vimHiStartStop contained "\c\%(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption
2024-02-13 21:09:22 +01:00
syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList
syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
syn match vimHiCtermul contained "\cctermul="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
syn match vimHiCtermfont contained "\cctermfont="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError
syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList
syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname
syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib
syn match vimHiTermcap contained "\S\+" contains=vimNotation
syn match vimHiNmbr contained '\d\+'
" Highlight: clear {{{2
2025-06-07 17:59:11 +02:00
syn keyword vimHiClear contained clear skipwhite nextgroup=vimGroup,vimHLGroup,vimHiGroup
2024-02-13 21:09:22 +01:00
" Highlight: link {{{2
" see tst24 (hi def vs hi) (Jul 06, 2018)
"syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\<hi\%[ghlight]\s\+\)\@<=\(\(def\%[ault]\s\+\)\=link\>\|\<def\>\)" end="$" contains=vimHiGroup,vimGroup,vimHLGroup,vimNotation
2024-03-19 05:19:51 +11:00
" TODO: simplify and allow line continuations --djk
syn 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
2024-02-13 21:09:22 +01:00
" Control Characters: {{{2
" ==================
syn match vimCtrlChar "[ - - ]"
2025-05-17 16:29:13 +02:00
" Embedded Scripts: {{{2
" ================
" perl,ruby : Benoit Cerrina
" python,tcl : Johannes Zellner
" mzscheme, lua : Charles Campbell
" Allows users to specify the type of embedded script highlighting
" they want: (lua/mzscheme/perl/python/ruby/tcl support)
" g:vimsyn_embed == 0 : don't embed any scripts
" g:vimsyn_embed =~# 'l' : embed Lua
" g:vimsyn_embed =~# 'm' : embed MzScheme
" g:vimsyn_embed =~# 'p' : embed Perl
" g:vimsyn_embed =~# 'P' : embed Python
" g:vimsyn_embed =~# 'r' : embed Ruby
" g:vimsyn_embed =~# 't' : embed Tcl
let s:interfaces = get(g:, "vimsyn_embed", "lP")
" [-- lua --] {{{3
if s:interfaces =~# 'l'
syn include @vimLuaScript syntax/lua.vim
unlet b:current_syntax
endif
syn keyword vimLua lua skipwhite nextgroup=vimLuaHeredoc,vimLuaStatement
syn keyword vimLua luado skipwhite nextgroup=vimLuaStatement
syn keyword vimLua luafile
syn region vimLuaStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimLuaScript,@vimContinue
VimFoldl syn region vimLuaHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimLuaScript
VimFoldl syn region vimLuaHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimLuaScript
VimFoldl syn region vimLuaHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimLuaScript
VimFoldl syn region vimLuaHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimLuaScript
" [-- mzscheme --] {{{3
if s:interfaces =~# 'm'
let s:iskKeep = &isk
syn include @vimMzSchemeScript syntax/scheme.vim
unlet b:current_syntax
let &isk = s:iskKeep
endif
syn keyword vimMzScheme mz[scheme] skipwhite nextgroup=vimMzSchemeHeredoc,vimMzSchemeStatement
syn keyword vimMzScheme mzf[ile]
syn region vimMzSchemeStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimMzSchemeScript,@vimContinue
VimFoldm syn region vimMzSchemeHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimMzSchemeScript
VimFoldm syn region vimMzSchemeHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimMzSchemeScript
VimFoldm syn region vimMzSchemeHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimMzSchemeScript
VimFoldm syn region vimMzSchemeHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimMzSchemeScript
" [-- perl --] {{{3
if s:interfaces =~# 'p'
syn include @vimPerlScript syntax/perl.vim
unlet b:current_syntax
endif
syn keyword vimPerl pe[rl] skipwhite nextgroup=vimPerlHeredoc,vimPerlStatement
syn keyword vimPerl perld[o] skipwhite nextgroup=vimPerlStatement
syn region vimPerlStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimPerlScript,@vimContinue
VimFoldp syn region vimPerlHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+ contains=@vimPerlScript
VimFoldp syn region vimPerlHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimPerlScript
VimFoldp syn region vimPerlHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimPerlScript
VimFoldp syn region vimPerlHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimPerlScript
" [-- python --] {{{3
if s:interfaces =~# 'P'
syn include @vimPythonScript syntax/python2.vim
unlet b:current_syntax
endif
syn keyword vimPython py[thon] skipwhite nextgroup=vimPythonHeredoc,vimPythonStatement
syn keyword vimPython pydo skipwhite nextgroup=vimPythonStatement
syn keyword vimPython pyfile
syn region vimPythonStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimPythonScript,@vimContinue
VimFoldP syn region vimPythonHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimPythonScript
VimFoldP syn region vimPythonHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimPythonScript
VimFoldP syn region vimPythonHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimPythonScript
VimFoldP syn region vimPythonHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimPythonScript
" [-- python3 --] {{{3
if s:interfaces =~# 'P'
syn include @vimPython3Script syntax/python.vim
unlet b:current_syntax
endif
syn keyword vimPython3 python3 py3 skipwhite nextgroup=vimPython3Heredoc,vimPython3Statement
syn keyword vimPython3 py3do skipwhite nextgroup=vimPython3Statement
syn keyword vimPython3 py3file
syn region vimPython3Statement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimPython3Script,@vimContinue
VimFoldP syn region vimPython3Heredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimPython3Script
VimFoldP syn region vimPython3Heredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimPython3Script
VimFoldP syn region vimPython3Heredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimPython3Script
VimFoldP syn region vimPython3Heredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimPython3Script
" [-- pythonx --] {{{3
if s:interfaces =~# 'P'
if &pyxversion == 2
syn cluster vimPythonXScript contains=@vimPythonScript
else
syn cluster vimPythonXScript contains=@vimPython3Script
endif
endif
syn keyword vimPythonX pythonx pyx skipwhite nextgroup=vimPythonXHeredoc,vimPythonXStatement
syn keyword vimPythonX pyxdo skipwhite nextgroup=vimPythonXStatement
syn keyword vimPythonX pyxfile
syn region vimPythonXStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimPythonXScript,@vimContinue
VimFoldP syn region vimPythonXHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimPythonXScript
VimFoldP syn region vimPythonXHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimPythonXScript
VimFoldP syn region vimPythonXHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimPythonXScript
VimFoldP syn region vimPythonXHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimPythonXScript
" [-- ruby --] {{{3
if s:interfaces =~# 'r'
syn include @vimRubyScript syntax/ruby.vim
unlet b:current_syntax
endif
syn keyword vimRuby rub[y] skipwhite nextgroup=vimRubyHeredoc,vimRubyStatement
syn keyword vimRuby rubyd[o] skipwhite nextgroup=vimRubyStatement
syn keyword vimRuby rubyf[ile]
syn region vimRubyStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimRubyScript,@vimContinue
VimFoldr syn region vimRubyHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimRubyScript
VimFoldr syn region vimRubyHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimRubyScript
VimFoldr syn region vimRubyHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimRubyScript
VimFoldr syn region vimRubyHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\.$+
\ contains=@vimRubyScript
" [-- tcl --] {{{3
if s:interfaces =~# 't'
syn include @vimTclScript syntax/tcl.vim
unlet b:current_syntax
endif
syn keyword vimTcl tcl skipwhite nextgroup=vimTclHeredoc,vimTclStatement
syn keyword vimTcl tcld[o] skipwhite nextgroup=vimTclStatement
syn keyword vimTcl tclf[ile]
syn region vimTclStatement contained
\ start="\S"
\ skip=+\n\s*\%(\\\|["#]\\ \)+
\ end="$"
\ contains=@vimTclScript,@vimContinue
VimFoldt syn region vimTclHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\s*\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1$+
\ contains=@vimTclScript
VimFoldt syn region vimTclHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+<<\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\.$+
\ contains=@vimTclScript
VimFoldt syn region vimTclHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\s\+\z(\S\+\)\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\z2$+
\ contains=@vimTclScript
VimFoldt syn region vimTclHeredoc contained
\ matchgroup=vimScriptHeredocStart
\ start=+\%(^\z(\s*\)\S.*\)\@<=<<\s*trim\ze\s*$+
\ matchgroup=vimScriptHeredocStop
\ end=+^\z1\=\.$+
\ contains=@vimTclScript
unlet s:interfaces
2024-02-13 21:09:22 +01:00
" Beginners - Patterns that involve ^ {{{2
" =========
2024-09-19 19:51:59 +02:00
Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle extend
VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle extend
2024-07-17 19:34:14 +02:00
2024-02-13 21:09:22 +01:00
syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
2024-04-11 06:18:37 +10:00
syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
2024-06-12 03:27:53 +10:00
2024-06-15 23:06:17 +10:00
" allowed anywhere in the file
if !s:vim9script
syn match vimShebangError "^\s*\zs#!.*" display
endif
syn match vimShebang "\%^#!.*" display
2024-02-13 21:09:22 +01:00
syn match vimContinue "^\s*\zs\\"
2025-02-13 20:24:42 +01:00
syn match vimContinueComment '^\s*\zs["#]\\ .*' extend
syn match vim9ContinueComment "^\s*\zs#\\ .*" extend
2024-10-06 17:00:48 +02:00
syn cluster vimContinue contains=vimContinue,vimContinueComment
syn cluster vim9Continue contains=vimContinue,vim9ContinueComment
2025-04-26 20:14:15 +02:00
syn region vimString start='^\s*\\"' end='"' oneline keepend contains=@vimStringGroup,vimContinue
syn region vimString start="^\s*\\'" end="'" oneline keepend contains=vimQuoteEscape,vimContinue
2024-02-13 21:09:22 +01:00
syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
2024-04-11 06:18:37 +10:00
syn match vim9CommentTitleLeader '#\s\+'ms=s+1 contained
2024-02-13 21:09:22 +01:00
" Searches And Globals: {{{2
" ====================
2025-01-20 21:53:01 +01:00
VimL syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim
2024-02-13 21:09:22 +01:00
syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained
2025-01-20 21:53:01 +01:00
Vim9 syn match vim9Search '^\s*:[/?].*' contains=vim9SearchDelim
syn match vim9SearchDelim '^\s*\zs:[/?]\|[/?]$' contained contains=vimCmdSep
2024-02-27 07:10:18 +11:00
syn region vimGlobal matchgroup=Statement start='\<g\%[lobal]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
syn region vimGlobal matchgroup=Statement start='\<v\%[global]!\=/' skip='\\.' end='/' skipwhite nextgroup=vimSubst1
2024-02-13 21:09:22 +01:00
2025-04-27 15:28:30 +02:00
" Vim9 script Regions: {{{2
2024-04-11 06:18:37 +10:00
" ==================
if s:vim9script
2024-04-13 18:24:01 +02:00
syn cluster vimLegacyTop contains=TOP,vim9LegacyHeader,vim9Comment,vim9LineComment
VimFoldH syn region vim9LegacyHeader start="\%^" end="^\ze\s*vim9s\%[cript]\>" contains=@vimLegacyTop,vimComment,vimLineComment
2024-04-11 06:18:37 +10:00
2024-04-13 18:24:01 +02:00
syn keyword vim9Vim9ScriptArg noclear contained
syn keyword vim9Vim9Script vim9s[cript] nextgroup=vim9Vim9ScriptArg skipwhite
2024-04-11 06:18:37 +10:00
endif
2024-02-13 21:09:22 +01:00
" Synchronize (speed) {{{2
"============
2025-06-30 20:22:38 +02:00
exe "syn sync minlines=" .. get(g:, "vimsyn_minlines", 100)
exe "syn sync maxlines=" .. get(g:, "vimsyn_maxlines", 200)
2024-02-13 21:09:22 +01:00
syn sync linecont "^\s\+\\"
2025-05-18 20:37:34 +02:00
syn sync linebreaks=2
2024-02-13 21:09:22 +01:00
syn sync match vimAugroupSyncA groupthere NONE "\<aug\%[roup]\>\s\+[eE][nN][dD]"
" ====================
" Highlighting Settings {{{2
" ====================
if !exists("skip_vim_syntax_inits")
if !exists("g:vimsyn_noerror")
hi def link vimBehaveError vimError
hi def link vimCollClassErr vimError
hi def link vimErrSetting vimError
hi def link vimFTError vimError
hi def link vimFunctionError vimError
hi def link vimFunc vimError
hi def link vimHiAttribList vimError
hi def link vimHiCtermError vimError
hi def link vimHiKeyError vimError
hi def link vimMapModErr vimError
2025-05-31 17:52:48 +02:00
hi def link vimMarkArgError vimError
2024-06-15 23:06:17 +10:00
hi def link vimShebangError vimError
2025-04-10 19:59:22 +02:00
hi def link vimSortOptionsError Error
2024-02-13 21:09:22 +01:00
hi def link vimSubstFlagErr vimError
hi def link vimSynCaseError vimError
2025-03-10 21:04:53 +01:00
hi def link vimSyncError vimError
hi def link vimSynConcealError vimError
hi def link vimSynError vimError
hi def link vimSynFoldlevelError vimError
hi def link vimSynIskeywordError vimError
hi def link vimSynSpellError vimError
2024-02-13 21:09:22 +01:00
hi def link vimBufnrWarn vimWarn
2024-10-06 17:00:48 +02:00
hi def link vim9TypeAliasError vimError
2024-02-13 21:09:22 +01:00
endif
hi def link vimAbb vimCommand
hi def link vimAddress vimMark
2024-03-04 02:42:47 +11:00
hi def link vimAugroupBang vimBang
2024-02-13 21:09:22 +01:00
hi def link vimAugroupError vimError
hi def link vimAugroupKey vimCommand
2025-04-22 19:48:13 +02:00
hi def link vimAutocmd vimCommand
hi def link vimAutocmdBang vimBang
hi def link vimAutocmdPatternEscape Special
2024-02-13 21:09:22 +01:00
hi def link vimAutoEvent Type
2025-04-22 19:48:13 +02:00
hi def link vimAutoEventGlob Type
hi def link vimAutocmdBufferPattern Special
hi def link vimAutocmdMod Special
hi def link vimAutocmdPatternSep vimSep
2024-02-13 21:09:22 +01:00
hi def link vimBang vimOper
2024-02-27 07:10:18 +11:00
hi def link vimBehaveBang vimBang
2024-02-13 21:09:22 +01:00
hi def link vimBehaveModel vimBehave
hi def link vimBehave vimCommand
hi def link vimBracket Delimiter
2024-07-18 20:45:19 +02:00
hi def link vimCall vimCommand
2024-06-14 01:48:10 +10:00
hi def link vimCatch vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimCmplxRepeat SpecialChar
hi def link vimCommand Statement
hi def link vimComment Comment
2024-06-22 11:20:36 +02:00
hi def link vimCommentError vimError
2024-02-13 21:09:22 +01:00
hi def link vimCommentString vimString
hi def link vimCommentTitle PreProc
hi def link vimCondHL vimCommand
hi def link vimConst vimCommand
hi def link vimContinue Special
hi def link vimContinueComment vimComment
2025-04-26 20:14:15 +02:00
hi def link vimContinueString vimString
2025-02-03 18:59:09 +01:00
hi def link vimCount Number
2024-02-13 21:09:22 +01:00
hi def link vimCtrlChar SpecialChar
2025-02-03 18:59:09 +01:00
hi def link vimDebuggreedy vimCommand
2025-06-11 21:16:14 +02:00
hi def link vimDef vimCommand
hi def link vimDefBang vimBang
2024-06-22 11:20:36 +02:00
hi def link vimDefComment vim9Comment
2025-02-10 22:00:27 +01:00
hi def link vimDefParam vimVar
2024-09-02 10:03:37 +02:00
hi def link vimDelcommand vimCommand
hi def link vimDelcommandAttr vimUserCmdAttr
2025-06-11 21:16:14 +02:00
hi def link vimDelfunction vimCommand
hi def link vimDelfunctionBang vimBang
2025-04-22 19:48:13 +02:00
hi def link vimDoautocmd vimCommand
hi def link vimDoautocmdMod Special
2024-02-28 05:59:30 +11:00
hi def link vimEcho vimCommand
2024-03-15 23:45:48 +11:00
hi def link vimEchohlNone vimGroup
hi def link vimEchohl vimCommand
2025-04-26 20:14:15 +02:00
hi def link vimElse vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimElseIfErr Error
2024-03-22 06:41:10 +11:00
hi def link vimEndfunction vimCommand
hi def link vimEnddef vimCommand
2025-04-26 20:14:15 +02:00
hi def link vimEndif vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimEnvvar PreProc
hi def link vimError Error
hi def link vimEscape Special
2025-04-10 19:59:22 +02:00
hi def link vimExFilter vimCommand
hi def link vimExFilterBang vimCommand
2025-05-31 17:52:48 +02:00
hi def link vimExMark vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimFBVar vimVar
hi def link vimFgBgAttrib vimHiAttrib
hi def link vimFuncEcho vimCommand
hi def link vimFor vimCommand
2025-02-10 22:00:27 +01:00
hi def link vimForInContinue vimContinue
hi def link vimForInContinueComment vimContinueComment
2024-02-13 21:09:22 +01:00
hi def link vimFTCmd vimCommand
hi def link vimFTOption vimSynType
2025-06-11 21:16:14 +02:00
hi def link vimFunction vimCommand
hi def link vimFunctionBang vimBang
hi def link vimFunctionComment vimComment
2024-02-13 21:09:22 +01:00
hi def link vimFuncName Function
2025-06-11 21:16:14 +02:00
hi def link vimFunctionMod Special
hi def link vimFunctionParam vimVar
hi def link vimFunctionParamEquals vimOper
hi def link vimFunctionScope vimVarScope
hi def link vimFunctionSID vimNotation
2025-04-10 19:59:22 +02:00
hi def link vimGrep vimCommand
hi def link vimGrepadd vimCommand
hi def link vimGrepBang vimBang
2024-02-13 21:09:22 +01:00
hi def link vimGroupAdd vimSynOption
2025-03-10 21:04:53 +01:00
hi def link vimGroupName Normal
2024-02-13 21:09:22 +01:00
hi def link vimGroupRem vimSynOption
hi def link vimGroupSpecial Special
hi def link vimGroup Type
2025-04-10 19:59:22 +02:00
hi def link vimHelpgrep vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimHiAttrib PreProc
hi def link vimHiBang vimBang
2024-03-19 05:19:51 +11:00
hi def link vimHiClear Type
hi def link vimHiCtermColor Constant
2024-02-13 21:09:22 +01:00
hi def link vimHiCtermFgBg vimHiTerm
2024-03-19 05:19:51 +11:00
hi def link vimHiCtermfont vimHiTerm
hi def link vimHiCtermul vimHiTerm
2024-02-13 21:09:22 +01:00
hi def link vimHiCTerm vimHiTerm
hi def link vimHighlight vimCommand
hi def link vimHiGroup vimGroupName
hi def link vimHiGuiFgBg vimHiTerm
hi def link vimHiGuiFont vimHiTerm
hi def link vimHiGuiRgb vimNumber
hi def link vimHiGui vimHiTerm
hi def link vimHiNmbr Number
2025-03-10 21:04:53 +01:00
hi def link vimHiNone vimGroup
2024-02-13 21:09:22 +01:00
hi def link vimHiStartStop vimHiTerm
hi def link vimHiTerm Type
hi def link vimHLGroup vimGroup
2025-05-18 20:37:34 +02:00
hi def link vimImport vimCommand
hi def link vimImportAutoload Special
hi def link vimImportAs vimImport
2024-02-13 21:09:22 +01:00
hi def link vimInsert vimString
2024-04-11 06:18:37 +10:00
hi def link vim9KeymapLineComment vimKeymapLineComment
2024-02-13 21:09:22 +01:00
hi def link vimKeymapLineComment vimComment
hi def link vimKeymapTailComment vimComment
2025-03-28 19:36:37 +01:00
hi def link vimLambdaBrace Delimiter
2025-02-10 22:00:27 +01:00
hi def link vimLambdaOperator vimOper
2024-02-13 21:09:22 +01:00
hi def link vimLet vimCommand
2025-05-17 16:29:13 +02:00
hi def link vimLetHeredoc vimString
hi def link vimLetHeredocStart Special
hi def link vimLetHeredocStop Special
2025-04-05 15:55:36 +02:00
hi def link vimLetRegister vimRegister
2024-02-13 21:09:22 +01:00
hi def link vimLineComment vimComment
2025-05-17 16:29:13 +02:00
hi def link vimLua vimCommand
2025-04-10 19:59:22 +02:00
hi def link vimMake vimCommand
hi def link vimMakeadd vimCommand
hi def link vimMakeBang vimBang
2024-02-13 21:09:22 +01:00
hi def link vimMapBang vimBang
2025-03-07 18:49:11 +01:00
hi def link vimMapLeader vimBracket
hi def link vimMapLeaderKey vimNotation
2025-06-11 21:16:14 +02:00
hi def link vimMapModKey vimFunctionSID
2024-02-13 21:09:22 +01:00
hi def link vimMapMod vimBracket
hi def link vimMap vimCommand
hi def link vimMark Number
hi def link vimMarkNumber vimNumber
2024-07-07 20:45:37 +02:00
hi def link vimMatch vimCommand
hi def link vimMatchGroup vimGroup
hi def link vimMatchNone vimGroup
2024-02-13 21:09:22 +01:00
hi def link vimMenuBang vimBang
2024-03-10 03:43:28 +11:00
hi def link vimMenuClear Special
2024-02-13 21:09:22 +01:00
hi def link vimMenuMod vimMapMod
hi def link vimMenuName PreProc
2024-03-10 03:43:28 +11:00
hi def link vimMenu vimCommand
hi def link vimMenuNotation vimNotation
hi def link vimMenuPriority Number
hi def link vimMenuStatus Special
hi def link vimMenutranslateComment vimComment
2024-10-06 17:00:48 +02:00
hi def link vim9MethodName vimFuncName
2024-02-13 21:09:22 +01:00
hi def link vimMtchComment vimComment
2025-05-17 16:29:13 +02:00
hi def link vimMzScheme vimCommand
hi def link vimNonText NonText
2024-11-09 19:11:25 +01:00
hi def link vimNormal vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimNotation Special
hi def link vimNotFunc vimCommand
hi def link vimNotPatSep vimString
hi def link vimNumber Number
hi def link vimOperError Error
hi def link vimOper Operator
2025-02-10 22:00:27 +01:00
hi def link vimOperContinue vimContinue
hi def link vimOperContinueComment vimContinueComment
2024-02-13 21:09:22 +01:00
hi def link vimOption PreProc
2025-02-10 22:00:27 +01:00
hi def link vimOptionVar Identifier
2025-03-09 16:30:28 +01:00
hi def link vimOptionVarName Identifier
2024-02-13 21:09:22 +01:00
hi def link vimParenSep Delimiter
hi def link vimPatSepErr vimError
hi def link vimPatSepR vimPatSep
hi def link vimPatSep SpecialChar
hi def link vimPatSepZone vimString
hi def link vimPatSepZ vimPatSep
hi def link vimPattern Type
2025-05-17 16:29:13 +02:00
hi def link vimPerl vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimPlainMark vimMark
2025-06-01 18:26:39 +02:00
hi def link vimProfile vimCommand
hi def link vimProfileArg vimSpecial
hi def link vimProfileBang vimBang
hi def link vimProfdel vimCommand
hi def link vimProfdelArg vimSpecial
2025-05-17 16:29:13 +02:00
hi def link vimPython vimCommand
hi def link vimPython3 vimCommand
hi def link vimPythonX vimCommand
2025-01-10 20:02:17 +01:00
hi def link vimQuoteEscape vimEscape
2025-04-05 15:55:36 +02:00
hi def link vimRedir vimCommand
hi def link vimRedirBang vimBang
hi def link vimRedirFileOperator vimOper
hi def link vimRedirRegisterOperator vimOper
hi def link vimRedirVariableOperator vimOper
hi def link vimRedirEnd Special
hi def link vimRedirRegister vimRegister
2024-02-13 21:09:22 +01:00
hi def link vimRegister SpecialChar
2025-05-17 16:29:13 +02:00
hi def link vimRuby vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimScriptDelim Comment
2025-05-17 16:29:13 +02:00
hi def link vimScriptHeredocStart vimLetHeredocStart
hi def link vimScriptHeredocStop vimLetHeredocStop
2024-02-13 21:09:22 +01:00
hi def link vimSearch vimString
2025-01-20 21:53:01 +01:00
hi def link vimSearchDelim Delimiter
2024-02-13 21:09:22 +01:00
hi def link vimSep Delimiter
2024-07-24 20:21:22 +02:00
hi def link vimSet vimCommand
hi def link vimSetAll vimOption
hi def link vimSetBang vimBang
2025-04-03 21:39:24 +02:00
hi def link vimSetComment vimComment
2024-02-13 21:09:22 +01:00
hi def link vimSetMod vimOption
2024-07-24 20:21:22 +02:00
hi def link vimSetSep vimSep
hi def link vimSetTermcap vimOption
2024-06-15 23:06:17 +10:00
hi def link vimShebang PreProc
2024-06-14 20:16:35 +02:00
hi def link vimSleep vimCommand
hi def link vimSleepArg Constant
hi def link vimSleepBang vimBang
2025-04-10 19:59:22 +02:00
hi def link vimSort vimCommand
hi def link vimSortBang vimBang
hi def link vimSortOptions Special
2024-02-13 21:09:22 +01:00
hi def link vimSpecFile Identifier
hi def link vimSpecFileMod vimSpecFile
hi def link vimSpecial Type
hi def link vimStringCont vimString
hi def link vimString String
hi def link vimStringEnd vimString
hi def link vimStringInterpolationBrace vimEscape
hi def link vimSubst1 vimSubst
2025-05-31 17:52:48 +02:00
hi def link vimSubstCount Number
2024-02-13 21:09:22 +01:00
hi def link vimSubstDelim Delimiter
hi def link vimSubstFlags Special
hi def link vimSubstSubstr SpecialChar
hi def link vimSubstTwoBS vimString
hi def link vimSubst vimCommand
hi def link vimSynCase Type
2025-03-10 21:04:53 +01:00
hi def link vimSyncCcomment Type
hi def link vimSynCchar vimSynOption
hi def link vimSynCcharValue Character
hi def link vimSyncClear Type
hi def link vimSyncFromstart Type
2024-02-13 21:09:22 +01:00
hi def link vimSyncGroup vimGroupName
2025-03-10 21:04:53 +01:00
hi def link vimSyncGroupName vimGroupName
2024-02-13 21:09:22 +01:00
hi def link vimSyncKey Type
2025-03-10 21:04:53 +01:00
hi def link vimSyncLinebreak Type
hi def link vimSyncLinecont Type
hi def link vimSyncLines Type
hi def link vimSyncMatch Type
2024-02-13 21:09:22 +01:00
hi def link vimSyncNone Type
2025-03-10 21:04:53 +01:00
hi def link vimSynConceal Type
2024-02-13 21:09:22 +01:00
hi def link vimSynContains vimSynOption
2025-03-10 21:04:53 +01:00
hi def link vimSyncRegion Type
hi def link vimSynFoldlevel Type
hi def link vimSynIskeyword Type
hi def link vimSynIskeywordSep Delimiter
2024-02-13 21:09:22 +01:00
hi def link vimSynKeyContainedin vimSynContains
hi def link vimSynKeyOpt vimSynOption
hi def link vimSynMtchGrp vimSynOption
hi def link vimSynMtchOpt vimSynOption
hi def link vimSynNextgroup vimSynOption
hi def link vimSynNotPatRange vimSynRegPat
hi def link vimSynOption Special
hi def link vimSynPatRange vimString
2025-03-10 21:04:53 +01:00
hi def link vimSynReg Type
2024-02-13 21:09:22 +01:00
hi def link vimSynRegOpt vimSynOption
hi def link vimSynRegPat vimString
2025-03-10 21:04:53 +01:00
hi def link vimSynSpell Type
2024-02-13 21:09:22 +01:00
hi def link vimSyntax vimCommand
hi def link vimSynType vimSpecial
2025-05-17 16:29:13 +02:00
hi def link vimTcl vimCommand
2024-06-14 01:48:10 +10:00
hi def link vimThrow vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimTodo Todo
hi def link vimType Type
2025-06-24 20:23:34 +02:00
hi def link vimUniq vimCommand
hi def link vimUniqBang vimBang
hi def link vimUniqOptions Special
2024-02-13 21:09:22 +01:00
hi def link vimUnlet vimCommand
hi def link vimUnletBang vimBang
hi def link vimUnmap vimMap
2025-04-08 20:50:00 +02:00
hi def link vimUserCmd vimCommand
2024-09-02 10:03:37 +02:00
hi def link vimUserCmdAttrAddr vimSpecial
2025-04-08 20:50:00 +02:00
hi def link vimUserCmdAttrComplete vimSpecial
hi def link vimUserCmdAttrCompleteFunc vimVar
2024-09-02 10:03:37 +02:00
hi def link vimUserCmdAttrNargs vimSpecial
hi def link vimUserCmdAttrRange vimSpecial
hi def link vimUserCmdAttrKey vimUserCmdAttr
hi def link vimUserCmdAttr Special
hi def link vimUserCmdAttrError Error
2024-02-13 21:09:22 +01:00
hi def link vimUserCmdError Error
2024-09-02 10:03:37 +02:00
hi def link vimUserCmdKey vimCommand
2024-02-13 21:09:22 +01:00
hi def link vimUserFunc Normal
2025-02-10 22:00:27 +01:00
hi def link vimVar Normal
2025-03-09 16:30:28 +01:00
hi def link vimVarScope Identifier
2025-04-10 19:59:22 +02:00
hi def link vimVimgrep vimCommand
hi def link vimVimgrepadd vimCommand
hi def link vimVimgrepBang vimBang
hi def link vimVimgrepFlags Special
2025-03-09 16:30:28 +01:00
hi def link vimVimVar Identifier
hi def link vimVimVarName Identifier
2024-02-13 21:09:22 +01:00
hi def link vimWarn WarningMsg
2025-04-22 19:48:13 +02:00
hi def link vimWildcard Special
hi def link vimWildcardBraceComma vimWildcard
hi def link vimWildcardBracket vimWildcard
hi def link vimWildcardBracketCaret vimWildcard
hi def link vimWildcardBracketCharacter Normal
hi def link vimWildcardBracketCharacter Normal
hi def link vimWildcardBracketCharacterClass vimWildCard
hi def link vimWildcardBracketCollatingSymbol vimWildCard
hi def link vimWildcardBracketEnd vimWildcard
hi def link vimWildcardBracketEquivalenceClass vimWildCard
hi def link vimWildcardBracketEscape vimWildcard
hi def link vimWildcardBracketHyphen vimWildcard
hi def link vimWildcardBracketRightBracket vimWildcardBracketCharacter
hi def link vimWildcardBracketStart vimWildcard
hi def link vimWildcardEscape vimWildcard
hi def link vimWildcardInterval vimWildcard
hi def link vimWildcardQuestion vimWildcard
hi def link vimWildcardStar vimWildcard
2024-07-17 19:34:14 +02:00
2024-10-06 17:00:48 +02:00
hi def link vim9Abstract vimCommand
2024-07-17 19:34:14 +02:00
hi def link vim9Boolean Boolean
2024-10-06 17:00:48 +02:00
hi def link vim9Class vimCommand
2024-07-17 19:34:14 +02:00
hi def link vim9Comment Comment
hi def link vim9CommentError vimError
hi def link vim9CommentTitle PreProc
2025-02-10 22:00:27 +01:00
hi def link vim9ConstructorDefParam vimVar
2024-07-17 19:34:14 +02:00
hi def link vim9Const vimCommand
2024-10-06 17:00:48 +02:00
hi def link vim9ContinueComment vimContinueComment
hi def link vim9Enum vimCommand
2025-05-01 17:43:17 +02:00
hi def link vim9EnumImplementedInterfaceComment vim9Comment
hi def link vim9EnumImplements vim9Implements
hi def link vim9EnumNameComment vim9Comment
hi def link vim9EnumNameContinue vimContinue
hi def link vim9EnumNameContinueComment vim9Comment
hi def link vim9EnumValueListCommaComment vim9Comment
2024-10-06 17:00:48 +02:00
hi def link vim9Export vimCommand
hi def link vim9Extends Keyword
2024-07-17 19:34:14 +02:00
hi def link vim9Final vimCommand
hi def link vim9For vimCommand
2025-02-10 22:00:27 +01:00
hi def link vim9ForInComment vim9Comment
2024-10-06 17:00:48 +02:00
hi def link vim9Implements Keyword
hi def link vim9AbstractDef vimCommand
hi def link vim9Interface vimCommand
2025-02-10 22:00:27 +01:00
hi def link vim9LambdaOperator vimOper
hi def link vim9LambdaOperatorComment vim9Comment
2025-03-28 19:36:37 +01:00
hi def link vim9LambdaParen vimParenSep
2025-02-10 22:00:27 +01:00
hi def link vim9LhsRegister vimLetRegister
hi def link vim9LhsVariable vimVar
2024-07-17 19:34:14 +02:00
hi def link vim9LineComment vimComment
2024-10-06 17:00:48 +02:00
hi def link vim9MethodDef vimCommand
2025-03-17 20:27:13 +01:00
hi def link vim9MethodDefComment vimDefComment
2024-10-06 17:00:48 +02:00
hi def link vim9MethodNameError vimFunctionError
2024-07-17 19:34:14 +02:00
hi def link vim9Null Constant
2024-10-06 17:00:48 +02:00
hi def link vim9Public vimCommand
2025-01-20 21:53:01 +01:00
hi def link vim9Search vimString
hi def link vim9SearchDelim Delimiter
2024-10-06 17:00:48 +02:00
hi def link vim9Static vimCommand
hi def link vim9Super Identifier
hi def link vim9This Identifier
hi def link vim9Type vimCommand
hi def link vim9TypeEquals vimOper
2024-07-17 19:34:14 +02:00
hi def link vim9Variable vimVar
2025-06-10 21:02:43 +02:00
hi def link vim9VariableType vimType
2024-10-06 17:00:48 +02:00
hi def link vim9Var vimCommand
2024-07-17 19:34:14 +02:00
hi def link vim9Vim9ScriptArg Special
2024-10-06 17:00:48 +02:00
hi def link vim9Vim9Script vimCommand
2025-02-23 15:48:52 +01:00
hi def link vimCompilerSet vimCommand
hi def link vimSynMenu vimCommand
hi def link vimSynMenuPath vimMenuName
2024-02-13 21:09:22 +01:00
endif
" Current Syntax Variable: {{{2
let b:current_syntax = "vim"
" ---------------------------------------------------------------------
" Cleanup: {{{1
2024-07-17 19:34:14 +02:00
delc Vim9
delc VimL
2024-02-13 21:09:22 +01:00
delc VimFolda
2024-10-06 17:00:48 +02:00
delc VimFoldc
delc VimFolde
2024-02-13 21:09:22 +01:00
delc VimFoldf
2024-04-13 18:24:01 +02:00
delc VimFoldh
delc VimFoldH
2024-10-06 17:00:48 +02:00
delc VimFoldi
2024-02-13 21:09:22 +01:00
delc VimFoldl
delc VimFoldm
delc VimFoldp
delc VimFoldP
delc VimFoldr
delc VimFoldt
let &cpo = s:keepcpo
2024-04-11 06:18:37 +10:00
unlet s:keepcpo s:vim9script
2024-03-10 04:01:22 +11:00
" vim:ts=18 fdm=marker ft=vim