runtime(vim): Update base syntax and generator, improve command/function distinction

- Match Ex command modifiers and functions with the same name correctly.
  E.g., :browse and browse().
- Match full :eval command.

closes: #17789

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Doug Kearns
2025-07-18 20:12:29 +02:00
committed by Christian Brabandt
parent 2e58b7684f
commit 2f7c957c8d
31 changed files with 173 additions and 73 deletions

View File

@ -1,7 +1,7 @@
" Vim syntax file generator " Vim syntax file generator
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi (h_east) " Maintainer: Hirohito Higashi (h_east)
" Last Change: 2025 Jul 03 " Last Change: 2025 Jul 18
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
@ -234,7 +234,10 @@ function s:parse_vim_command(cmd)
endtry endtry
endfunc endfunc
function s:get_cmd_modifiers() function s:memoize_cmd_modifiers()
let modifiers = []
function _() closure
if empty(modifiers)
try try
let file_name = $VIM_SRCDIR .. '/ex_docmd.c' let file_name = $VIM_SRCDIR .. '/ex_docmd.c'
@ -247,11 +250,14 @@ function s:get_cmd_modifiers()
put put
1delete _ 1delete _
let modifiers = []
let list = [] let list = []
for line in getline(1, line('$')) for line in getline(1, line('$'))
let list = matchlist(line, '^\s*{"\(\w\+\)".*') let list = matchlist(line, '^\s*{"\(\w\+\)".*')
" :browse and :confirm handled separately as lower priority matches
" because they have same-named builtin functions
if index(['browse', 'confirm'], list[1]) == -1
call add(modifiers, copy(list[1])) call add(modifiers, copy(list[1]))
endif
endfor endfor
quit! quit!
@ -260,13 +266,16 @@ function s:get_cmd_modifiers()
throw 'cmd modifiers list is empty' throw 'cmd modifiers list is empty'
endif endif
return modifiers
catch /.*/ catch /.*/
call s:err_gen('') call s:err_gen('')
throw 'exit' throw 'exit'
endtry endtry
endif
return modifiers
endfunction endfunction
return function("_")
endfunction
let s:get_cmd_modifiers = s:memoize_cmd_modifiers()
function s:get_vim_command_type(cmd_name) function s:get_vim_command_type(cmd_name)
" Return value: " Return value:
@ -296,10 +305,13 @@ function s:get_vim_command_type(cmd_name)
behave behave
call call
catch catch
chdir
class class
copy
debuggreedy debuggreedy
def def
delcommand delcommand
delete
delfunction delfunction
doautoall doautoall
doautocmd doautocmd
@ -319,6 +331,7 @@ function s:get_vim_command_type(cmd_name)
endif endif
endinterface endinterface
enum enum
eval
execute execute
export export
filetype filetype
@ -333,6 +346,7 @@ function s:get_vim_command_type(cmd_name)
import import
interface interface
insert insert
join
k k
let let
loadkeymap loadkeymap
@ -378,8 +392,10 @@ function s:get_vim_command_type(cmd_name)
smagic smagic
snomagic snomagic
sort sort
split
static static
substitute substitute
swapname
syntax syntax
tcl tcl
tcldo tcldo

View File

