Commit: runtime(vim): Update base syntax, allow Vim9 block terminators after :bar

3 views
Skip to first unread message

Christian Brabandt

unread,
Aug 23, 2026, 2:45:16 PM (10 days ago) Aug 23
to vim...@googlegroups.com
runtime(vim): Update base syntax, allow Vim9 block terminators after :bar

Commit: https://github.com/vim/vim/commit/4025cec645e396e9bc7ca8083d3326c5040dedb9
Author: Doug Kearns <dougk...@gmail.com>
Date: Sun Aug 23 18:35:06 2026 +0000

runtime(vim): Update base syntax, allow Vim9 block terminators after :bar

Allow Vim9 block terminators after |. While this usage is very unusual
it breaks the block region termination.

E.g., `{| echo "Foo" |}`

closes: #21129

Signed-off-by: Doug Kearns <dougk...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base
index 7a72878ea..975aead33 100644
--- 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 <dougk...@gmail.com>
-" Last Change: 2026 Aug 12
+" Last Change: 2026 Aug 22
" Former Maintainer: Charles E. Campbell

" DO NOT CHANGE DIRECTLY.
@@ -497,7 +497,12 @@ Vim9 syn match vimAugroup contained "\<aug\%[roup]\>\ze\s*\%([#|]\|$\)" skipwhi
" ================================

" TODO: explicitly match the {cmd} arg rather than bailing out to TOP
-syn region vimAutocmdBlock contained matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+syn region vimAutocmdBlock contained
+ \ matchgroup=vimSep
+ \ start="{\ze\s*\%($\|[#|]\)"
+ \ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
+ \ contains=@vimDefBodyList

syn match vimAutocmdGroup contained "\%(\["|[:space:]]\|[^"|[:space:]]\)\+" skipwhite nextgroup=vimAutoEvent,vimAutoEventGlob
syn match vimAutocmdBang contained " \@1<=!" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
@@ -651,8 +656,9 @@ syn region vimUserCmdReplacement contained
\ keepend
syn region vimUserCmdBlock contained
\ matchgroup=vimSep
- \ start="{"
+ \ start="{\ze\s*\%($\|[#|]\)"
\ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
\ contains=@vimDefBodyList,@vimUserCmdList

syn keyword vimDelcommand contained delc[ommand] skipwhite nextgroup=vimDelcommandAttr,vimDelcommandName
@@ -2050,6 +2056,7 @@ syn region vim9Block contained
\ matchgroup=vimSep
\ start="{\ze\s*\%($\|[#|]\)"
\ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
\ skipwhite nextgroup=vim9Comment,vimCmdSep
\ contains=@vimDefBodyList

diff --git a/runtime/syntax/testdir/dumps/vim9_blocks_01.dump b/runtime/syntax/testdir/dumps/vim9_blocks_01.dump
index 7eb90cc02..064490d17 100644
--- a/runtime/syntax/testdir/dumps/vim9_blocks_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_blocks_01.dump
@@ -17,4 +17,4 @@
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@75
@75
-@57|1|9|,|5| @9|4|3|%|
+@57|1|9|,|5| @9|3|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_blocks_02.dump b/runtime/syntax/testdir/dumps/vim9_blocks_02.dump
index df9b1f78f..3b584ba9e 100644
--- a/runtime/syntax/testdir/dumps/vim9_blocks_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_blocks_02.dump
@@ -13,8 +13,8 @@
@2|v+0#af5f00255&|a|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2| +0#0000000&@60
|}+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@60
@75
-|#+0#0000e05&| |d|i|c|t|i|o|n|a|r|y| +0#0000000&@62
-|{+0#e000e06&|}|-+0#af5f00255&|>|i+0#00e0e07&|t|e|m|s|(+0#e000e06&|)| +0#0000000&@63
+|{+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&|||}+0#e000e06&| +0#0000000&@58
+@75
@75
-|~+0#4040ff13&| @73
-| +0#0000000&@56|3|7|,|1| @9|B|o|t|
+|#+0#0000e05&| |d|i|c|t|i|o|n|a|r|y| +0#0000000&@62
+@57|3|7|,|1| @9|9|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_blocks_03.dump b/runtime/syntax/testdir/dumps/vim9_blocks_03.dump
new file mode 100644
index 000000000..501f0e57d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_blocks_03.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |d|i|c|t|i|o|n|a|r|y| +0#0000000&@62
+@75
+|{+0#e000e06&|}|-+0#af5f00255&|>|i+0#00e0e07&|t|e|m|s|(+0#e000e06&|)| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|3|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_03.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_03.dump
index c669cbb92..7e5eacf0e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_03.dump
@@ -17,4 +17,4 @@
@2|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@62
|}+0#e000e06&| +0#0000000&@73
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| |{+0#e000e06&| +0#0000000&@42
-@57|4|0|,|0|-|1| @7|1|5|%|
+@57|4|0|,|0|-|1| @7|1|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_04.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_04.dump
index 4f18da29e..5957b1b22 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_04.dump
@@ -3,7 +3,9 @@
@2|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@62
|}+0#e000e06&| +0#0000000&@73
@75
-> @74
+>a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| |{+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&|||}+0#e000e06&| +0#0000000&@36
+@75
+@75
|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |{|c|m|d|}| |a|r|g| +0#0000000&@53
@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@42
@@ -15,6 +17,4 @@
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@56
@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @53
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
-@57|5|8|,|0|-|1| @7|2|1|%|
+@57|5|8|,|1| @9|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_05.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_05.dump
index 1823bf05e..9d4dec0aa 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_05.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
+|a+0#af5f00255#ffffff0|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @53
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
+@6>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@55
-> @74
+@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d|,+0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @42
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@@ -15,6 +17,4 @@
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@57|7|6|,|0|-|1| @7|2|9|%|
+@57|7|6|,|7| @9|2|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_06.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_06.dump
index 4c03fefed..96f86241e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_06.dump
@@ -1,9 +1,11 @@
| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@55
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @44
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@6>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@55
@@ -15,6 +17,4 @@
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>|,|*|.+0#0000000&|v|i|m|,+0#e000e06&|*|.+0#0000000&|c| @2|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@14
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t|,+0#e000e06&|<|b|u|f@1|e|r|>|,|*|.+0#0000000&|c| @2|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@14
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t|,+0#e000e06&|*|.+0#0000000&|v|i|m|,+0#e000e06&|<|b|u|f@1|e|r|>| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@14
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|=|1|>|,|<|b|u|f@1|e|r|=|2|>|,|<|b|u|f@1|e|r|=|3|>| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@2
@57|9|4|,|7| @9|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_07.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_07.dump
index f857a3c5d..8ff457492 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_07.dump
@@ -1,9 +1,11 @@
-|a+0#af5f00255#ffffff0|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|=|1|>|,|<|b|u|f@1|e|r|=|2|>|,|<|b|u|f@1|e|r|=|3|>| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@2
+|a+0#af5f00255#ffffff0|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t|,+0#e000e06&|*|.+0#0000000&|v|i|m|,+0#e000e06&|<|b|u|f@1|e|r|>| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@14
@75
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|=|1|>|,|<|b|u|f@1|e|r|=|2|>|,|<|b|u|f@1|e|r|=|3|>| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@2
@75
-|"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|"|B|u|f|R|e|a|d|"| |a|n|d| |"+0#e000002&|*|"| +0#0000e05&|a|r|e| |v|a|l|i|d| |g|r|o|u|p| |n|a|m|e|s|,| |h|o|w|e|v|e|r|,| |:|h|e|l|p| |:|a|u|g|r|o|u|p| +0#0000000&@1
+@75
+>"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|"|B|u|f|R|e|a|d|"| |a|n|d| |"+0#e000002&|*|"| +0#0000e05&|a|r|e| |v|a|l|i|d| |g|r|o|u|p| |n|a|m|e|s|,| |h|o|w|e|v|e|r|,| |:|h|e|l|p| |:|a|u|g|r|o|u|p| +0#0000000&@1
|"+0#0000e05&| |e|x|p|l|i|c|i|t|l|y| |d|i|r|e|c|t|s| |t|h|e| |u|s|e|r| |N|O|T| |t|o| |s|h|a|d|o|w| |e|v|e|n|t| |n|a|m|e|s| |w|i|t|h| |g|r|o|u|p| |n|a|m|e|s| +0#0000000&@2
->a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|B|u|f|R|e|a|d| |*+0#e000002&|.+0#af5f00255&|t+0#0000000&|x|t| |++0#af5f00255&@1|o+0#0000000&|n|c|e| |++0#af5f00255&@1|n+0#0000000&|e|s|t|e|d| |e|c|h|o| |"+0#e000002&|F|o@1|"| +0#0000000&@18
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|B|u|f|R|e|a|d| |*+0#e000002&|.+0#af5f00255&|t+0#0000000&|x|t| |++0#af5f00255&@1|o+0#0000000&|n|c|e| |++0#af5f00255&@1|n+0#0000000&|e|s|t|e|d| |e|c|h|o| |"+0#e000002&|F|o@1|"| +0#0000000&@18
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|*+0#00e0003&| +0#0000000&@6|B|u|f|R|e|a|d| |*+0#e000002&|.+0#af5f00255&|t+0#0000000&|x|t| |++0#af5f00255&@1|o+0#0000000&|n|c|e| |++0#af5f00255&@1|n+0#0000000&|e|s|t|e|d| |e|c|h|o| |"+0#e000002&|F|o@1|"| +0#0000000&@18
@75
@75
@@ -15,6 +17,4 @@
|r|"| +0#0000000&@72
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@6|++0#e000e06&@1|o|n|c|e| +0#0000000&|++0#e000e06&@1|n|e|s|t|e|d| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a
|r|"| +0#0000000&@72
-|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@9|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@6|++0#e000e06&@1|o|n|c|e| +0#0000000&|++0#e000e06&@1|n|e|s|t|e|d| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a
-|r|"| +0#0000000&@72
@57|1@1|2|,|1| @8|4|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_08.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_08.dump
index 59d0a40a9..a9c3e0012 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_08.dump
@@ -1,9 +1,11 @@
-|a+0#af5f00255#ffffff0|u|t|o|c|m|d|!| +0#0000000&@9|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@6|++0#e000e06&@1|o|n|c|e| +0#0000000&|++0#e000e06&@1|n|e|s|t|e|d| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a
+|a+0#af5f00255#ffffff0|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@6|++0#e000e06&@1|o|n|c|e| +0#0000000&|++0#e000e06&@1|n|e|s|t|e|d| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a
+|r|"| +0#0000000&@72
+|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@9|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@6|++0#e000e06&@1|o|n|c|e| +0#0000000&|++0#e000e06&@1|n|e|s|t|e|d| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a
|r|"| +0#0000000&@72
@75
-|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @37
+>a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @37
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@9|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @37
->a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@43
+|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@43
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@9|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@43
@75
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|*+0#00e0003&| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @49
@@ -15,6 +17,4 @@
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@9|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@43
@75
|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0@57
-|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@66
-@75
@57|1|2|5|,|1| @8|5|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_09.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_09.dump
index 48d204684..14f767cde 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_09.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|a+0#af5f00255#ffffff0|u|t|o|c|m|d|!| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0@57
+|a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&@66
+@75
|"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |g|r|o|u|p| |"+0#e000002&|!|f|o@1|g|r|o|u|p|!|"| +0#0000000&@35
|a+0#af5f00255&|u|t|o|c|m|d|!|!+0#0000001#ffff4012|f|o@1|g|r|o|u|p|!| +0#0000000#ffffff0@56
-|"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |g|r|o|u|p| |"+0#e000002&|f|o@1|g|r|o|u|p|"| +0#0000000&@37
+>"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |g|r|o|u|p| |"+0#e000002&|f|o@1|g|r|o|u|p|"| +0#0000000&@37
|a+0#af5f00255&|u|t|o|c|m|d|!|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0@58
->"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |e|v|e|n|t| +0#0000000&@48
+|"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |e|v|e|n|t| +0#0000000&@48
|a+0#af5f00255&|u|t|o|c|m|d|!|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@59
|"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |b|a|n|g| |-|>| |u|s|e|r| |e|v|e|n|t| +0#0000000&@43
|a+0#af5f00255&|u|t|o|c|m|d|!|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@53
@@ -15,6 +17,4 @@
|"+0#0000e05&| |c|o|m@1|a|n|d| |-|>| |g|r|o|u|p| |"+0#e000002&|B|u|f|R|e|a|d|"| +0#0000e05&|-|>| |e|v|e|n|t| |"+0#e000002&|B|u|f|R|e|a|d|"| +0#0000e05&|-|>| |p|a|t@1|e|r|n| +0#0000000&@16
|a+0#af5f00255&|u|t|o|c|m|d|!|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|B|u|f|R|e|a|d| |*+0#e000002&|.+0#af5f00255&|t+0#0000000&|x|t| @45
@75
-@75
-|"+0#0000e05&| |L|i|s|t| +0#0000000&@68
@57|1|4|3|,|1| @8|5|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_10.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_10.dump
index b35de9649..202584a43 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_10.dump
@@ -1,9 +1,11 @@
-|"+0#0000e05#ffffff0| |L|i|s|t| +0#0000000&@68
+| +0&#ffffff0@74
+@75
+|"+0#0000e05&| |L|i|s|t| +0#0000000&@68
@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @38
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@9|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @38
+>a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@9|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@6|*+0#e000e06&|.+0#0000000&|t|x|t| @38
@75
->a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|*+0#00e0003&| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @50
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|*+0#00e0003&| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @50
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@9|*+0#00e0003&| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @50
@75
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@50
@@ -15,6 +17,4 @@
|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@67
@75
@75
-|"+0#0000e05&| |:|d|o|a|u|t|o|a|l@1| +0#0000000&@62
-@75
-@57|1|6|1|,|1| @8|6|5|%|
+@57|1|6|1|,|1| @8|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_11.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_11.dump
index 6a71d9d04..9ffe14343 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_11.dump
@@ -1,9 +1,11 @@
| +0&#ffffff0@74
+|"+0#0000e05&| |:|d|o|a|u|t|o|a|l@1| +0#0000000&@62
+@75
|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@57
@75
-|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @51
+>d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @51
|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@48
->d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@44
+|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@44
@75
|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @29
@75
@@ -15,6 +17,4 @@
@75
|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@16
|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@19
-@75
-@75
@57|1|7|9|,|1| @8|7|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_12.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_12.dump
index 971dc181e..5b36a8203 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_12.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|d+0#af5f00255#ffffff0|o|a|u|t|o|a|l@1| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@19
+@75
+@75
|"+0#0000e05&| |:|d|o|a|u|t|o|c|m|d| +0#0000000&@62
@75
-|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@57
+>d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@57
@75
->d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @51
+|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @51
|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@48
|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&@44
@75
@@ -15,6 +17,4 @@
|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@38
@75
|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@29
-@75
-|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@16
-@57|1|9|7|,|1| @8|8|0|%|
+@57|1|9|7|,|1| @8|7|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_13.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_13.dump
index 1d2ecbfaf..c4727cdf6 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_13.dump
@@ -1,9 +1,11 @@
-|d+0#af5f00255#ffffff0|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@16
-|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@17
+|d+0#af5f00255#ffffff0|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|U+0#00e0003&|s|e|r| +0#0000000&|F+0#e000e06&|o@1|E|v|e|n|t| +0#0000000&@29
@75
+|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@16
+|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&|<+0#e000e06&|n|o|m|o|d|e|l|i|n|e|>| +0#0000000&|f+0#0000001#ffff4012|o@1|g|r|o|u|p| +0#0000000#ffffff0|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| ||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@17
@75
-|"+0#0000e05&| |P|a|t@1|e|r|n|s| +0#0000000&@64
> @74
+|"+0#0000e05&| |P|a|t@1|e|r|n|s| +0#0000000&@64
+@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t| @56
@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|*+0#e000e06&| +0#0000000&@58
@@ -15,6 +17,4 @@
@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|t+0#0000000&|x|]+0#e000e06&|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @47
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|a+0#0000000&|-+0#e000e06&|z+0#0000000&|]+0#e000e06&|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @46
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&@1|:|a|l|p|h|a|:|]@1|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @40
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|[|:|p|u|n|c|t|:|]@1|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @39
@57|2|1|5|,|0|-|1| @6|8|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_14.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_14.dump
index 765dccbc5..cbe232a89 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_14.dump
@@ -1,9 +1,11 @@
-|a+0#af5f00255#ffffff0|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|[|:|p|u|n|c|t|:|]@1|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @39
+|a+0#af5f00255#ffffff0|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|a+0#0000000&|-+0#e000e06&|z+0#0000000&|]+0#e000e06&|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @46
+|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&@1|:|a|l|p|h|a|:|]@1|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @40
+|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|[|:|p|u|n|c|t|:|]@1|\@2|{|2+0#0000000&|\+0#e000e06&|}|t+0#0000000&| @39
@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|]+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @54
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|]+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @53
+>a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|]+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @53
@75
->a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|t+0#0000000&|\+0#e000e06&|]@1|x+0#0000000&|t| @52
+|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|t+0#0000000&|\+0#e000e06&|]@1|x+0#0000000&|t| @52
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|t+0#0000000&|\+0#e000e06&|]@1|x+0#0000000&|t| @51
@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|[+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @54
@@ -15,6 +17,4 @@
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|-+0#0000000&|t|-|]+0#e000e06&|x+0#0000000&|t| @52
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|-+0#0000000&|t|-|]+0#e000e06&|x+0#0000000&|t| @51
@75
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|\|^|]|x+0#0000000&|t| @53
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|^+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @53
-@57|2|3@1|,|1| @8|9|5|%|
+@57|2|3@1|,|1| @8|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_autocmd_15.dump b/runtime/syntax/testdir/dumps/vim_ex_autocmd_15.dump
index 5cebc2c44..405c45bc6 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_autocmd_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_autocmd_15.dump
@@ -1,9 +1,11 @@
-|a+0#af5f00255#ffffff0|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|^+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @53
+| +0&#ffffff0@74
+|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|\|^|]|x+0#0000000&|t| @53
+|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[+0#e000e06&|^|^+0#0000000&|]+0#e000e06&|x+0#0000000&|t| @53
@75
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|t|x|t|,+0#e000e06&|*|/+0#0000000&|*+0#e000e06&|.+0#0000000&|v|i|m| @48
-|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|{+0#e000e06&|t+0#0000000&|x|t|,+0#e000e06&|v+0#0000000&|i|m|}+0#e000e06&| +0#0000000&@50
+>a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|{+0#e000e06&|t+0#0000000&|x|t|,+0#e000e06&|v+0#0000000&|i|m|}+0#e000e06&| +0#0000000&@50
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|{+0#e000e06&|t+0#0000000&|{+0#e000e06&|x+0#0000000&|,+0#e000e06&|t+0#0000000&|}+0#e000e06&|,|v+0#0000000&|{+0#e000e06&|i+0#0000000&|,+0#e000e06&|m+0#0000000&|}+0#e000e06&@1| +0#0000000&@44
-> @74
+@75
|"+0#0000e05&| |l|i|t|e|r|a|l| +0#0000000&@65
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[|]|x|t| @55
|a+0#af5f00255&|u| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|.+0#0000000&|[|\+0#e000e06&|]|x+0#0000000&|t| @54
@@ -15,6 +17,4 @@
|~| @73
|~| @73
|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|5|1|,|0|-|1| @6|B|o|t|
+| +0#0000000&@56|2|5|1|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_01.dump b/runtime/syntax/testdir/dumps/vim_ex_command_01.dump
index 78492c7f3..482f0b750 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_01.dump
@@ -9,12 +9,12 @@
@2|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|z|"| +0#0000000&@62
|}+0#e000e06&| +0#0000000&@73
@75
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|{+0#e000e06&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&|||}+0#e000e06&| +0#0000000&@45
+@75
|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
|p|s|c|r|i|p|t| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|-+0#e000e06&|r|a|n|g|e|=|%+0#00e0003&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@24
@75
|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
|p|s|c|r|i|p|t| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|-+0#e000e06&|r|a|n|g|e|=|%+0#00e0003&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@35
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
-@75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|@+0#4040ff13&@2
-| +0#0000000&@56|1|9|,|1| @10|7|%|
+@57|1|9|,|1| @10|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_02.dump b/runtime/syntax/testdir/dumps/vim_ex_command_02.dump
index dd95498f4..b78940bfa 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_02.dump
@@ -1,9 +1,11 @@
-|c+0#af5f00255#ffffff0|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
+@75
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
|p|s|c|r|i|p|t| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|-+0#e000e06&|r|a|n|g|e|=|%+0#00e0003&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@39
@6|\+0#e000e06&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@63
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
+@6>\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
@75
->c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|a|d@1|r|=|a+0#00e0003&|r|g|u|m|e|n|t|s| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|a+0#00e0003&|r|g|l|i|s|t| +0#0000000&|-+0#e000e06&|c|o|u|n|t|=|1+0#e000002&| +0#0000000&|-+0#e000e06&|k|e@1
|p|s|c|r|i|p|t| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|-+0#e000e06&|r|a|n|g|e|=|%+0#00e0003&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@35
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
@@ -15,6 +17,4 @@
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
@75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|c+0#00e0003&|u|s|t|o|m|,+0#0000000&|s+0#00e0e07&|:|C|o|m|p|l|e|t|e|r|1| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@21
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|c+0#00e0003&|u|s|t|o|m|l|i|s|t|,+0#0000000&|s+0#00e0e07&|:|C|o|m|p|l|e|t|e|r|2| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@17
-@57|3|4|,|1| @9|1|6|%|
+@57|3|4|,|7| @9|1|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_03.dump b/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
index aa0e2f0c3..9802f1dae 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_03.dump
@@ -1,9 +1,11 @@
-|c+0#af5f00255#ffffff0|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|c+0#00e0003&|u|s|t|o|m|l|i|s|t|,+0#0000000&|s+0#00e0e07&|:|C|o|m|p|l|e|t|e|r|2| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@17
+| +0&#ffffff0@74
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|c+0#00e0003&|u|s|t|o|m|,+0#0000000&|s+0#00e0e07&|:|C|o|m|p|l|e|t|e|r|1| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@21
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|c+0#00e0003&|u|s|t|o|m|l|i|s|t|,+0#0000000&|s+0#00e0e07&|:|C|o|m|p|l|e|t|e|r|2| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@17
@75
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1| |(|d|e|f|i|n|e|d| |i|n| |:|f|u|n|c|t|i|o|n|)|"| +0#0000000&@26
+@2>c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1| |(|d|e|f|i|n|e|d| |i|n| |:|f|u|n|c|t|i|o|n|)|"| +0#0000000&@26
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-> @74
+@75
|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|2|(+0#e000e06&|)| +0#0000000&@64
@2|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1| |(|d|e|f|i|n|e|d| |i|n| |:|d|e|f|)|"| +0#0000000&@31
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@@ -15,6 +17,4 @@
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&@61
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|b|a|r| +0#0000000&@62
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|b+0#00e0003&|u|f@1|e|r| +0#0000000&@50
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
-@57|5|0|,|0|-|1| @7|2|4|%|
+@57|5|0|,|3| @9|2|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_04.dump b/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
index c819f228c..6e0e60458 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|b+0#00e0003&|u|f@1|e|r| +0#0000000&@50
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|a|n|g|e| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
+@6>\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|k|e@1|p|s|c|r|i|p|t| +0#0000000&@55
-@6>\+0#e000e06&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@63
+@6|\+0#e000e06&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@63
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
@75
@@ -15,6 +17,4 @@
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|b+0#00e0003&|u|f@1|e|r| +0#0000000&@50
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|a|n|g|e| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
-@57|6|8|,|7| @9|3|5|%|
+@57|6|8|,|7| @9|3|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_05.dump b/runtime/syntax/testdir/dumps/vim_ex_command_05.dump
index d5cccc328..16808301f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_05.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|a|n|g|e| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|k|e@1|p|s|c|r|i|p|t| +0#0000000&@55
@6|\+0#e000e06&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@63
-@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
+@6>\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&||| @54
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|B|a|r|"| +0#0000000&@56
-> @74
+@75
|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&@66
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|a|d@1|r|=|l+0#00e0003&|i|n|e|s| +0#0000000&@55
@@ -15,6 +17,4 @@
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|b+0#00e0003&|u|f@1|e|r| +0#0000000&@50
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@57|8|6|,|0|-|1| @7|4|5|%|
+@57|8|6|,|7| @9|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_06.dump b/runtime/syntax/testdir/dumps/vim_ex_command_06.dump
index ce8e79657..84e7b7c4d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_06.dump
@@ -1,9 +1,11 @@
| +0&#ffffff0@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|c|o|u|n|t| +0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&@58
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|a|n|g|e| +0#0000000&@60
+@6>\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|a|n|g|e| +0#0000000&@60
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6>\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
+@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|r|e|g|i|s|t|e|r| +0#0000000&@57
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@6|\+0#e000e06&| +0#0000000&|-+0#e000e06&|k|e@1|p|s|c|r|i|p|t| +0#0000000&@55
@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
@@ -15,6 +17,4 @@
@75
@75
|"+0#0000e05&| |E|r@1|o|r|s| +0#0000000&@66
-@75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r|=+0#0000000#ffffff0|a|r|g|u|m|e|n|t|s| |-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r| +0#0000000#ffffff0|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@8
-@57|1|0|4|,|7| @8|5@1|%|
+@57|1|0|4|,|7| @8|5|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_07.dump b/runtime/syntax/testdir/dumps/vim_ex_command_07.dump
index e88760eaa..18df71935 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_07.dump
@@ -1,9 +1,11 @@
-|c+0#af5f00255#ffffff0|o|m@1|a|n|d|!| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r|=+0#0000000#ffffff0|a|r|g|u|m|e|n|t|s| |-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r| +0#0000000#ffffff0|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@8
+|"+0#0000e05#ffffff0| |E|r@1|o|r|s| +0#0000000&@66
@75
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r|=+0#0000000#ffffff0|a|r|g|u|m|e|n|t|s| |-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#ffffff16#ff404010|b|a|d|a|t@1|r| +0#0000000#ffffff0|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@8
@75
-|"+0#0000e05&| |D|e|l|e|t|e| +0#0000000&@66
@75
->d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@60
+>"+0#0000e05&| |D|e|l|e|t|e| +0#0000000&@66
+@75
+|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@60
|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&|-+0#e000e06&|b|u|f@1|e|r| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@52
@75
|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
@@ -15,6 +17,4 @@
|c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@66
|c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
|c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@53
-@75
-@75
-@57|1|2@1|,|1| @8|6|5|%|
+@57|1|2@1|,|1| @8|6|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_08.dump b/runtime/syntax/testdir/dumps/vim_ex_command_08.dump
index 702da91b6..ed60644c8 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_08.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|c+0#af5f00255#ffffff0|o|m|c|l|e|a|r| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@53
+@75
+@75
|"+0#0000e05&| |I|s@1|u|e| |#|1|4|1|3|5| |(|v|i|m|.|v|i|m| |s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t|i|n|g| |b|r|o|k|e|n| |w|r|t| |s|y|s|t|e|m|(|)@1| +0#0000000&@10
@75
-|c+0#af5f00255&|o|m| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|l|s|'|)+0#e000e06&| +0#0000000&@49
+>c+0#af5f00255&|o|m| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#e000e06&|'+0#e000002&|l|s|'|)+0#e000e06&| +0#0000000&@49
+@75
@75
-> @74
|"+0#0000e05&| |I|s@1|u|e| |#|1|7|0@1|1| |(|W|r|o|n|g| |v|i|m|U|s|e|r|C|m|d|A|t@1|r|E|r@1|o|r| |h|i|g|h|l|i|g|h|t|i|n|g| |i|n| |v|i|m|.|v|i|m|)| +0#0000000&@8
@75
|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|b|a|n|g| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|*+0#00e0003&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|f+0#00e0003&|i|l|e| +0#0000000&|M+0#0000001#ffff4012|a|k|e| +0#0000000#ffffff0|A|s|y|n|c|R|u|n| |-|p|r|o|g|r|a|m|=|m|a|k|e| |@| |<|a|r|g|s|>
@@ -15,6 +17,4 @@
@4|i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|b|a|n|g|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&|!|"| +0#0000000&@52
@8|:|<+0#e000e06&|l|i|n|e|1|>|,+0#0000000&|<+0#e000e06&|l|i|n|e|2|>|s+0#af5f00255&|/+0#e000e06&|\+0#0000000&|v|"|[|^|"|]|*|"|/+0#e000e06&|\+0#0000000&|=|s|u|b|s|t|i|t|u|t|e|(|s|u|b|m|a|t|c|h|(|0|)|,| |"| |"|,| @8
|"|•|"|,| |"|g|"|)|/+0#e000e06&|g|e| +0#0000000&@62
-@4|e+0#af5f00255&|n|d|i|f| +0#0000000&@65
-@4|i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|a|r|g|s|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&@1| +0#0000000&@53
-@57|1|4|0|,|0|-|1| @6|7|5|%|
+@57|1|4|0|,|1| @8|7|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_09.dump b/runtime/syntax/testdir/dumps/vim_ex_command_09.dump
index bc89f1753..709a488b7 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_09.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@3|i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|a|r|g|s|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&@1| +0#0000000&@53
+| +0&#ffffff0@7|:|<+0#e000e06&|l|i|n|e|1|>|,+0#0000000&|<+0#e000e06&|l|i|n|e|2|>|s+0#af5f00255&|/+0#e000e06&|\+0#0000000&|v|"|[|^|"|]|*|"|/+0#e000e06&|\+0#0000000&|=|s|u|b|s|t|i|t|u|t|e|(|s|u|b|m|a|t|c|h|(|0|)|,| |"| |"|,| @8
+|"|•|"|,| |"|g|"|)|/+0#e000e06&|g|e| +0#0000000&@62
+@4|e+0#af5f00255&|n|d|i|f| +0#0000000&@65
+@4|i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|a|r|g|s|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&@1| +0#0000000&@53
@8|:|<+0#e000e06&|l|i|n|e|1|>|,+0#0000000&|<+0#e000e06&|l|i|n|e|2|>|!+0#af5f00255&|c+0#00e0e07&|o|l|u|m|n| +0#0000000&|-+0#af5f00255&|t+0#00e0e07&| +0#0000000&@40
-@4|e+0#af5f00255&|l|s|e| +0#0000000&@66
+@4>e+0#af5f00255&|l|s|e| +0#0000000&@66
@8|:|<+0#e000e06&|l|i|n|e|1|>|,+0#0000000&|<+0#e000e06&|l|i|n|e|2|>|!+0#af5f00255&|c+0#00e0e07&|o|l|u|m|n| +0#0000000&|-+0#af5f00255&|t+0#00e0e07&| +0#0000000&|-+0#af5f00255&|s+0#00e0e07&|'+0#0000000&|<+0#e000e06&|a|r|g|s|>|'+0#0000000&| @29
@4|e+0#af5f00255&|n|d|i|f| +0#0000000&@65
-@4>i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|b|a|n|g|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&|!|"| +0#0000000&@52
+@4|i+0#af5f00255&|f| +0#0000000&|"+0#e000002&|<|b|a|n|g|>|"| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|"+0#e000002&|!|"| +0#0000000&@52
@8|:|<+0#e000e06&|l|i|n|e|1|>|,+0#0000000&|<+0#e000e06&|l|i|n|e|2|>|s+0#af5f00255&|/+0#e000e06&|•+0#0000000&|/+0#e000e06&| +0#0000000&|/+0#e000e06&|g|e| +0#0000000&@42
@4|e+0#af5f00255&|n|d|i|f| +0#0000000&@65
|}+0#e000e06&| +0#0000000&@73
@@ -14,7 +17,4 @@
@75
|"+0#0000e05&| |U|n|r|e|p|o|r|t|e|d| |i|s@1|u|e| |(|:|m|a|p| |w|i|t|h| |t|r|a|i|l|i|n|g| |b|a|r| |i|n| |r|e|p|l|a|c|e|m|e|n|t| |t|e|x|t|)| +0#0000000&@11
@75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@62
-@6|\+0#e000e06&| +0#0000000&|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| ||| @53
-@6|\+0#e000e06&| +0#0000000&|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&|f|o@1| |b|a|r| ||| @46
-@57|1|5|7|,|5| @8|8|4|%|
+@57|1|5|6|,|5| @8|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_10.dump b/runtime/syntax/testdir/dumps/vim_ex_command_10.dump
index 5cc86bdcf..fa68a4147 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_10.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&|f|o@1| |b|a|r| ||| @46
+| +0&#ffffff0@74
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|F+0#0000001#ffff4012|o@1| +0#0000000#ffffff0@62
+@6|\+0#e000e06&| +0#0000000&|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| ||| @53
+@6|\+0#e000e06&| +0#0000000&|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&|f|o@1| |b|a|r| ||| @46
@6|\+0#e000e06&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@56
-@75
+> @74
@75
|"+0#0000e05&| |I|s@1|u|e| |#|1|8|4|1|4| |(|S|y|n|t|a|x| |g|r|o|u|p| |v|i|m|U|s|e|r|C|m|d|R|e|p|l|a|c|e|m|e|n|t| |l|a|c|k|i|n|g| |a| |k|e@1|p|e|n|d|?|)| +0#0000000&@4
-> @74
+@75
|d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57
@2|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|M+0#0000001#ffff4012|y|F|u|n|c|t|i|o|n| +0#0000000#ffffff0|M|y|F|u|n|c|(+0#e000e06&|)| +0#0000000&@44
@2|#+0#0000e05&| |I| |a|m| |a| |c|o|m@1|e|n|t| +0#0000000&@56
@@ -14,7 +17,4 @@
@75
|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|M+0#0000001#ffff4012|y|F|u|n|c|t|i|o|n| +0#0000000#ffffff0|c+0#af5f00255&|a|l@1| +0#0000000&|M|y|F|u|n|c|(+0#e000e06&|)| +0#0000000&@41
|"+0#0000e05&| |I| |a|m| |a| |c|o|m@1|e|n|t| +0#0000000&@58
-@75
-|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|T+0#0000001#ffff4012|o|g@1|l|e|W|r|a|p| +0#0000000#ffffff0|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|w+0#e000e06&|r|a|p|!| +0#0000000&@40
-|"+0#0000e05&| |I| |a|m| |a| |c|o|m@1|e|n|t| |b|u|t| |I| |d|i|d|n|'|t| |g|e|t| |h|i|g|h|l|i|g|h|t|e|d| +0#0000000&@29
-@57|1|7|4|,|0|-|1| @6|9|4|%|
+@57|1|7|3|,|0|-|1| @6|9|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_11.dump b/runtime/syntax/testdir/dumps/vim_ex_command_11.dump
index 1e50b3f14..0514b852a 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_command_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_command_11.dump
@@ -1,9 +1,12 @@
-|"+0#0000e05#ffffff0| |I| |a|m| |a| |c|o|m@1|e|n|t| |b|u|t| |I| |d|i|d|n|'|t| |g|e|t| |h|i|g|h|l|i|g|h|t|e|d| +0#0000000&@29
+|"+0#0000e05#ffffff0| |I| |a|m| |a| |c|o|m@1|e|n|t| +0#0000000&@58
@75
+|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|T+0#0000001#ffff4012|o|g@1|l|e|W|r|a|p| +0#0000000#ffffff0|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|w+0#e000e06&|r|a|p|!| +0#0000000&@40
+|"+0#0000e05&| |I| |a|m| |a| |c|o|m@1|e|n|t| |b|u|t| |I| |d|i|d|n|'|t| |g|e|t| |h|i|g|h|l|i|g|h|t|e|d| +0#0000000&@29
@75
+> @74
|"+0#0000e05&| |I|s@1|u|e| |#|1|8|4@1|8| |(|c|o|m@1|e|n|t| |f|o|r| |s|u|b|s|e|q|u|e|n|t| |c|o|m@1|a|n|d| |i|s| |n|o|t| |h|i|g|h|l|i|g|h|t|e|d|)| +0#0000000&@8
@75
->d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57
+|d+0#af5f00255&|e|f| +0#0000000&|V|i|m|9|C|o|n|t|e|x|t|(+0#e000e06&|)| +0#0000000&@57
@2|c+0#af5f00255&|o|m@1|a|n|d|!| +0#0000000&|-+0#e000e06&|n|a|r|g|s|=|1+0#00e0003&| +0#0000000&|-+0#e000e06&|c|o|m|p|l|e|t|e|=|f+0#00e0003&|i|l|e| +0#0000000&|R+0#0000001#ffff4012|g| +0#0000000#ffffff0|:|t+0#af5f00255&|e|r|m| +0#0000000&|r|g| |<|a|r|g|s|>| @21
@2|#+0#0000e05&| |c|o|m@1|a|n|d|!| |-|n|a|r|g|s|=|1| |-|c|o|m|p|l|e|t|e|=|f|i|l|e| |R|g| |:|t|e|r|m| |+@1|s|h|e|l@1| |r|g| |<|a|r|g|s|>| +0#0000000&@11
|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@@ -14,7 +17,4 @@
|~| @73
|~| @73
|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9|2|,|1| @8|B|o|t|
+| +0#0000000&@56|1|9|1|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/input/vim9_blocks.vim b/runtime/syntax/testdir/input/vim9_blocks.vim
index 20a68fc5a..ec448986a 100644
--- a/runtime/syntax/testdir/input/vim9_blocks.vim
+++ b/runtime/syntax/testdir/input/vim9_blocks.vim
@@ -44,6 +44,10 @@ echo "Foo" | { | echo "Bar"
var foo = 42
} | echo "Baz"

+{| echo "Foo" |}
+
+
# dictionary
+
{}->items()

diff --git a/runtime/syntax/testdir/input/vim_ex_autocmd.vim b/runtime/syntax/testdir/input/vim_ex_autocmd.vim
index 2216a427e..8e43936cf 100644
--- a/runtime/syntax/testdir/input/vim_ex_autocmd.vim
+++ b/runtime/syntax/testdir/input/vim_ex_autocmd.vim
@@ -55,6 +55,8 @@ autocmd foogroup BufRead *.txt {
echo "Bar"
}

+autocmd BufRead *.txt {| echo "Foo" |}
+

" Multiline {cmd} arg

diff --git a/runtime/syntax/testdir/input/vim_ex_command.vim b/runtime/syntax/testdir/input/vim_ex_command.vim
index a2f01a708..9b97a66db 100644
--- a/runtime/syntax/testdir/input/vim_ex_command.vim
+++ b/runtime/syntax/testdir/input/vim_ex_command.vim
@@ -22,6 +22,8 @@ command! Foo {
echo "Baz"
}

+command! Foo {| echo "Foo" |}
+
command! -addr=arguments -bang -bar -buffer -complete=arglist -count=1 -keepscript -nargs=* -range=% -register Foo echo "Foo"

command! -addr=arguments -bang -bar -buffer -complete=arglist -count=1 -keepscript -nargs=* -range=% -register Foo
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 21c9d3b56..9e553ef35 100644
--- 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 <dougk...@gmail.com>
-" Last Change: 2026 Aug 12
+" Last Change: 2026 Aug 22
" Former Maintainer: Charles E. Campbell

" DO NOT CHANGE DIRECTLY.
@@ -579,7 +579,12 @@ Vim9 syn match vimAugroup contained "\<aug\%[roup]\>\ze\s*\%([#|]\|$\)" skipwhi
" ================================

" TODO: explicitly match the {cmd} arg rather than bailing out to TOP
-syn region vimAutocmdBlock contained matchgroup=vimSep start="{" end="^\s*\zs}" contains=@vimDefBodyList
+syn region vimAutocmdBlock contained
+ \ matchgroup=vimSep
+ \ start="{\ze\s*\%($\|[#|]\)"
+ \ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
+ \ contains=@vimDefBodyList

syn match vimAutocmdGroup contained "\%(\["|[:space:]]\|[^"|[:space:]]\)\+" skipwhite nextgroup=vimAutoEvent,vimAutoEventGlob
syn match vimAutocmdBang contained " \@1<=!" skipwhite nextgroup=vimAutocmdGroup,vimAutoEvent,vimAutoEventGlob
@@ -736,8 +741,9 @@ syn region vimUserCmdReplacement contained
\ keepend
syn region vimUserCmdBlock contained
\ matchgroup=vimSep
- \ start="{"
+ \ start="{\ze\s*\%($\|[#|]\)"
\ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
\ contains=@vimDefBodyList,@vimUserCmdList

syn keyword vimDelcommand contained delc[ommand] skipwhite nextgroup=vimDelcommandAttr,vimDelcommandName
@@ -2149,6 +2155,7 @@ syn region vim9Block contained
\ matchgroup=vimSep
\ start="{\ze\s*\%($\|[#|]\)"
\ end="^\s*\zs}"
+ \ end="\%(\\@<!|\s*\)\=\zs}"
\ skipwhite nextgroup=vim9Comment,vimCmdSep
\ contains=@vimDefBodyList

Reply all
Reply to author
Forward
0 new messages