runtime(vim): Update base-syntax, improve function definition highlighting 
(#14203)

Commit: 
https://github.com/vim/vim/commit/35e6f4ca27c8115c606f265e4b09e11db01c970d
Author: dkearns <dougkea...@gmail.com>
Date:   Fri Mar 22 06:41:10 2024 +1100

    runtime(vim): Update base-syntax, improve function definition highlighting 
(https://github.com/vim/vim/issues/14203)
    
    Improve function definition highlighting.
    
    - Match bang and function modifiers - abort etc.
    - Only match valid scope modifiers.
    - Match listing commands.
    - Don't match ex commands in function names.
    - Split function syntax groups into :func and :def subgroups.
    - Match Vim9-script parameter and return types.
    - Limit legacy-script and Vim9-script comments to :func and :def
      definitions, respectively.
    
    Signed-off-by: Doug Kearns <dougkea...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/generator/gen_syntax_vim.vim 
b/runtime/syntax/generator/gen_syntax_vim.vim
index 5c797deb7..b4feeed79 100644
--- a/runtime/syntax/generator/gen_syntax_vim.vim
+++ b/runtime/syntax/generator/gen_syntax_vim.vim
@@ -279,6 +279,7 @@ function! s:get_vim_command_type(cmd_name)
        \       'autocmd', 'augroup', 'doautocmd', 'doautoall',
        \       'echo', 'echoconsole', 'echoerr', 'echohl', 'echomsg', 'echon', 
'echowindow',
        \       'execute',
+       \ 'function', 'endfunction', 'def', 'enddef',
        \       'behave', 'augroup', 'normal', 'syntax',
        \       'append', 'insert',
        \       'Next', 'Print', 'X',
diff --git a/runtime/syntax/generator/vim.vim.base 
b/runtime/syntax/generator/vim.vim.base
index 46285f3db..00041099d 100644
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -167,7 +167,7 @@ syn match   vimNumber       '\%(^\|\A\)\zs#\x\{6}'          
skipwhite nextgroup=vimGlobal,vimSub
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList 
contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,@vimEcho,vimExecute,vimIsCommand,vimExtCmd,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
+syn cluster vimCmdList 
contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
 syn match vimCmdSep    "[:|]\+"        skipwhite 
nextgroup=@vimCmdList,vimSubst1
 syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand
 syn match vimVar             contained "\<\h[a-zA-Z0-9#_]*\>"
@@ -227,7 +227,7 @@ syn keyword vimAugroupKey   contained aug[roup]  skipwhite 
nextgroup=vimAugroupBan
 
 " Operators: {{{2
 " =========
-syn cluster    vimOperGroup    
contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,@vimContinue,vim9Comment,vimVar
+syn cluster    vimOperGroup    
contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
 syn match      vimOper "||\|&&\|[-+*/%.!]"                             
skipwhite nextgroup=vimString,vimSpecFile
 syn match      vimOper 
"\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}"    skipwhite 
nextgroup=vimString,vimSpecFile
 syn match      vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>"                 
skipwhite nextgroup=vimString,vimSpecFile
@@ -239,28 +239,67 @@ endif
 
 " Functions : Tag is provided for those who wish to highlight tagged functions 
{{{2
 " =========
-syn cluster    vimFuncList     
contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
-syn cluster    vimFuncBodyList 
contains=@vimCmdList,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimLetHereDoc,vimLineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
-syn match      vimFunction     
"\<\(fu\%[nction]\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("
       contains=@vimFuncList nextgroup=vimFuncBody
-syn match      vimFunction     "\<def\s\+new\i\{-}(" contains=@vimFuncList 
nextgroup=vimFuncBody
-syn match      vimFunction     "\<def!\=\s\+\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" 
contains=@vimFuncList nextgroup=vimFuncBody
-"syn match     vimFunction     "\<def!\=\ze\s*(" contains=@vimFuncList 
nextgroup=vimFuncBody
+syn cluster    vimFuncList     
contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFuncSID,Tag
+syn cluster    vimDefList      
contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
+syn cluster    vimFuncBodyList 
contains=@vimCmdList,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimLetHereDoc,vimLineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
+syn cluster    vimDefBodyList  
contains=@vimCmdList,vimCmplxRepeat,vim9Comment,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vim9LineComment,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst
+
+syn region     vimFuncPattern  contained               matchgroup=vimOper 
start="/" end="$" contains=@vimSubstList
+syn match      vimFunction     "\<fu\%[nction]\>"      skipwhite 
nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
+syn match      vimDef  "\<def\>"               skipwhite 
nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimDefKey
+
+syn match      vimFunction     
"\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+"  
contains=@vimFuncList skipwhite nextgroup=vimFuncParams
+syn match      vimDef  "\<def\s\+new\%(\i\|{.\{-1,}}\)\+"                      
        contains=@vimDefList            nextgroup=vimDefParams
+syn match      vimDef  
"\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+"           
contains=@vimDefList            nextgroup=vimDefParams
+
+syn match      vimFuncComment  contained       +".*+ skipwhite skipnl 
nextgroup=vimFuncBody,vimEndfunction
+syn match      vimDefComment   contained       "#.*" skipwhite skipnl 
nextgroup=vimDefBody,vimEnddef
+
+syn match      vimFuncBang     contained       "!"
+syn match      vimFuncSID      contained       "

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rnOLY-00FRwW-DG%40256bit.org.

Raspunde prin e-mail lui