@ -2,7 +2,7 @@
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com> " Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com> " Doug Kearns <dougkearns@gmail.com>
" Last Change: 2025 Jul 17 " Last Change: 2025 Jul 18
" Former Maintainer: Charles E. Campbell " Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY. " DO NOT CHANGE DIRECTLY.
@ -34,10 +34,22 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2 " regular vim commands {{{2
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang' " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
" Lower priority :syn-match to allow for :command/function() distinction
syn match vimCommand "\<chd\%[ir]\>" nextgroup=vimBang
syn match vimCommand "\<co\%[py]\>" nextgroup=vimBang
syn match vimCommand "\<d\%[elete]\>" nextgroup=vimBang
syn match vimCommand "\<j\%[oin]\>" nextgroup=vimBang
syn match vimCommand "\<sp\%[lit]\>" nextgroup=vimBang
syn match vimCommand "\<sw\%[apname]\>" nextgroup=vimBang
" GEN_SYN_VIM: vimCommand modifier, START_STR='syn keyword vimCommandModifier', END_STR='skipwhite nextgroup=vimCommandModifierBang,@vimCmdList' " GEN_SYN_VIM: vimCommand modifier, START_STR='syn keyword vimCommandModifier', END_STR='skipwhite nextgroup=vimCommandModifierBang,@vimCmdList'
" :filter is handled specially elsewhere " :filter is handled specially elsewhere
syn match vimCommandModifierBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList syn match vimCommandModifierBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList
" Lower priority :syn-match to allow for :command/function() distinction
syn match vimCommand "\<bro\%[wse]\>" skipwhite nextgroup=vimCommandModifierBang,@vimCmdList
syn match vimCommand "\<conf\%[irm]\>" skipwhite nextgroup=vimCommandModifierBang,@vimCmdList
" Lower priority for _new_ to distinguish constructors from the command. " Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!" syn match vimCommand contained "\<new\>(\@!"
syn match vimCommand contained "\<z[-+^.=]\=\>" syn match vimCommand contained "\<z[-+^.=]\=\>"
@ -230,7 +242,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
syn case match syn case match
" All vimCommands are contained by vimIsCommand. {{{2 " All vimCommands are contained by vimIsCommand. {{{2
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1 syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@ -1245,6 +1257,16 @@ syn region vimExecute
\ contains=@vimContinue,@vimExprList \ contains=@vimContinue,@vimExprList
\ transparent \ transparent
syn region vimEval
\ matchgroup=vimCommand
\ start="\<ev\%[al]\>"
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
\ end="\ze|"
\ excludenl end="$"
\ nextgroup=vimCmdSep
\ contains=@vimContinue,@vimExprList
\ transparent
" Filter: {{{2 " Filter: {{{2
" ====== " ======
syn match vimExFilter "\<filt\%[er]\>" skipwhite nextgroup=vimExFilterBang,vimExFilterPattern syn match vimExFilter "\<filt\%[er]\>" skipwhite nextgroup=vimExFilterBang,vimExFilterPattern
@ -2067,7 +2089,7 @@ unlet s:interfaces
" (following Gautam Iyer's suggestion) " (following Gautam Iyer's suggestion)
" ========================== " ==========================
syn match vimFunc contained "\<\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName syn match vimFunc contained "\<\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName
syn match vimUserFunc contained "\.\@1<=\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName syn match vimUserFunc contained "\.\@1<=\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen
syn match vimUserFunc contained "\<\%([[:upper:]_]\|\%(\h\w*\.\)\+\h\)\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vim9MethodName,vim9Super,vim9This syn match vimUserFunc contained "\<\%([[:upper:]_]\|\%(\h\w*\.\)\+\h\)\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vim9MethodName,vim9Super,vim9This
syn match vimUserFunc contained "\<\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope syn match vimUserFunc contained "\<\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope
syn match vimUserFunc contained "\%(\<[sgbwtlav]:\|<[sS][iI][dD]>\)\%(\h\w*\.\)*\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimNotation syn match vimUserFunc contained "\%(\<[sgbwtlav]:\|<[sS][iI][dD]>\)\%(\h\w*\.\)*\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimNotation
@ -2224,6 +2246,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimEnvvar PreProc hi def link vimEnvvar PreProc
hi def link vimError Error hi def link vimError Error
hi def link vimEscape Special hi def link vimEscape Special
hi def link vimEval vimCommand
hi def link vimExFilter vimCommand hi def link vimExFilter vimCommand
hi def link vimExFilterBang vimBang hi def link vimExFilterBang vimBang
hi def link vimExMark vimCommand hi def link vimExMark vimCommand

View File

@ -10,7 +10,7 @@
|v+0#af5f00255&|a|r| +0#0000000&|b|r|o|w|s|e| |=+0#af5f00255&| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51 |v+0#af5f00255&|a|r| +0#0000000&|b|r|o|w|s|e| |=+0#af5f00255&| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@51
|c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@59 |c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@59
|#+0#0000e05&| |f|u|n|c|t|i|o|n| +0#0000000&@64 |#+0#0000e05&| |f|u|n|c|t|i|o|n| +0#0000000&@64
|b+0#af5f00255&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@64 |b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@64
|#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65 |#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65
|b+0#af5f00255&|r|o|w|s|e| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63 |b+0#af5f00255&|r|o|w|s|e| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63
@75 @75

View File

@ -13,7 +13,7 @@
|v+0#af5f00255&|a|r| +0#0000000&|c|o|n|f|i|r|m| |=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@49 |v+0#af5f00255&|a|r| +0#0000000&|c|o|n|f|i|r|m| |=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@49
|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@58 |c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@58
|#+0#0000e05&| |f|u|n|c|t|i|o|n| +0#0000000&@64 |#+0#0000e05&| |f|u|n|c|t|i|o|n| +0#0000000&@64
|c+0#af5f00255&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63 |c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63
|#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65 |#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65
|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62 |c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62
@75 @75

View File

@ -17,4 +17,4 @@
|#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65 |#+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65
|i+0#af5f00255&|f| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&||| |.+0#af5f00255&@1| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@54 |i+0#af5f00255&|f| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&||| |.+0#af5f00255&@1| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@54
@75 @75
@57|1|6|3|,|0|-|1| @6|5|3|%| @57|1|6|3|,|0|-|1| @6|5|2|%|

View File

@ -17,4 +17,4 @@
@75 @75
|e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|b|s|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62 |e+0#af5f00255&|c|h|o| +0#0000000&|a+0#00e0e07&|b|s|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62
|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|a+0#00e0e07&|b|s|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&@1| +0#0000000&@60 |e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|a+0#00e0e07&|b|s|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&@1| +0#0000000&@60
@57|1|8|1|,|1| @8|5|9|%| @57|1|8|1|,|1| @8|5|8|%|

View File

@ -17,4 +17,4 @@
|v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|g+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60 |c+0#af5f00255&|a|l@1| +0#0000000&|g+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60
@75 @75
@57|1|9@1|,|1| @8|6|5|%| @57|1|9@1|,|1| @8|6|4|%|

View File

@ -17,4 +17,4 @@
|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60 |m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60
@75 @75
|v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48 |v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48
@57|2|1|7|,|1| @8|7|1|%| @57|2|1|7|,|1| @8|7|0|%|

View File

@ -17,4 +17,4 @@
|v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48 |v+0#af5f00255&|a|r| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48
|c+0#af5f00255&|a|l@1| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53 |c+0#af5f00255&|a|l@1| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53
|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@58 |v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@58
@57|2|3|5|,|1| @8|7@1|%| @57|2|3|5|,|1| @8|7|6|%|

View File

@ -17,4 +17,4 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|w+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|w+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|v+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|v+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
@57|2|5|3|,|1| @8|8|3|%| @57|2|5|3|,|1| @8|8|2|%|

View File

@ -17,4 +17,4 @@
|t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@60 |t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@60
|v+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@60 |v+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@60
@75 @75
@57|2|7|1|,|1| @8|8|9|%| @57|2|7|1|,|1| @8|8@1|%|

View File

@ -14,7 +14,7 @@
|#+0#0000e05&| |c|h|a|i|n|e|d| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50 |#+0#0000e05&| |c|h|a|i|n|e|d| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
@75 @75
|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|b+0#0000001#ffff4012|a|r|(+0#e000e06#ffffff0|)| +0#0000000&@56 |m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|b+0#0000001#ffff4012|a|r|(+0#e000e06#ffffff0|)| +0#0000000&@56
|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@49
@75 @75
@75 @75
|#+0#0000e05&| |I|s@1|u|e| |1|6|7|2|1| |(|V|i|m| |s|c|r|i|p|t| |h|i|g|h|l|i|g|h|t| |o|f| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| |a|f|t|e|r| |||)| +0#0000000&@10 @57|2|8|9|,|1| @8|9|4|%|
@57|2|8|9|,|1| @8|9|5|%|

View File

@ -1,9 +1,10 @@
|#+0#0000e05#ffffff0| |I|s@1|u|e| |1|6|7|2|1| |(|V|i|m| |s|c|r|i|p|t| |h|i|g|h|l|i|g|h|t| |o|f| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| |a|f|t|e|r| |||)| +0#0000000&@10 | +0&#ffffff0@74
|#+0#0000e05&| |I|s@1|u|e| |1|6|7|2|1| |(|V|i|m| |s|c|r|i|p|t| |h|i|g|h|l|i|g|h|t| |o|f| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| |a|f|t|e|r| |||)| +0#0000000&@10
@75 @75
|&+0#00e0e07&|d|i|r|e|c|t|o|r|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|s|w|a|p|/|'| +0#0000000&@35 |&+0#00e0e07&|d|i|r|e|c|t|o|r|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|s|w|a|p|/|'| +0#0000000&@35
|&+0#00e0e07&|b|a|c|k|u|p|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|b|a|c|k|u|p|/@1|'| +0#0000000&@32 |&+0#00e0e07&|b|a|c|k|u|p|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|b|a|c|k|u|p|/@1|'| +0#0000000&@32
|&+0#00e0e07&|u|n|d|o|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|u|n|d|o|/@1|'| +0#0000000&@36 >&+0#00e0e07&|u|n|d|o|d|i|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'|{+0#e000e06&|$|M|Y|V|I|M|D|I|R|}|/+0#e000002&|.|d|a|t|a|/|u|n|d|o|/@1|'| +0#0000000&@36
>i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|)+0#e000e06&| +0#0000000&@2||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&@2||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|)+0#e000e06&| +0#0000000&@2||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|u|n|d|o|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&@2||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14
|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|b|a|c|k|u|p|d|i|r|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14
|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|i+0#00e0e07&|s|d|i|r|e|c|t|o|r|y|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|)+0#e000e06&| +0#0000000&||| |m+0#00e0e07&|k|d|i|r|(+0#e000e06&|&+0#00e0e07&|d|i|r|e|c|t|o|r|y|,+0#0000000&| |"+0#e000002&|p|"|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@14
@75 @75
@ -11,10 +12,9 @@
|#+0#0000e05&| |I|s@1|u|e| |#|1|7@1|6@1| |(|v|a|l|i|d| |f|u|n|c|t|i|o|n| |c|a|l@1| |h|i|g|h|l|i|g|h|t|e|d| |a|s| |e|r@1|o|r|)| +0#0000000&@17 |#+0#0000e05&| |I|s@1|u|e| |#|1|7@1|6@1| |(|v|a|l|i|d| |f|u|n|c|t|i|o|n| |c|a|l@1| |h|i|g|h|l|i|g|h|t|e|d| |a|s| |e|r@1|o|r|)| +0#0000000&@17
|| @73 || @73
|m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@59 |m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@59
|m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@52
@75 @75
|~+0#4040ff13&| @73 |~+0#4040ff13&| @73
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73
|~| @73
| +0#0000000&@56|3|0|7|,|1| @8|B|o|t| | +0#0000000&@56|3|0|7|,|1| @8|B|o|t|

View File

@ -0,0 +1,20 @@
>"+0#0000e05#ffffff0| |V|i|m| |:|e|v|a|l| |c|o|m@1|a|n|d| +0#0000000&@55
@75
@75
|e+0#af5f00255&|v|a|l| +0#0000000&|"+0#e000002&|F|o@1|"|-+0#af5f00255&|>|a+0#00e0e07&|p@1|e|n|d|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@53
@75
|e+0#af5f00255&|v|a|l| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@64
@6|\+0#e000e06&| +0#0000000&|-+0#af5f00255&|>|a+0#00e0e07&|p@1|e|n|d|(+0#e000e06&| +0#0000000&@57
@6|\+0#e000e06&| +0#0000000&|0+0#e000002&| +0#0000000&@65
@6|\+0#e000e06&| +0#0000000&|)+0#e000e06&| +0#0000000&@65
@75
|e+0#af5f00255&|v|a|l| +0#0000000&|"+0#e000002&|F|o@1|"|-+0#af5f00255&|>|a+0#00e0e07&|p@1|e|n|d|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@40
@75
|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&|"+0#e000002&|F|o@1|"|-+0#af5f00255&|>|a+0#00e0e07&|p@1|e|n|d|(+0#e000e06&|0+0#e000002&|)+0#e000e06&| +0#0000000&@40
@75
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
| +0#0000000&@56|1|,|1| @10|A|l@1|

View File

@ -17,4 +17,4 @@
|"+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65 |"+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65
|e+0#af5f00255&|x|e|c|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63 |e+0#af5f00255&|x|e|c|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@63
|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62 |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@62
@57|5@1|,|1| @9|1|9|%| @57|5@1|,|1| @9|1|8|%|

View File

@ -17,4 +17,4 @@
|"+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65 |"+0#0000e05&| |c|o|m@1|a|n|d| +0#0000000&@65
|i+0#af5f00255&|n|s|e|r|t| +0#0000000&@68 |i+0#af5f00255&|n|s|e|r|t| +0#0000000&@68
|.+0#af5f00255&| +0#0000000&@73 |.+0#af5f00255&| +0#0000000&@73
@57|7|3|,|1| @9|2|6|%| @57|7|3|,|1| @9|2|5|%|

View File

@ -17,4 +17,4 @@
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|m|a|t|c|h| |=+0#af5f00255&| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53 |l+0#af5f00255&|e|t| +0#0000000&|m|a|t|c|h| |=+0#af5f00255&| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53
|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60 |c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60
@57|9|1|,|1| @9|3@1|%| @57|9|1|,|1| @9|3|2|%|

View File

@ -17,4 +17,4 @@
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|s|u|b|s|t|i|t|u|t|e| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@43 |l+0#af5f00255&|e|t| +0#0000000&|s|u|b|s|t|i|t|u|t|e| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@43
|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
@57|1|0|9|,|1| @8|4|0|%| @57|1|0|9|,|1| @8|3|9|%|

View File

@ -17,4 +17,4 @@
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|u|n|i|q| |=+0#af5f00255&| +0#0000000&|u+0#00e0e07&|n|i|q|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |l+0#af5f00255&|e|t| +0#0000000&|u|n|i|q| |=+0#af5f00255&| +0#0000000&|u+0#00e0e07&|n|i|q|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|u+0#00e0e07&|n|i|q|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@61 |c+0#af5f00255&|a|l@1| +0#0000000&|u+0#00e0e07&|n|i|q|(+0#e000e06&|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@61
@57|1|2|7|,|1| @8|4|7|%| @57|1|2|7|,|1| @8|4|6|%|

View File

@ -17,4 +17,4 @@
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|e|c|h|o| |=+0#af5f00255&| +0#0000000&|e+0#ffffff16#ff404010|c|h|o|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |l+0#af5f00255&|e|t| +0#0000000&|e|c|h|o| |=+0#af5f00255&| +0#0000000&|e+0#ffffff16#ff404010|c|h|o|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#ffffff16#ff404010|c|h|o|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@61 |c+0#af5f00255&|a|l@1| +0#0000000&|e+0#ffffff16#ff404010|c|h|o|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@61
@57|1|4|5|,|0|-|1| @6|5|4|%| @57|1|4|5|,|0|-|1| @6|5|3|%|

View File

@ -17,4 +17,4 @@
|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)@1| +0#0000000&@62 |e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)@1| +0#0000000&@62
|e+0#af5f00255&|c|h|o| +0#0000000&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&|++0#af5f00255&| +0#0000000&|b|a|r| @58 |e+0#af5f00255&|c|h|o| +0#0000000&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&|++0#af5f00255&| +0#0000000&|b|a|r| @58
|e+0#af5f00255&|c|h|o| +0#0000000&|b|a|r| |++0#af5f00255&| +0#0000000&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@58 |e+0#af5f00255&|c|h|o| +0#0000000&|b|a|r| |++0#af5f00255&| +0#0000000&|F+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@58
@57|1|6|3|,|0|-|1| @6|6|1|%| @57|1|6|3|,|0|-|1| @6|6|0|%|

View File

@ -17,4 +17,4 @@
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|t+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|t+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60 |c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@60
@57|1|8|1|,|1| @8|6|8|%| @57|1|8|1|,|1| @8|6|7|%|

View File

@ -17,4 +17,4 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@55
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48 |l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|g+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48
@57|1|9@1|,|1| @8|7|5|%| @57|1|9@1|,|1| @8|7|4|%|

View File

@ -17,4 +17,4 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|a+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53 |c+0#af5f00255&|a|l@1| +0#0000000&|a+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@53
@75 @75
|l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48 |l+0#af5f00255&|e|t| +0#0000000&|f|o@1| |=+0#af5f00255&| +0#0000000&|v+0#00e0e07&|:|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|4+0#e000002&|2|)+0#e000e06&| +0#0000000&@48
@57|2|1|7|,|0|-|1| @6|8|2|%| @57|2|1|7|,|0|-|1| @6|8|1|%|

View File

@ -17,4 +17,4 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|w+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|w+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|t+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
|c+0#af5f00255&|a|l@1| +0#0000000&|l+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55 |c+0#af5f00255&|a|l@1| +0#0000000&|l+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@55
@57|2|3|5|,|1| @8|8|9|%| @57|2|3|5|,|1| @8|8@1|%|

View File

@ -17,4 +17,4 @@
|c+0#af5f00255&|a|l@1| +0#0000000&|g+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|#|s|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@44 |c+0#af5f00255&|a|l@1| +0#0000000&|g+0#00e0e07&|:|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|#|s|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@44
@75 @75
@75 @75
@57|2|5|3|,|0|-|1| @6|9|6|%| @57|2|5|3|,|0|-|1| @6|9|5|%|

View File

@ -2,11 +2,13 @@
|"+0#0000e05&| |c|h|a|i|n|e|d| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50 |"+0#0000e05&| |c|h|a|i|n|e|d| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
@75 @75
|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|b+0#0000001#ffff4012|a|r|(+0#e000e06#ffffff0|)| +0#0000000&@51 |c+0#af5f00255&|a|l@1| +0#0000000&|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|b+0#0000001#ffff4012|a|r|(+0#e000e06#ffffff0|)| +0#0000000&@51
@75 |c+0#af5f00255&|a|l@1| +0#0000000&|m+0#0000001#ffff4012|o|d|u|l|e|.|f|o@1|(+0#e000e06#ffffff0|)|.+0#af5f00255&|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@44
> @74 > @74
@75
|"+0#0000e05&| |I|s@1|u|e| |#|1|7@1|6@1| |(|v|a|l|i|d| |f|u|n|c|t|i|o|n| |c|a|l@1| |h|i|g|h|l|i|g|h|t|e|d| |a|s| |e|r@1|o|r|)| +0#0000000&@17 |"+0#0000e05&| |I|s@1|u|e| |#|1|7@1|6@1| |(|v|a|l|i|d| |f|u|n|c|t|i|o|n| |c|a|l@1| |h|i|g|h|l|i|g|h|t|e|d| |a|s| |e|r@1|o|r|)| +0#0000000&@17
|| @73 || @73
|c+0#af5f00255&|a|l@1| +0#0000000&|m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@54 |c+0#af5f00255&|a|l@1| +0#0000000&|m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|f+0#0000001#ffff4012|o@1|(+0#e000e06#ffffff0|)| +0#0000000&@54
|c+0#af5f00255&|a|l@1| +0#0000000&|m|o|d|u|l|e|[|0+0#e000002&|]+0#0000000&|.+0#af5f00255&|s+0#0000001#ffff4012|u|b|s|t|i|t|u|t|e|(+0#e000e06#ffffff0|)| +0#0000000&@47
@75 @75
|~+0#4040ff13&| @73 |~+0#4040ff13&| @73
|~| @73 |~| @73
@ -15,6 +17,4 @@
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73 |~| @73
|~| @73
|~| @73
| +0#0000000&@56|2|7|1|,|0|-|1| @6|B|o|t| | +0#0000000&@56|2|7|1|,|0|-|1| @6|B|o|t|

View File

@ -297,6 +297,7 @@ g:substitute#substitute()
# chained function calls # chained function calls
module.foo().bar() module.foo().bar()
module.foo().substitute()
# Issue 16721 (Vim script highlight of builtin function after |) # Issue 16721 (Vim script highlight of builtin function after |)
@ -312,4 +313,5 @@ if !isdirectory(&directory) | mkdir(&directory, "p") | endif
# Issue #17766 (valid function call highlighted as error) # Issue #17766 (valid function call highlighted as error)
module[0].foo() module[0].foo()
module[0].substitute()

View File

@ -0,0 +1,14 @@
" Vim :eval command
eval "Foo"->append(0)
eval "Foo"
\ ->append(
\ 0
\ )
eval "Foo"->append(0) | echo "Foo"
echo "Foo" | eval "Foo"->append(0)

View File

@ -267,9 +267,11 @@ call g:substitute#substitute()
" chained function calls " chained function calls
call module.foo().bar() call module.foo().bar()
call module.foo().substitute()
" Issue #17766 (valid function call highlighted as error) " Issue #17766 (valid function call highlighted as error)
call module[0].foo() call module[0].foo()
call module[0].substitute()

View File

@ -2,7 +2,7 @@
" Language: Vim script " Language: Vim script
" Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com> " Maintainer: Hirohito Higashi <h.east.727 ATMARK gmail.com>
" Doug Kearns <dougkearns@gmail.com> " Doug Kearns <dougkearns@gmail.com>
" Last Change: 2025 Jul 17 " Last Change: 2025 Jul 18
" Former Maintainer: Charles E. Campbell " Former Maintainer: Charles E. Campbell
" DO NOT CHANGE DIRECTLY. " DO NOT CHANGE DIRECTLY.
@ -33,17 +33,29 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2 " regular vim commands {{{2
" GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang' " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang'
syn keyword vimCommand contained al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] cons[t] cope[n] cp[revious] cpf[ile] nextgroup=vimBang syn keyword vimCommand contained al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bf[irst] bl[ast] bm[odified] bn[ext] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] changes che[ckpath] checkt[ime] chi[story] cl[ist] clip[reset] cla[st] clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] col[der] colo[rscheme] com[mand] comc[lear] comp[iler] con[tinue] conf[irm] cons[t] cope[n] cp[revious] cpf[ile] nextgroup=vimBang
syn keyword vimCommand contained cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] defc[ompile] defe[r] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ev[al] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] hi[ghlight] his[tory] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] j[oin] ju[mps] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] nextgroup=vimBang syn keyword vimCommand contained cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] delm[arks] deb[ug] defc[ompile] defe[r] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] em[enu] endfo[r] endt[ry] endw[hile] ene[w] ex exi[t] exu[sage] f[ile] files fin[d] fina[lly] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpt[ags] ha[rdcopy] hi[ghlight] his[tory] ij[ump] il[ist] int[ro] ip[ut] is[earch] isp[lit] ju[mps] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] nextgroup=vimBang
syn keyword vimCommand contained lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lex[pr] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] nextgroup=vimBang syn keyword vimCommand contained lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lex[pr] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lw[indow] ls m[ove] marks menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] n[ext] nb[key] nbc[lose] nbs[tart] noh[lsearch] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pb[uffer] pc[lose] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] q[uit] quita[ll] qa[ll] nextgroup=vimBang
syn keyword vimCommand contained quita[ll] qa[ll] r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] nextgroup=vimBang syn keyword vimCommand contained r[ead] rec[over] red[o] redr[aw] redraws[tatus] redrawt[abline] redrawtabp[anel] reg[isters] res[ize] ret[ab] rew[ind] ri[ght] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] scr[iptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] sim[alt] sig[n] sla[st] sn[ext] so[urce] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sre[wind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tabc[lose] nextgroup=vimBang
syn keyword vimCommand contained t tN[ext] ta[g] tags tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] te[aroff] ter[minal] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] up[date] v[global] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wl[restore] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang syn keyword vimCommand contained tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] te[aroff] ter[minal] tf[irst] tj[ump] tl[ast] tn[ext] tp[revious] tr[ewind] try ts[elect] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] up[date] v[global] ve[rsion] vi[sual] vie[w] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wi[nsize] winc[md] wind[o] winp[os] wl[restore] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i nextgroup=vimBang
" Lower priority :syn-match to allow for :command/function() distinction
syn match vimCommand "\<chd\%[ir]\>" nextgroup=vimBang
syn match vimCommand "\<co\%[py]\>" nextgroup=vimBang
syn match vimCommand "\<d\%[elete]\>" nextgroup=vimBang
syn match vimCommand "\<j\%[oin]\>" nextgroup=vimBang
syn match vimCommand "\<sp\%[lit]\>" nextgroup=vimBang
syn match vimCommand "\<sw\%[apname]\>" nextgroup=vimBang
" GEN_SYN_VIM: vimCommand modifier, START_STR='syn keyword vimCommandModifier', END_STR='skipwhite nextgroup=vimCommandModifierBang,@vimCmdList' " GEN_SYN_VIM: vimCommand modifier, START_STR='syn keyword vimCommandModifier', END_STR='skipwhite nextgroup=vimCommandModifierBang,@vimCmdList'
syn keyword vimCommandModifier abo[veleft] bel[owright] bo[tright] bro[wse] conf[irm] hid[e] hor[izontal] kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] lefta[bove] leg[acy] loc[kmarks] noa[utocmd] nos[wapfile] rightb[elow] san[dbox] sil[ent] tab to[pleft] uns[ilent] verb[ose] vert[ical] vim9[cmd] skipwhite nextgroup=vimCommandModifierBang,@vimCmdList syn keyword vimCommandModifier abo[veleft] bel[owright] bo[tright] hid[e] hor[izontal] kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] lefta[bove] leg[acy] loc[kmarks] noa[utocmd] nos[wapfile] rightb[elow] san[dbox] sil[ent] tab to[pleft] uns[ilent] verb[ose] vert[ical] vim9[cmd] skipwhite nextgroup=vimCommandModifierBang,@vimCmdList
" :filter is handled specially elsewhere " :filter is handled specially elsewhere
syn match vimCommandModifierBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList syn match vimCommandModifierBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList
" Lower priority :syn-match to allow for :command/function() distinction
syn match vimCommand "\<bro\%[wse]\>" skipwhite nextgroup=vimCommandModifierBang,@vimCmdList
syn match vimCommand "\<conf\%[irm]\>" skipwhite nextgroup=vimCommandModifierBang,@vimCmdList
" Lower priority for _new_ to distinguish constructors from the command. " Lower priority for _new_ to distinguish constructors from the command.
syn match vimCommand contained "\<new\>(\@!" syn match vimCommand contained "\<new\>(\@!"
syn match vimCommand contained "\<z[-+^.=]\=\>" syn match vimCommand contained "\<z[-+^.=]\=\>"
@ -284,7 +296,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi
syn case match syn case match
" All vimCommands are contained by vimIsCommand. {{{2 " All vimCommands are contained by vimIsCommand. {{{2
syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,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,vimSynColor,vimSynLink,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl
syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var
syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc syn match vimCmdSep "\\\@1<!|" skipwhite nextgroup=@vimCmdList,vimSubst1,@vimFunc
syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1 syn match vimCmdSep ":\+" skipwhite nextgroup=@vimCmdList,vimSubst1
@ -1303,6 +1315,16 @@ syn region vimExecute
\ contains=@vimContinue,@vimExprList \ contains=@vimContinue,@vimExprList
\ transparent \ transparent
syn region vimEval
\ matchgroup=vimCommand
\ start="\<ev\%[al]\>"
\ skip=+\\|\|||\|\n\s*\%(\\\|["#]\\ \)+
\ end="\ze|"
\ excludenl end="$"
\ nextgroup=vimCmdSep
\ contains=@vimContinue,@vimExprList
\ transparent
" Filter: {{{2 " Filter: {{{2
" ====== " ======
syn match vimExFilter "\<filt\%[er]\>" skipwhite nextgroup=vimExFilterBang,vimExFilterPattern syn match vimExFilter "\<filt\%[er]\>" skipwhite nextgroup=vimExFilterBang,vimExFilterPattern
@ -2129,7 +2151,7 @@ unlet s:interfaces
" (following Gautam Iyer's suggestion) " (following Gautam Iyer's suggestion)
" ========================== " ==========================
syn match vimFunc contained "\<\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName syn match vimFunc contained "\<\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName
syn match vimUserFunc contained "\.\@1<=\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimFuncName syn match vimUserFunc contained "\.\@1<=\l\w*\ze\s*(" skipwhite nextgroup=vimOperParen
syn match vimUserFunc contained "\<\%([[:upper:]_]\|\%(\h\w*\.\)\+\h\)\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vim9MethodName,vim9Super,vim9This syn match vimUserFunc contained "\<\%([[:upper:]_]\|\%(\h\w*\.\)\+\h\)\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vim9MethodName,vim9Super,vim9This
syn match vimUserFunc contained "\<\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope syn match vimUserFunc contained "\<\%(g:\)\=\%(\h\w*#\)\+\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope
syn match vimUserFunc contained "\%(\<[sgbwtlav]:\|<[sS][iI][dD]>\)\%(\h\w*\.\)*\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimNotation syn match vimUserFunc contained "\%(\<[sgbwtlav]:\|<[sS][iI][dD]>\)\%(\h\w*\.\)*\h\w*\ze\s*(" skipwhite nextgroup=vimOperParen contains=vimVarScope,vimNotation
@ -2286,6 +2308,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimEnvvar PreProc hi def link vimEnvvar PreProc
hi def link vimError Error hi def link vimError Error
hi def link vimEscape Special hi def link vimEscape Special
hi def link vimEval vimCommand
hi def link vimExFilter vimCommand hi def link vimExFilter vimCommand
hi def link vimExFilterBang vimBang hi def link vimExFilterBang vimBang
hi def link vimExMark vimCommand hi def link vimExMark vimCommand