changeset 36170:f67f6e07500d

runtime(vim): Update base-syntax, improve folding function matches Commit: https://github.com/vim/vim/commit/35699f17497dcdcfdd747fedaef28f208ac6eb5f Author: Doug Kearns <dougkearns@gmail.com> Date: Thu Sep 19 19:51:59 2024 +0200 runtime(vim): Update base-syntax, improve folding function matches - Allow function command modifiers. - Match function bodies starting with empty lines. Command modifiers reported by @Konfekt. fixes #15671 closes: #15674 Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 19 Sep 2024 20:00:08 +0200
parents 8eb6c3f6232f
children 51c2dc1788c2
files runtime/syntax/generator/vim.vim.base runtime/syntax/testdir/dumps/vim_ex_def_01.dump runtime/syntax/testdir/dumps/vim_ex_def_02.dump runtime/syntax/testdir/dumps/vim_ex_def_03.dump runtime/syntax/testdir/dumps/vim_ex_def_04.dump runtime/syntax/testdir/dumps/vim_ex_def_05.dump runtime/syntax/testdir/dumps/vim_ex_def_06.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_00.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_01.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_08.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_09.dump runtime/syntax/testdir/dumps/vim_ex_def_fold_10.dump runtime/syntax/testdir/dumps/vim_ex_function_02.dump runtime/syntax/testdir/dumps/vim_ex_function_03.dump runtime/syntax/testdir/dumps/vim_ex_function_04.dump runtime/syntax/testdir/dumps/vim_ex_function_05.dump runtime/syntax/testdir/dumps/vim_ex_function_06.dump runtime/syntax/testdir/dumps/vim_ex_function_07.dump runtime/syntax/testdir/dumps/vim_ex_function_08.dump runtime/syntax/testdir/dumps/vim_ex_function_09.dump runtime/syntax/testdir/dumps/vim_ex_function_10.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_00.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump runtime/syntax/testdir/input/vim_ex_def.vim runtime/syntax/testdir/input/vim_ex_def_fold.vim runtime/syntax/testdir/input/vim_ex_function.vim runtime/syntax/testdir/input/vim_ex_function_fold.vim runtime/syntax/vim.vim
diffstat 48 files changed, 776 insertions(+), 362 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2024 Sep 14
+" Last Change:	   2024 Sep 16
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -184,7 +184,7 @@ syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
 syn cluster vim9CmdList	contains=vim9Const,vim9Final,vim9For,vim9Var
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimIsCommand	"\<\%(\h\w*\|[23]mat\%[ch]\)\>"	contains=vimCommand
@@ -283,8 +283,8 @@ syn match	vimFunction	"\<fu\%[nction]\>!
 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,vimMethodName            nextgroup=vimDefParams
 
-syn match	vimFuncComment	contained	+".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
-syn match	vimDefComment	contained	"#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
+syn match	vimFuncComment	contained	+".*+ skipwhite skipempty nextgroup=vimFuncBody,vimEndfunction
+syn match	vimDefComment	contained	"#.*" skipwhite skipempty nextgroup=vimDefBody,vimEnddef
 
 syn match	vimFuncBang	contained	"!"
 syn match	vimFuncSID	contained	"\c<sid>"
