runtime(vim): Update syntax and ftplugin files (#13924)
Commit:
https://github.com/vim/vim/commit/21ce159e05615fd139c564b734a4bffc9f3fdc4b
Author: dkearns <[email protected]>
Date: Mon Jan 29 04:54:08 2024 +1100
runtime(vim): Update syntax and ftplugin files
(https://github.com/vim/vim/issues/13924)
Improve matching of line-continuations and interspersed comments.
These are now also matched in multiline syntax command patterns,
dictionary literals, and parenthesised expressions and argument lists.
Signed-off-by: Doug Kearns <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 1d340e475..575af7405 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -58,7 +58,7 @@ endif
" Set 'comments' to format dashed lists in comments, both in Vim9 and legacy
" script.
-setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#,sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#\\ ,:#,sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"\\
,:\"
" set 'include' to recognize import commands
setlocal include=\v^\s*import\s*(autoload)?
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
b/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
new file mode 100644
index 000000000..7733c0b1a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n|s| |w|i|t|h|
|i|n|t|e|r|s|p|e|r|s|e|d| |c|o|m@1|e|n|t|s| +0#0000000&@23
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@61
+@6|"+0#0000e05&|\| |p|a|r|a|m| |a| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|,+0#0000000&| @64
+@6|"+0#0000e05&|\| |p|a|r|a|m| |b| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|,+0#0000000&| @64
+@6|"+0#0000e05&|\| |p|a|r|a|m| |c| +0#0000000&@58
+@6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&| +0#0000000&@65
+@6|\+0#e000e06&|)| +0#0000000&@66
+@2|e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@65
+| +0#0000e05&@7|"|\| |s|t|a|r|t| |s|t|r|i|n|g| +0#0000000&@51
+@8|\+0#e000e06&| +0#0000000&|$|"| @62
+| +0#0000e05&@7|"|\| |p|r|i|n|t| |a| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|a+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|a|}+0#e000e06&|,+0#0000000&| @54
+| +0#0000e05&@7|"|\| |p|r|i|n|t| |b| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|b+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|b|}+0#e000e06&|,+0#0000000&| @54
+| +0#0000e05&@7|"|\| |p|r|i|n|t| |c| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|c+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|c|}+0#e000e06&| +0#0000000&@55
+|"|i|n|p|u|t|/|v|i|m|_|l|i|n|e|_|c|o|n|t|i|n|u|a|t|i|o|n|.|v|i|m|"| |4|9|L|,|
|6|2|6|B| @13|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_01.dump
b/runtime/syntax/testdir/dumps/vim_line_continuation_01.dump
new file mode 100644
index 000000000..a2e4820ac
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_01.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#ffffff0@7|"|\| |p|r|i|n|t| |a| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|a+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|a|}+0#e000e06&|,+0#0000000&| @54
+| +0#0000e05&@7|"|\| |p|r|i|n|t| |b| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|b+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|b|}+0#e000e06&|,+0#0000000&| @54
+| +0#0000e05&@7|"|\| |p|r|i|n|t| |c| +0#0000000&@56
+@8>\+0#e000e06&| +0#0000000&|c+0#af5f00255&| +0#0000000&|=+0#af5f00255&|
+0#0000000&|{+0#e000e06&|a+0#00e0e07&|:|c|}+0#e000e06&| +0#0000000&@55
+| +0#0000e05&@7|"|\| |e|n|d| |s|t|r|i|n|g| +0#0000000&@53
+@8|\+0#e000e06&|"+0#0000000&| @64
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@65
+@6|"+0#0000e05&|\| |a|r|g| |1| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|1+0#e000002&@1|,+0#0000000&| @63
+@6|"+0#0000e05&|\| |a|r|g| |2| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|2+0#e000002&@1|,+0#0000000&| @63
+@6|"+0#0000e05&|\| |a|r|g| |3| +0#0000000&@60
+@6|\+0#e000e06&| +0#0000000&|3+0#e000002&@1| +0#0000000&@64
+@6|\+0#e000e06&|)| +0#0000000&@66
+@75
+@57|1|9|,|2|-|9| @7|4|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
new file mode 100644
index 000000000..c4ceded84
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|l+0#af5f00255&|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|
+0#0000000&|=+0#af5f00255&| +0#0000000&|#+0#e000e06&|{| +0#0000000&@61
+@6|"+0#0000e05&|\| |p|a|i|r| |1| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&|
|1+0#e000002&|,+0#0000000&| @61
+@6|"+0#0000e05&|\| |p|a|i|r| |2| +0#0000000&@59
+@6>\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&|
|2+0#e000002&|,+0#0000000&| @61
+@6|"+0#0000e05&|\| |p|a|i|r| |3| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&|
+0#0000000&@62
+@6|\+0#e000e06&|}| +0#0000000&@66
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y|
+0#0000000&|=+0#af5f00255&| +0#0000000&|[| @61
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|1+0#e000002&|,+0#0000000&| @64
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@65
+@6|\+0#e000e06&|]+0#0000000&| @66
+|~+0#4040ff13&| @73
+| +0#0000000&@56|3|7|,|7| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
new file mode 100644
index 000000000..05ea46454
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&|)| +0#0000000&@66
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|d+0#00e0e07&|i|c|t|
+0#0000000&|=+0#af5f00255&| +0#0000000&|#+0#e000e06&|{| +0#0000000&@61
+@6|"+0#0000e05&|\| |p|a|i|r| |1| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&|
|1+0#e000002&|,+0#0000000&| @61
+@6|"+0#0000e05&|\| |p|a|i|r| |2| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&|
|2+0#e000002&|,+0#0000000&| @61
+@6|"+0#0000e05&|\| |p|a|i|r| |3| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&|
+0#0000000&@62
+@6|\+0#e000e06&|}| +0#0000000&@66
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y|
+0#0000000&|=+0#af5f00255&| +0#0000000&|[| @61
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|1+0#e000002&|,+0#0000000&| @64
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
+| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@65
+@6>\+0#e000e06&|]+0#0000000&| @66
+@57|4|9|,|7| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_00.dump
b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
index db529678e..21dcc8893 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
@@ -1,20 +1,20 @@
->"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |h|i|g|h|l|i|g|h|t|i|n|g|
+0#0000000&@48
+>"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d| +0#0000000&@53
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h|
+0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l|
|c|o|m@1|e|n|t| +0#0000000&@20
+|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s|
|n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&|k|e|y|w|o|r|d|
|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
+|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
+|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"|
|t|a|i|l| |c|o|m@1|e|n|t| @43
+@75
+|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
@75
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|,|@|t|e|s|t|C|l|u|s|t|e|r|
@35
-@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
-|"|i|n|p|u|t|/|v|i|m|_|s|y|n|t|a|x|.|v|i|m|"| |7|5|L|,| |1|5|0|2|B| @23|1|,|1|
@10|T|o|p|
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+|"|i|n|p|u|t|/|v|i|m|_|s|y|n|t|a|x|.|v|i|m|"| |1|6|4|L|,| |3|7|2|9|B|
@22|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_01.dump
b/runtime/syntax/testdir/dumps/vim_syntax_01.dump
index e09801dff..800e4a709 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_01.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&@57
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|,|@|t|e|s|t|C|l|u|s|t|e|r|
@35
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6>\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
-@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
-@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
-@57|1|9|,|7| @9|2|3|%|
+@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+@57|1|9|,|7| @10|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_02.dump
b/runtime/syntax/testdir/dumps/vim_syntax_02.dump
index 063a33b76..1caffc1e0 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_02.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l|
+0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|t|a|r|t|=+0#0000000&|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&@45
-@6>\+0#e000e06&|
+0#0000000&|e+0#00e0003&|n|d|=+0#0000000&|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"|
+0#0000000&@49
-@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|k|i|p|=+0#0000000&|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&@47
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
-@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|,|@|t|e|s|t|C|l|u|s|t|e|r|
@35
-@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
-@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
-@57|3|7|,|7| @9|5@1|%|
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
+@6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
+> @74
+|s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h|
+0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55
+@6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
+@6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n|
+0#0000000&@47
+| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b|
+0#0000000&@53
+| +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
+| +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@57|3|7|,|0|-|1| @7|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_03.dump
b/runtime/syntax/testdir/dumps/vim_syntax_03.dump
index b3a23ddc7..31ab5274a 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_03.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e|
+0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
-@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
-@6>\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3|
@13
-@75
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
-@6|\+0#e000e06&|
+0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
-@75
-@75
-|"+0#0000e05&| |c|h|e|c|k| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t|
+0#0000000&@46
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
-@57|5@1|,|7| @9|8|7|%|
+| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+@57|5@1|,|7| @9|3@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_04.dump
b/runtime/syntax/testdir/dumps/vim_syntax_04.dump
new file mode 100644
index 000000000..d5d9f4074
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l|
+0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
+@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
+@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
+@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
+@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
+@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n|
+0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"|
+0#0000000&@45
+@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+@57|7|3|,|7| @9|4|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_05.dump
b/runtime/syntax/testdir/dumps/vim_syntax_05.dump
new file mode 100644
index 000000000..47d60c2e1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&|
+0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"|
+0#0000000&@47
+@6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55
+@6|\+0#e000e06&|
+0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"|
+0#0000000&@49
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&|
+0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r|
@41
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&|
+0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r|
@34
+@6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
+@6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+@57|9|1|,|7| @9|5|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_06.dump
b/runtime/syntax/testdir/dumps/vim_syntax_06.dump
new file mode 100644
index 000000000..db1872ce7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n|
+0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6>\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|
@28
+@6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
+@6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
+@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
+@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
+@6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
+@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
+@6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
+@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@57|1|0|9|,|7| @8|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_07.dump
b/runtime/syntax/testdir/dumps/vim_syntax_07.dump
new file mode 100644
index 000000000..eb3631761
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3|
@13
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
+@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
+@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&|
+0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
+@75
+@75
+|"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
+@57|1|2|7|,|7| @8|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_08.dump
b/runtime/syntax/testdir/dumps/vim_syntax_08.dump
new file mode 100644
index 000000000..3906e5550
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_08.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|1| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|2| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|3| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|4| +0#0000000&|k|e|y|w|o|r|d| @45
+>s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|5| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|6| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|7| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|8| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|9| +0#0000000&|k|e|y|w|o|r|d| @45
+@75
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
+@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@57|1|4|5|,|1| @8|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_99.dump
b/runtime/syntax/testdir/dumps/vim_syntax_99.dump
index c50589d57..4ca16c695 100644
--- a/runtime/syntax/testdir/dumps/vim_syntax_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_syntax_99.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6|\+0#e000e06&|
+0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3|
@13
+|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|6| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|7| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|8| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|9| +0#0000000&|k|e|y|w|o|r|d| @45
@75
-|s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r|
+0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
-@6|\+0#e000e06&|
+0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
-@75
-@75
-|"+0#0000e05&| |c|h|e|c|k| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t|
+0#0000000&@46
|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d|
+0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&@51
+@6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
@6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t| |,| @56
-@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|2| |,| @55
-@6|\+0#e000e06&| +0#0000000&|@|t|e|s|t|C|l|u|s|t|e|r| @54
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r|
|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
+@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
-@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
-@57|7|5|,|7| @9|B|o|t|
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
+> @74
+@57|1|6|4|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/input/vim_line_continuation.vim
b/runtime/syntax/testdir/input/vim_line_continuation.vim
new file mode 100644
index 000000000..a32666af3
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_line_continuation.vim
@@ -0,0 +1,49 @@
+" Vim line continuations with interspersed comments
+
+function Foo(
+ "\ param a
+ \ a,
+ "\ param b
+ \ b,
+ "\ param c
+ \ c
+ \)
+ echomsg
+ "\ start string
+ \ $"
+ "\ print a
+ \ a = {a:a},
+ "\ print b
+ \ b = {a:b},
+ "\ print c
+ \ c = {a:c}
+ "\ end string
+ \"
+endfunction
+
+call Foo(
+ "\ arg 1
+ \ 11,
+ "\ arg 2
+ \ 22,
+ "\ arg 3
+ \ 33
+ \)
+
+let dict = #{
+ "\ pair 1
+ \ a: 1,
+ "\ pair 2
+ \ b: 2,
+ "\ pair 3
+ \ c: 3
+ \}
+
+let array = [
+ "\ element 1
+ \ 1,
+ "\ element 2
+ \ 2,
+ "\ element 3
+ \ 3
+ \]
diff --git a/runtime/syntax/testdir/input/vim_syntax.vim
b/runtime/syntax/testdir/input/vim_syntax.vim
index e8c112cea..197d4ac9d 100644
--- a/runtime/syntax/testdir/input/vim_syntax.vim
+++ b/runtime/syntax/testdir/input/vim_syntax.vim
@@ -1,75 +1,164 @@
-" Vim :syntax highlighting
+" Vim :syntax command
+
+syn match testMatch "pattern" contained " tail comment
+" NOTE: comments not currently supported
+syn keyword testKeyword keyword contained " tail comment
+syn region testRegion start="start-pattern" skip="skip-pattern"
end="end-pattern" contained " tail comment
+
+" Multiline commands
syn keyword testKeyword
+ "\ OPTIONS
+ "\ conceal option
\ conceal
+ "\ cchar option
\ cchar=&
+ "\ contained option
\ contained
+ "\ containedin option
\ containedin=testContainer
- \ nextgroup=testNext,@testCluster
+ "\ nextgroup option
+ \ nextgroup=testNext0,@testCluster
+ "\ transparent option
\ transparent
+ "\ skipwhite option
\ skipwhite
+ "\ skipempty option
\ skipempty
+ "\ skipnl option
\ skipnl
+ "\ KEYWORDS LIST
+ "\ keyword 1
\ keyword1
+ "\ keyword 2
\ keyword2
+ "\ keyword 3
\ keyword3
syn match testMatch
- \ "pattern"
+ "\ MATCH PATTERN
+ "\ pattern start
+ \ /
+ "\ part 1 description
+ \pat1a .* pat1b
+ "\ part 2 description
+ \pat2a .* pat2b
+ "\ part 3 description
+ \pat3a .* pat3b
+ "\ pattern end
+ \/
+ "\ OPTIONS
+ "\ conceal option
\ conceal
+ "\ cchar option
\ cchar=&
+ "\ contained option
\ contained
+ "\ containedin option
\ containedin=testContainer
- \ nextgroup=testNext,@testCluster
+ "\ nextgroup option
+ \ nextgroup=testNext0,@testCluster
+ "\ transparent option
\ transparent
+ "\ skipwhite option
\ skipwhite
+ "\ skipempty option
\ skipempty
+ "\ skipnl option
\ skipnl
+ "\ contains option
\ contains=testContained1,testContained2
+ "\ fold option
\ fold
+ "\ display option
\ display
+ "\ extend option
\ extend
+ "\ excludenl option
\ excludenl
+ "\ keepend option
\ keepend
syn region testRegion
+ "\ OPTIONS
+ "\ start option
\ start="start-pattern"
- \ end="end-pattern"
+ "\ skip option
\ skip="skip-pattern"
- \ contained
+ "\ end option
+ \ end="end-pattern"
+ "\ conceal option
\ conceal
+ "\ cchar option
\ cchar=&
+ "\ contained option
\ contained
+ "\ containedin option
\ containedin=testContainer
- \ nextgroup=testNext,@testCluster
+ "\ nextgroup option
+ \ nextgroup=testNext0,@testCluster
+ "\ transparent option
\ transparent
+ "\ skipwhite option
\ skipwhite
+ "\ skipempty option
\ skipempty
+ "\ skipnl option
\ skipnl
+ "\ contains option
\ contains=testContained1,testContained2
+ "\ oneline option
\ oneline
+ "\ fold option
\ fold
+ "\ display option
\ display
+ "\ extend option
\ extend
+ "\ concealends option
\ concealends
+ "\ excludenl option
\ excludenl
+ "\ keepend option
\ keepend
syn cluster testCluster
+ "\ OPTIONS
+ "\ contains option
\ contains=testContained1,testContained2,testContained3
syn cluster testCluster
+ "\ OPTIONS
+ "\ add option
\ add=testAdd
+ "\ remove option
\ remove=testRemove
-" check multiline group list
+" multiline group list
+
+syn keyword testNext0 keyword
+syn keyword testNext1 keyword
+syn keyword testNext2 keyword
+syn keyword testNext3 keyword
+syn keyword testNext4 keyword
+syn keyword testNext5 keyword
+syn keyword testNext6 keyword
+syn keyword testNext7 keyword
+syn keyword testNext8 keyword
+syn keyword testNext9 keyword
+
syn keyword testKeyword
+ "\ nextgroup option
\ nextgroup=
- \ testNext ,
- \ testNext2 ,
- \ @testCluster
- \ skipwhite
+ "\ a comment
+ \ testNext0 , testNext1 ,
+ "\ a comment
+ \ testNext[2-8].* ,
+ "\ a comment
+ \ testNext9 , @testCluster skipwhite
+ "\ KEYWORDS LIST
\ keyword4
\ keyword5
\ keyword6
+
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 72a0d215a..ccbc20aa6 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -13,6 +13,7 @@
" 2024 Jan 23 by Vim Project (add :[23]match commands)
" 2024 Jan 25 by Vim Project (WinNewPre autocommand)
" 2024 Jan 27 by Vim Project (add foreach() function)
+" 2024 Jan 28 by Vim Project (improve line-continuation matching)
" Version: 9.0-25
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1
@@ -247,7 +248,7 @@ syn keyword vimAugroupKey contained aug[roup]
" Operators: {{{2
" =========
-syn cluster vimOperGroup
contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,vimContinue,vim9Comment,vimVar
+syn cluster vimOperGroup
contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,@vimContinue,vim9Comment,vimVar
syn match vimOper "||\|&&\|[-+*/%.!]"
skipwhite nextgroup=vimString,vimSpecFile
syn match vimOper
"\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite
nextgroup=vimString,vimSpecFile
syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>"
skipwhite nextgroup=vimString,vimSpecFile
@@ -535,23 +536,23 @@ syn match vimNormCmds contained ".*$"
" Syntax: {{{2
"=======
-syn match vimGroupList contained "@\=[^[:space:],]\+"
nextgroup=vimGroupListComma skipwhite skipnl
-syn match vimGroupListContinue contained "\"
nextgroup=vimGroupList skipwhite
-syn match vimGroupListComma contained ","
nextgroup=vimGroupList,vimGroupListContinue skipwhite skipnl
-syn keyword vimGroupSpecial contained ALL ALLBUT
CONTAINED TOP
+syn match vimGroupList contained
"[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial
+syn region vimGroupList contained start=/^\s*["#]\
\|^\s*\\|[^[:space:],]\+\s*,/ skip=/\s*
\s*\\|\s*
\s*["#]\ \|^\s*\\|^\s*["#]\ / end=/[^[:space:],]\s*$\|[^[:space:],]\ze\s\+\w/
contains=@vimContinue,vimGroupSpecial
+syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED
TOP
+
if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror")
syn match vimSynError contained "\i\+"
syn match vimSynError contained "\i\+=" nextgroup=vimGroupList
endif
-syn match vimSynContains contained "\<contain\(s\|edin\)="
nextgroup=vimGroupList,vimGroupListContinue skipwhite skipnl
-syn match vimSynKeyContainedin contained "\<containedin="
nextgroup=vimGroupList
-syn match vimSynNextgroup contained "nextgroup="
nextgroup=vimGroupList,vimGroupListContinue skipwhite skipnl
+syn match vimSynContains contained "\<contain\%(s\|edin\)="
skipwhite skipnl nextgroup=vimGroupList
+syn match vimSynKeyContainedin contained "\<containedin="
skipwhite skipnl nextgroup=vimGroupList
+syn match vimSynNextgroup contained "\<nextgroup="
skipwhite skipnl nextgroup=vimGroupList
if has("conceal")
+ " no whitespace allowed after '='
syn match vimSynCchar contained "\<cchar="
nextgroup=vimSynCcharValue
syn match vimSynCcharValue contained "\S"
endif
-
syn match vimSyntax "\<sy\%[ntax]\>" contains=vimCommand
skipwhite nextgroup=vimSynType,vimComment,vim9Comment
syn match vimAuSyntax contained "\s+sy\%[ntax]"
contains=vimCommand skipwhite nextgroup=vimSynType,vimComment,vim9Comment
syn cluster vimFuncBodyList add=vimSyntax
@@ -568,9 +569,9 @@ syn keyword vimSynType contained clear
skipwhite nextgroup=vimGroupList
" Syntax: cluster {{{2
syn keyword vimSynType contained cluster skipwhite
nextgroup=vimClusterName
-syn region vimClusterName contained matchgroup=vimGroupName
start="\h\w*" skip="\\\|\\|
\s*\" matchgroup=vimSep end="$\||"
contains=vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
-syn match vimGroupAdd contained "add=" nextgroup=vimGroupList
-syn match vimGroupRem contained "remove="
nextgroup=vimGroupList
+syn region vimClusterName contained keepend matchgroup=vimGroupName
start="\h\w*\>" skip=+\\\|\\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="$\||"
contains=@vimContinue,vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+syn match vimGroupAdd contained keepend "\<add="
skipwhite skipnl nextgroup=vimGroupList
+syn match vimGroupRem contained keepend "\<remove="
skipwhite skipnl nextgroup=vimGroupList
syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
" Syntax: foldlevel {{{2
@@ -590,16 +591,16 @@ syn keyword vimSynType contained include
skipwhite nextgroup=vimGroupList
syn cluster vimFuncBodyList add=vimSynType
" Syntax: keyword {{{2
-syn cluster vimSynKeyGroup
contains=vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+syn cluster vimSynKeyGroup
contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
syn keyword vimSynType contained keyword skipwhite
nextgroup=vimSynKeyRegion
-syn region vimSynKeyRegion contained keepend
matchgroup=vimGroupName start="\h\w*" skip="\\\|\|\|
\s*\" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
+syn region vimSynKeyRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup
syn match vimSynKeyOpt contained
"\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
syn cluster vimFuncBodyList add=vimSynType
" Syntax: match {{{2
-syn cluster vimSynMtchGroup
contains=vimContinue,vimMtchComment,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vim9Comment
+syn cluster vimSynMtchGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment
syn keyword vimSynType contained match skipwhite
nextgroup=vimSynMatchRegion
-syn region vimSynMatchRegion contained keepend
matchgroup=vimGroupName start="\h\w*" skip="
\s*\" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
+syn region vimSynMatchRegion contained keepend
matchgroup=vimGroupName start="\h\w*\>" skip=+\\\|\|\|
\s*\\|
\s*"\ + matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup
syn match vimSynMtchOpt contained
"\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
syn cluster vimFuncBodyList add=vimSynMtchGroup
@@ -607,14 +608,14 @@ syn cluster vimFuncBodyList add=vimSynMtchGroup
syn keyword vimSynType contained enable list manual off
on reset
" Syntax: region {{{2
-syn cluster vimSynRegPatGroup
contains=vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
-syn cluster vimSynRegGroup
contains=vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+syn cluster vimSynRegPatGroup
contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation
+syn cluster vimSynRegGroup
contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
syn keyword vimSynType contained region skipwhite
nextgroup=vimSynRegion
-syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip="\\\|\\|
\s*\" end="|\|$" contains=@vimSynRegGroup
+syn region vimSynRegion contained keepend matchgroup=vimGroupName
start="\h\w*" skip=+\\\|\\|
\s*\\|
\s*"\ + end="|\|$" contains=@vimSynRegGroup
syn match vimSynRegOpt contained
"\%#=1\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
-syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1
nextgroup=vimSynRegPat
+syn match vimSynReg contained "\<\%(start\|skip\|end\)="
nextgroup=vimSynRegPat
syn match vimSynMtchGrp contained "matchgroup="
nextgroup=vimGroup,vimHLGroup
-syn region vimSynRegPat contained extend
start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\|\\z1\|
\s*\" end="\z1" contains=@vimSynRegPatGroup skipwhite
nextgroup=vimSynPatMod,vimSynReg
+syn region vimSynRegPat contained extend
start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip=/\\\|\\z1\|
\s*\\|
\s*"\ / end="\z1" contains=@vimSynRegPatGroup skipwhite
nextgroup=vimSynPatMod,vimSynReg
syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\="
syn match vimSynPatMod contained
"\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod
syn match vimSynPatMod contained "lc=\d\+"
@@ -708,7 +709,9 @@ syn match vimLineComment +^[
:]*"\("[^"]*"\|[^"]\)*$+ contains=@vimCommentGrou
syn match vim9LineComment +^[ :]\+#.*$+
contains=@vimCommentGroup,vimCommentString,vimCommentTitle
syn match vimCommentTitle
'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained
contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
" Note: Look-behind to work around nextgroup skipnl consuming leading
whitespace and preventing a match
-syn match vimContinue "\%(^\s*\)\@32<=\"
+syn match vimContinue "^\s*\zs\"
+syn match vimContinueComment '^\s*\zs["#]\ .*' contained
+syn cluster vimContinue contains=vimContinue,vimContinueComment
syn region vimString start="^\s*\\z(['"]\)" skip='\\\|\\z1'
end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained
@@ -948,6 +951,7 @@ if !exists("skip_vim_syntax_inits")
hi def link vimCondHL vimCommand
hi def link vimConst vimCommand
hi def link vimContinue Special
+ hi def link vimContinueComment vimComment
hi def link vimCtrlChar SpecialChar
hi def link vimEchoHLNone vimGroup
hi def link vimEchoHL vimCommand
@@ -970,7 +974,6 @@ if !exists("skip_vim_syntax_inits")
hi def link vimFuncSID Special
hi def link vimFuncVar Identifier
hi def link vimGroupAdd vimSynOption
- hi def link vimGroupListContinue vimContinue
hi def link vimGroupName vimGroup
hi def link vimGroupRem vimSynOption
hi def link vimGroupSpecial Special
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/E1rU9Rx-000Fo1-Ft%40256bit.org.