@@ -293,24 +293,24 @@ syn keyword	vimFuncKey	contained	fu[ncti
 syn keyword	vimDefKey	contained	def
 syn keyword	vimMethodName	contained	empty len string
 
-syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError	contains=vimFuncParam,@vimContinue
-syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError	contains=vimDefParam,vim9Comment,vimFuncParamEquals
+syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError	contains=vimFuncParam,@vimContinue
+syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError	contains=vimDefParam,vim9Comment,vimFuncParamEquals
 syn match	vimFuncParam	contained	"\<\h\w*\>\|\.\.\."	skipwhite nextgroup=vimFuncParamEquals
 syn match	vimDefParam	contained	"\<\h\w*\>"		skipwhite nextgroup=vimParamType,vimFuncParamEquals
 
-syn match	vimFuncParamEquals contained	"="			skipwhite        nextgroup=@vimExprList
-syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
+syn match	vimFuncParamEquals contained	"="			skipwhite           nextgroup=@vimExprList
+syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
 
-syn region	vimFuncBody	contained	start="^.\="	matchgroup=vimCommand end="\<endfu\%[nction]\>"	contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
-syn region	vimDefBody	contained	start="^.\="	matchgroup=vimCommand end="\<enddef\>"	contains=@vimDefBodyList  skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
+syn region	vimFuncBody	contained	start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<endfu\%[nction]\>"	contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn region	vimDefBody	contained	start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<enddef\>"	contains=@vimDefBodyList  skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
 syn match	vimEndfunction	"\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
 syn match	vimEnddef	"\<enddef\>"	    skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
- syn region	vimFuncFold	start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*("	end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
- syn region	vimFuncFold	start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("		end="^\s*:\=\s*enddef\>"          contains=vimDef      fold keepend extend transparent
- syn region	vimFuncFold	start="^\s*:\=\s*def\s\+new\i\+("					end="^\s*:\=\s*enddef\>"          contains=vimDef      fold keepend extend transparent
+ syn region	vimFuncFold	start="\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*("	end="\<endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
+ syn region	vimFuncFold	start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("		end="\<enddef\>"          contains=vimDef      fold keepend extend transparent
+ syn region	vimFuncFold	start="\<def\s\+new\i\+("				end="\<enddef\>"          contains=vimDef      fold keepend extend transparent
 endif
 
 syn match	vimFuncVar   contained	"a:\%(\K\k*\|\d\+\)\>"
@@ -319,7 +319,7 @@ syn match	vimFuncBlank contained	"\s\+"
 " Types: {{{2
 " =====
 
-syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
+syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
 syn match	vimParamType	contained	":\s"	skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
 
 syn match	vimTypeSep	contained	":\s\@=" skipwhite nextgroup=@vimType
@@ -403,7 +403,7 @@ syn match	vimDelcommandAttr	contained	"-
 " Lower Priority Comments: after some vim commands... {{{2
 " =======================
 if get(g:, "vimsyn_comment_strings", 1)
-  syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e end='"'
+  syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e end='"' extend
 endif
 
 if s:vim9script
@@ -412,17 +412,17 @@ else
   syn cluster vimComment contains=vimComment
 endif
 
-VimL syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
-VimL syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
-VimL syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
+VimL syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString extend
+VimL syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString extend
+VimL syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString extend
 " Vim9 comments - TODO: might be highlighted while they don't work
-Vim9 syn match	vim9Comment	excludenl +\s#[^{].*$+lc=1	contains=@vimCommentGroup,vimCommentString
-Vim9 syn match	vim9Comment	+\<endif\s\+#[^{].*$+lc=5	contains=@vimCommentGroup,vimCommentString
-Vim9 syn match	vim9Comment	+\<else\s\+#[^{].*$+lc=4	contains=@vimCommentGroup,vimCommentString
+Vim9 syn match	vim9Comment	excludenl +\s#[^{].*$+lc=1	contains=@vimCommentGroup,vimCommentString extend
+Vim9 syn match	vim9Comment	+\<endif\s\+#[^{].*$+lc=5	contains=@vimCommentGroup,vimCommentString extend
+Vim9 syn match	vim9Comment	+\<else\s\+#[^{].*$+lc=4	contains=@vimCommentGroup,vimCommentString extend
 " Vim9 comment inside expression
-Vim9 syn match	vim9Comment	+\s\zs#[^{].*$+ms=s+1	contains=@vimCommentGroup,vimCommentString contained
-Vim9 syn match	vim9Comment	+^\s*#[^{].*$+		contains=@vimCommentGroup,vimCommentString contained
-Vim9 syn match	vim9Comment	+^\s*#$+		contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match	vim9Comment	+\s\zs#[^{].*$+ms=s+1	contains=@vimCommentGroup,vimCommentString contained extend
+Vim9 syn match	vim9Comment	+^\s*#[^{].*$+		contains=@vimCommentGroup,vimCommentString contained extend
+Vim9 syn match	vim9Comment	+^\s*#$+		contains=@vimCommentGroup,vimCommentString contained extend
 
 syn match	vim9CommentError	contained	"#.*"
 syn match	vimCommentError	contained	+".*+
@@ -442,8 +442,8 @@ syn region	vimPatSepZone	oneline   conta
 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
-syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup
-syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
+syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup extend
+syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
 syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
 syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
@@ -453,8 +453,8 @@ syn match	vimEscape	contained	"\\\o\{1,3
 syn match	vimEscape	contained	"\\<" contains=vimNotation
 syn match	vimEscape	contained	"\\<\*[^>]*>\=>"
 
-syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation
-syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation
+syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation extend
+syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation extend
 syn region	vimStringInterpolationExpr  oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
 syn match	vimStringInterpolationBrace contained "{{"
 syn match	vimStringInterpolationBrace contained "}}"
@@ -874,8 +874,8 @@ syn match	vimCtrlChar	"[--]"
 
 " Beginners - Patterns that involve ^ {{{2
 " =========
-Vim9 syn region	vim9LineComment	start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
-VimL syn region	vimLineComment	start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+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
 
 syn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match	vim9CommentTitle	'#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup
--- a/runtime/syntax/testdir/dumps/vim_ex_def_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_01.dump
@@ -17,4 +17,4 @@
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@55
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@57|1|9|,|1| @9|1|4|%| 
+@57|1|9|,|1| @9|1|2|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_02.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|<+0#e000e06&|S|I|D|>|F+0#0000000&|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@52
-@57|3|7|,|0|-|1| @7|3|4|%| 
+@57|3|7|,|0|-|1| @7|3|0|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_03.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
-@57|5@1|,|3| @9|5|4|%| 
+@57|5@1|,|3| @9|4|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_04.dump
@@ -17,4 +17,4 @@
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@55
-@57|7|3|,|0|-|1| @7|7|3|%| 
+@57|7|3|,|0|-|1| @7|6|5|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
@@ -17,4 +17,4 @@
 @75
 @75
 |"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@57|9|0|,|0|-|1| @7|9|3|%| 
+@57|9|0|,|0|-|1| @7|8|2|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
@@ -5,16 +5,16 @@
 @2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@56
 >e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|0|8|,|1| @8|B|o|t| 
+@75
+|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@75
+|"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55
+@75
+|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@57|1|0|8|,|1| @8|B|o|t| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_00.dump
@@ -1,20 +1,20 @@
->"+0#0000e05#ffffff0| |V|i|m| |:|d|e|f| |c|o|m@1|a|n|d| +0#0000000&@56
-|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|f|"| +0#0000e05&||| |s|e|t| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@14
-@75
-@75
-|"+0#0000e05&| |l|i|s|t| +0#0000000&@68
-@75
-|d+0#af5f00255&|e|f| +0#0000000&@71
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1| @67
-|d+0#af5f00255&|e|f| +0#0000000&|/+0#af5f00255&|F+0#0000000&|o@1|.|*| @64
-@75
-|d+0#af5f00255&|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@58
-|d+0#af5f00255&|e|f| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@61
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-@75
-@75
-|"+0#0000e05&| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@62
-@75
-|"+0#0000e05&| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@56
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |V|i|m| |:|d|e|f| |c|o|m@1|a|n|d| +0#0000000&@54
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|f|"| +0#0000000&@29
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|l|=|9@2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@26
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|i|s|t| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| @65
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|/+0#af5f00255&|F+0#0000000&|o@1|.|*| @62
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@52
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@55
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 @57|1|,|1| @10|T|o|p| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_01.dump
@@ -1,20 +1,20 @@
-|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-@75
-@75
-|"+0#0000e05&| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@62
-@75
->"+0#0000e05&| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@56
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r|-@43
-| +0#0000000#ffffff0@74
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| @1|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)| |#| |c|o|m@1|e|n|t|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| |#| |c|o|m@1|e|n|t|-@33
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f|!| |F|o@1|(|)|:| |n|u|m|b|e|r|-@42
-| +0#0000000#ffffff0@74
-@57|1|9|,|1| @9|1|2|%| 
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@52
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@55
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@54
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@51
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|1|9|,|0|-|1| @8|7|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |g|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |s|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |f|o@1|#|b|a|r|#|F|o@1|(|)|:| |n|u|m|b|e|r|-@35
-| +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |s|:|l|s|(|)|-@50
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@60
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
-| +0#0000000#ffffff0@74
-@57|5|1|,|1| @9|4|1|%| 
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@45
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f|!| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@54
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|g+0#e000e06&|:|F+0#0000000&|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@53
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|s+0#e000e06&|:|F+0#0000000&|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@53
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+@57|3|7|,|3| @9|1|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |f|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,| |f|u|n|c|,| |b|o@1|l|,| |f|u|n|c|(|n|u|m|b|e|r|,| 
-| +0#0000000#ffffff0@74
-> @74
-|"+0#0000e05&| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@56
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|x|:| |b|o@1|l|,| |y| |=| |4|2|,| |z|:| |s|t|r|i|n|g| |=| |"|z|e|d|"|)|-@17
-| +0#0000000#ffffff0@74
-@57|7|8|,|0|-|1| @7|6|7|%| 
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|<+0#e000e06&|S|I|D|>|F+0#0000000&|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|f|o@1|#|b|a|r|#|F|o@1|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@47
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@44
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|s+0#e000e06&|:|l+0#0000000&|s|(+0#e000e06&|)| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@58
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+@57|5@1|,|0|-|1| @7|2|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-> @74
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-| +0#0000000#ffffff0@74
-@57|1|0|5|,|0|-|1| @6|B|o|t| 
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@47
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| >d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |l+0#00e0003&|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1| +0#0000000&@43
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)|:+0#0000000&| |f+0#00e0003&|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,+0#0000000&| |f+0#00e0003&|u|n|c|,+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |f+0#00e0003&|u|n|c|(|n|u|m|b|e|r|,+0#0000000&| |l+0#00e0003&|i|s|t|<|n|u|m|b|e|r|>
+|-+0#0000e05#a8a8a8255| |)+0#00e0003#ffffff0@1|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&@64
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@54
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@1|#| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@49
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|7|3|,|1| @9|4|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@53
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&|#| |c|o|m@1|e|n|t| @56
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@29
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| @60
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @61
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|9|0|,|1| @9|5|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@1>#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@54
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@53
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@55
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50
+@57|1|0|8|,|3| @8|6|1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump
@@ -0,0 +1,20 @@
+|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@1|#| |e|n|d@1|e|f| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d@1|e|f|"| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|v+0#af5f00255&|a|r| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+@57|1|2|6|,|0|-|1| @6|7|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_08.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@65
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|A|1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|A|2|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+@57|1|4@1|,|0|-|1| @6|8|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_09.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|B|1|(+0#e000e06&|)|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|B|2|(+0#e000e06&|)|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|C|1|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|C|2|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+@57|1|6|2|,|1| @8|9|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_10.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|D|1|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@51
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |d+0#af5f00255#ffffff0|e|f| +0#0000000&|M|D|2|(+0#e000e06&|_+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&|:+0#0000000&| |v+0#00e0003&|o|i|d| +0#0000000&@51
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|0|,|1| @8|B|o|t| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_02.dump
@@ -17,4 +17,4 @@
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
-@57|3|7|,|0|-|1| @7|1|9|%| 
+@57|3|7|,|0|-|1| @7|1|7|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_03.dump
@@ -17,4 +17,4 @@
 @75
 |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|f|o@1|#|b|a|r|#|F|o@1|(+0#e000e06&|)| +0#0000000&@52
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
-@57|5@1|,|1| @9|3|0|%| 
+@57|5@1|,|1| @9|2|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_04.dump
@@ -17,4 +17,4 @@
 |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@54
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|7|3|,|1| @9|4|1|%| 
+@57|7|3|,|1| @9|3|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_05.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 |f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@53
-@57|9|1|,|0|-|1| @7|5|2|%| 
+@57|9|1|,|0|-|1| @7|4|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_06.dump
@@ -17,4 +17,4 @@
 |f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@34
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|1|0|9|,|3| @8|6|3|%| 
+@57|1|0|9|,|3| @8|5|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@53
 @75
 @75
-@57|1|2|7|,|1| @8|7|4|%| 
+@57|1|2|7|,|1| @8|6|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_08.dump
@@ -17,4 +17,4 @@
 @2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
-@57|1|4|5|,|1| @8|8|5|%| 
+@57|1|4|5|,|1| @8|7|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
@@ -16,5 +16,5 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 @75
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@57|1|6|3|,|3| @8|9|6|%| 
+|"+0#0000e05&| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55
+@57|1|6|3|,|3| @8|8|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
+|"+0#0000e05#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@55
+@75
+|s+0#af5f00255&|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@52
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+> @74
+|"+0#0000e05&| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@47
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@47
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+@75
+|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
 @75
 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
 |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
->d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
 @75
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|8|1|,|1| @8|B|o|t| 
+@57|1|8|1|,|0|-|1| @6|B|o|t| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_00.dump
@@ -1,20 +1,20 @@
->"+0#0000e05#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |c|o|m@1|a|n|d| +0#0000000&@51
-|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|f|"| +0#0000e05&||| |s|e|t| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@14
-@75
-@75
-|"+0#0000e05&| |l|i|s|t| +0#0000000&@68
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@66
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @62
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|/+0#af5f00255&|F+0#0000000&|o@1|.|*| @59
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@53
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@49
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@52
-@75
-@75
-|"+0#0000e05&| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@62
-@75
-|"+0#0000e05&| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@56
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |c|o|m@1|a|n|d| +0#0000000&@49
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|f|"| +0#0000000&@29
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|l|=|9@2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@26
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|i|s|t| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&@64
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @60
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|/+0#af5f00255&|F+0#0000000&|o@1|.|*| @57
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@51
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@54
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@50
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 @57|1|,|1| @10|T|o|p| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_01.dump
@@ -1,20 +1,20 @@
-|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@52
-@75
-@75
-|"+0#0000e05&| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@62
-@75
->"+0#0000e05&| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@56
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|"+0#0000e05&| |c|u|r|l|y|-|b|r|a|c|e| |n|a|m|e|s| +0#0000000&@55
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|o@1|(|)|-@42
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|{|"|o|"|}|o|(|)|-@42
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o|{|"|o|"|}|(|)|-@42
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|o|{|"|o|"|}|(|)|-@38
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|{|"|o|"|}|{|"|o|"|}|(|)|-@34
-| +0#0000000#ffffff0@74
-@57|1|9|,|1| @10|6|%| 
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@50
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|m|p|t|y| |d|e|f|i|n|i|t|i|o|n| +0#0000000&@54
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|u|r|l|y|-|b|r|a|c|e| |n|a|m|e|s| +0#0000000&@53
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|{|"|F|"|}|o@1|(+0#e000e06&|)| +0#0000000&@54
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|{|"|o|"|}|o|(+0#e000e06&|)| +0#0000000&@54
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@54
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+@57|1|9|,|0|-|1| @8|5|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| @1|-@44
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |"| |c|o|m@1|e|n|t|-@36
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |g|:|F|o@1|(|)|-@44
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|F|o@1|(|)|-@44
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
-| +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-@57|4|7|,|0|-|1| @7|1|9|%| 
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|{|"|F|"|}|o|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| >f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|{|"|F|"|}|{|"|o|"|}|{|"|o|"|}|(+0#e000e06&|)| +0#0000000&@46
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@51
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@48
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@57|3|7|,|1| @9|1|2|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
-> @74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |c|l|o|s|u|r|e|-@38
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
-| +0#0000000#ffffff0@56|7|8|,|0|-|1| @7|3|7|%| 
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|g+0#e000e06&|:|F+0#0000000&|o@1|(+0#e000e06&|)| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|s+0#e000e06&|:|F+0#0000000&|o@1|(+0#e000e06&|)| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|<+0#e000e06&|S|I|D|>|F+0#0000000&|o@1|(+0#e000e06&|)| +0#0000000&@53
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|5@1|,|1| @9|1|8|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |c|l|o|s|u|r|e|-@37
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@57|1@1|2|,|0|-|1| @6|5|3|%| 
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|f|o@1|#|b|a|r|#|F|o@1|(+0#e000e06&|)| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@44
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|s+0#e000e06&|:|l+0#0000000&|s|(+0#e000e06&|)| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |m|o|d|i|f|i|e|r|s| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@42
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@52
+@57|7|3|,|1| @9|2|5|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-> @74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@57|1|4|3|,|0|-|1| @6|7|4|%| 
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&@53
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@33
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+@57|9|1|,|3| @9|3|2|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-@75
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@75
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
->d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-@75
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@56|1|8|0|,|1| @8|9|1|%| 
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&@51
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@51
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@49
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@32
+@57|1|0|9|,|0|-|1| @6|3|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|1|9|,|0|-|1| @6|B|o|t| 
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&|r+0#e000e06&|a|n|g|e| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&|d+0#e000e06&|i|c|t| +0#0000000&|c+0#e000e06&|l|o|s|u|r|e| +0#0000000&@32
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@49
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@49
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
+@57|1|2|7|,|1| @8|4|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| >f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&|,+0#0000000&| |z+0#00e0e07&|,+0#0000000&| |.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@46
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|x+0#00e0e07&|,+0#0000000&| @62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|y+0#00e0e07&|,+0#0000000&| @62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|z+0#00e0e07&|,+0#0000000&| @62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|.+0#00e0e07&@2|)+0#e000e06&| +0#0000000&@60
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@38
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+@57|1|4|5|,|1| @8|5|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|x+0#00e0e07&|,+0#0000000&| @62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5>\+0#e000e06&| +0#0000000&|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@5|\+0#e000e06&| +0#0000000&|z+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@54
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@62
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@47
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|1|6|3|,|7| @8|6|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |c|o|m@1|a|n|d| |m|o|d|i|f|i|e|r|s| +0#0000000&@53
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |s+0#af5f00255#ffffff0|i|l|e|n|t|!| +0#0000000&|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@50
+||+0#0000e05#a8a8a8255| >e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |l|e|a|d|i|n|g| |c|o|m@1|a|n|d| |s|e|p|a|r|a|t|o|r| +0#0000000&@45
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@45
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@55
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @57
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @53
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56
+@57|1|8|1|,|1| @8|6|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @56
+| +0#0000e05#a8a8a8255@1|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @53
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@52
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|"+0#0000e05&| |e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|n|d|f|u|n|c|t|i|o|n|"| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|x+0#00e0e07&| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+@57|1|9@1|,|0|-|1| @6|7|4|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|a|p@1|e|n|d| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| >.+0#af5f00255#ffffff0| +0#0000000&@71
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|c|h|a|n|g|e| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@58
+||+0#0000e05#a8a8a8255| | +0#af5f00255#ffffff0@1|i|n|s|e|r|t| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|e|n|d|f|u|n|c|t|i|o|n| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
+@57|2|1|7|,|1| @8|8|1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_13.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |.+0#af5f00255#ffffff0| +0#0000000&@71
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@61
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |:+0#0000000#ffffff0|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |I|s@1|u|e| |#|1|5|6|7|1| +0#0000000&@58
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |:|f|u|n| |o|r| |:|d|e|f| |b|o|d|i|e|s| |c|o|m@1|e|n|c|i|n|g| |w|i|t|h| |e|m|p|t|y| |l|i|n|e|s| |i|f| +0#0000000&@2
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |c|o|n|t|a|i|n|s| |"+0#e000002&|f|"| +0#0000000&@41
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|1|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|A|2|(+0#e000e06&|)| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+@57|2|3|5|,|0|-|1| @6|8@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_14.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|B|2|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|C|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&@62
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+@57|2|5|3|,|5| @8|9|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_15.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|1|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@72
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3>r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |f+0#af5f00255#ffffff0|u|n| +0#0000000&|F|D|2|(+0#e000e06&|_+0#00e0e07&|)+0#e000e06&| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@56
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@62
+||+0#0000e05#a8a8a8255| |e+0#af5f00255#ffffff0|n|d|f|u|n| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|7|1|,|5| @8|B|o|t| 
--- a/runtime/syntax/testdir/input/vim_ex_def.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def.vim
@@ -107,3 +107,15 @@ def Foo()
   "useless string"
 enddef
 
+
+" leading command separator
+
+echo "Foo" | def Foo()
+enddef
+
+
+" command modifiers
+
+silent! def Foo()
+enddef
+
--- a/runtime/syntax/testdir/input/vim_ex_def_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def_fold.vim
@@ -1,5 +1,6 @@
 " Vim :def command
-" VIM_TEST_SETUP let g:vimsyn_folding = "f" | set fdm=syntax
+" VIM_TEST_SETUP let g:vimsyn_folding = "f"
+" VIM_TEST_SETUP setl fdc=2 fdl=999 fdm=syntax
 
 
 " list
@@ -109,6 +110,18 @@ def Foo()
 enddef
 
 
+" command modifiers
+
+silent! def Foo()
+enddef
+
+
+" leading command separator
+
+echo "Foo" | def Foo()
+enddef
+
+
 " fold-region ending
 
 def Foo()
@@ -128,3 +141,45 @@ enddef
 :def Foo()
 :enddef
 
+
+" Issue #15671
+" No recognition of :fun or :def bodies commencing with empty lines if
+" g:vimsyn_folding contains "f"
+
+def MA1()
+
+
+    return
+enddef
+
+def MA2()
+    return
+enddef
+
+def MB1(): void
+
+    return
+enddef
+
+def MB2(): void
+    return
+enddef
+
+def MC1(_: any)
+
+    return
+enddef
+
+def MC2(_: any)
+    return
+enddef
+
+def MD1(_: any): void
+
+    return
+enddef
+
+def MD2(_: any): void
+    return
+enddef
+
--- a/runtime/syntax/testdir/input/vim_ex_function.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function.vim
@@ -173,6 +173,18 @@ function Foo()
 endfunction
 
 
+" command modifiers
+
+silent! function Foo()
+endfunction
+
+
+" leading command separator
+
+echo "Foo" | function Foo()
+endfunction
+
+
 " delete function
 
 delfunction Foo
--- a/runtime/syntax/testdir/input/vim_ex_function_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
@@ -1,5 +1,6 @@
 " Vim :function command
-" VIM_TEST_SETUP let g:vimsyn_folding = "f" | set fdm=syntax
+" VIM_TEST_SETUP let g:vimsyn_folding = "f"
+" VIM_TEST_SETUP setl fdc=2 fdl=999 fdm=syntax
 
 
 " list
@@ -174,6 +175,18 @@ function Foo()
 endfunction
 
 
+" command modifiers
+
+silent! function Foo()
+endfunction
+
+
+" leading command separator
+
+echo "Foo" | function Foo()
+endfunction
+
+
 " delete function
 
 delfunction Foo
@@ -220,3 +233,45 @@ endfunction
 :function Foo()
 :endfunction
 
+
+" Issue #15671
+" No recognition of :fun or :def bodies commencing with empty lines if
+" g:vimsyn_folding contains "f"
+
+fun FA1()
+
+
+    return
+endfun
+
+fun FA2()
+    return
+endfun
+
+fun FB1() abort
+
+    return
+endfun
+
+fun FB2() abort
+    return
+endfun
+
+fun FC1(_)
+
+    return
+endfun
+
+fun FC2(_)
+    return
+endfun
+
+fun FD1(_) abort
+
+    return
+endfun
+
+fun FD2(_) abort
+    return
+endfun
+
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2024 Sep 14
+" Last Change:	   2024 Sep 16
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -222,7 +222,7 @@ syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,vimDelcommand,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimFuncFold,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
 syn cluster vim9CmdList	contains=vim9Const,vim9Final,vim9For,vim9Var
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimIsCommand	"\<\%(\h\w*\|[23]mat\%[ch]\)\>"	contains=vimCommand
@@ -321,8 +321,8 @@ syn match	vimFunction	"\<fu\%[nction]\>!
 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,vimMethodName            nextgroup=vimDefParams
 
-syn match	vimFuncComment	contained	+".*+ skipwhite skipnl nextgroup=vimFuncBody,vimEndfunction
-syn match	vimDefComment	contained	"#.*" skipwhite skipnl nextgroup=vimDefBody,vimEnddef
+syn match	vimFuncComment	contained	+".*+ skipwhite skipempty nextgroup=vimFuncBody,vimEndfunction
+syn match	vimDefComment	contained	"#.*" skipwhite skipempty nextgroup=vimDefBody,vimEnddef
 
 syn match	vimFuncBang	contained	"!"
 syn match	vimFuncSID	contained	"\c<sid>"
@@ -331,24 +331,24 @@ syn keyword	vimFuncKey	contained	fu[ncti
 syn keyword	vimDefKey	contained	def
 syn keyword	vimMethodName	contained	empty len string
 
-syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError	contains=vimFuncParam,@vimContinue
-syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError	contains=vimDefParam,vim9Comment,vimFuncParamEquals
+syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError	contains=vimFuncParam,@vimContinue
+syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError	contains=vimDefParam,vim9Comment,vimFuncParamEquals
 syn match	vimFuncParam	contained	"\<\h\w*\>\|\.\.\."	skipwhite nextgroup=vimFuncParamEquals
 syn match	vimDefParam	contained	"\<\h\w*\>"		skipwhite nextgroup=vimParamType,vimFuncParamEquals
 
-syn match	vimFuncParamEquals contained	"="			skipwhite        nextgroup=@vimExprList
-syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
+syn match	vimFuncParamEquals contained	"="			skipwhite           nextgroup=@vimExprList
+syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipempty nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
 
-syn region	vimFuncBody	contained	start="^.\="	matchgroup=vimCommand end="\<endfu\%[nction]\>"	contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
-syn region	vimDefBody	contained	start="^.\="	matchgroup=vimCommand end="\<enddef\>"	contains=@vimDefBodyList  skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
+syn region	vimFuncBody	contained	start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<endfu\%[nction]\>"	contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn region	vimDefBody	contained	start="^." matchgroup=vimCmdSep start="|" matchgroup=vimCommand end="\<enddef\>"	contains=@vimDefBodyList  skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
 syn match	vimEndfunction	"\<endf\%[unction]\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
 syn match	vimEnddef	"\<enddef\>"	    skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
- syn region	vimFuncFold	start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*("	end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
- syn region	vimFuncFold	start="^\s*:\=\s*def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("		end="^\s*:\=\s*enddef\>"          contains=vimDef      fold keepend extend transparent
- syn region	vimFuncFold	start="^\s*:\=\s*def\s\+new\i\+("					end="^\s*:\=\s*enddef\>"          contains=vimDef      fold keepend extend transparent
+ syn region	vimFuncFold	start="\<fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*("	end="\<endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
+ syn region	vimFuncFold	start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("		end="\<enddef\>"          contains=vimDef      fold keepend extend transparent
+ syn region	vimFuncFold	start="\<def\s\+new\i\+("				end="\<enddef\>"          contains=vimDef      fold keepend extend transparent
 endif
 
 syn match	vimFuncVar   contained	"a:\%(\K\k*\|\d\+\)\>"
@@ -357,7 +357,7 @@ syn match	vimFuncBlank contained	"\s\+"
 " Types: {{{2
 " =====
 
-syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
+syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipempty nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
 syn match	vimParamType	contained	":\s"	skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
 
 syn match	vimTypeSep	contained	":\s\@=" skipwhite nextgroup=@vimType
@@ -443,7 +443,7 @@ syn match	vimDelcommandAttr	contained	"-
 " Lower Priority Comments: after some vim commands... {{{2
 " =======================
 if get(g:, "vimsyn_comment_strings", 1)
-  syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e end='"'
+  syn region	vimCommentString	contained oneline start='\S\s\+"'ms=e end='"' extend
 endif
 
 if s:vim9script
@@ -452,17 +452,17 @@ else
   syn cluster vimComment contains=vimComment
 endif
 
-VimL syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString
-VimL syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString
-VimL syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString
+VimL syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString extend
+VimL syn match	vimComment	+\<endif\s\+".*$+lc=5	contains=@vimCommentGroup,vimCommentString extend
+VimL syn match	vimComment	+\<else\s\+".*$+lc=4	contains=@vimCommentGroup,vimCommentString extend
 " Vim9 comments - TODO: might be highlighted while they don't work
-Vim9 syn match	vim9Comment	excludenl +\s#[^{].*$+lc=1	contains=@vimCommentGroup,vimCommentString
-Vim9 syn match	vim9Comment	+\<endif\s\+#[^{].*$+lc=5	contains=@vimCommentGroup,vimCommentString
-Vim9 syn match	vim9Comment	+\<else\s\+#[^{].*$+lc=4	contains=@vimCommentGroup,vimCommentString
+Vim9 syn match	vim9Comment	excludenl +\s#[^{].*$+lc=1	contains=@vimCommentGroup,vimCommentString extend
+Vim9 syn match	vim9Comment	+\<endif\s\+#[^{].*$+lc=5	contains=@vimCommentGroup,vimCommentString extend
+Vim9 syn match	vim9Comment	+\<else\s\+#[^{].*$+lc=4	contains=@vimCommentGroup,vimCommentString extend
 " Vim9 comment inside expression
-Vim9 syn match	vim9Comment	+\s\zs#[^{].*$+ms=s+1	contains=@vimCommentGroup,vimCommentString contained
-Vim9 syn match	vim9Comment	+^\s*#[^{].*$+		contains=@vimCommentGroup,vimCommentString contained
-Vim9 syn match	vim9Comment	+^\s*#$+		contains=@vimCommentGroup,vimCommentString contained
+Vim9 syn match	vim9Comment	+\s\zs#[^{].*$+ms=s+1	contains=@vimCommentGroup,vimCommentString contained extend
+Vim9 syn match	vim9Comment	+^\s*#[^{].*$+		contains=@vimCommentGroup,vimCommentString contained extend
+Vim9 syn match	vim9Comment	+^\s*#$+		contains=@vimCommentGroup,vimCommentString contained extend
 
 syn match	vim9CommentError	contained	"#.*"
 syn match	vimCommentError	contained	+".*+
@@ -482,8 +482,8 @@ syn region	vimPatSepZone	oneline   conta
 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
-syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup
-syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+
+syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+	contains=@vimStringGroup extend
+syn region	vimString	oneline keepend	start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ extend
 "syn region	vimString	oneline	start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/"	contains=@vimStringGroup  " see tst45.vim
 syn match	vimString	contained	+"[^"]*\\$+	skipnl nextgroup=vimStringCont
 syn match	vimStringCont	contained	+\(\\\\\|.\)\{-}[^\\]"+
@@ -493,8 +493,8 @@ syn match	vimEscape	contained	"\\\o\{1,3
 syn match	vimEscape	contained	"\\<" contains=vimNotation
 syn match	vimEscape	contained	"\\<\*[^>]*>\=>"
 
-syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation
-syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation
+syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation extend
+syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation extend
 syn region	vimStringInterpolationExpr  oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
 syn match	vimStringInterpolationBrace contained "{{"
 syn match	vimStringInterpolationBrace contained "}}"
@@ -920,8 +920,8 @@ syn match	vimCtrlChar	"[--]"
 
 " Beginners - Patterns that involve ^ {{{2
 " =========
-Vim9 syn region	vim9LineComment	start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\\\|\n\s*#\\ + end="$" contains=@vimCommentGroup,vimCommentString,vim9CommentTitle
-VimL syn region	vimLineComment	start=+^[ \t:]*\zs".*$+ skip=+\n\s*\\\|\n\s*"\\ + end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+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
 
 syn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match	vim9CommentTitle	'#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup