runtime(vim): Update syntax file (#13671)

Commit: 
https://github.com/vim/vim/commit/c79646dfb10126f4ef22734d8713f2352197435e
Author: dkearns <[email protected]>
Date:   Fri Jan 5 08:58:48 2024 +1100

    runtime(vim): Update syntax file (https://github.com/vim/vim/issues/13671)
    
    Support multiline :syntax commands.
    
    Match :syn-cchar option in :syn-{keyword,region}.
    
    Signed-off-by: Doug Kearns <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/syntax/testdir/dumps/vim_syntax_00.dump 
b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
new file mode 100644
index 000000000..db529678e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
@@ -0,0 +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
+@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#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&|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| 
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_01.dump 
b/runtime/syntax/testdir/dumps/vim_syntax_01.dump
new file mode 100644
index 000000000..e09801dff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_01.dump
@@ -0,0 +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
+@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&|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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_02.dump 
b/runtime/syntax/testdir/dumps/vim_syntax_02.dump
new file mode 100644
index 000000000..063a33b76
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_02.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_03.dump 
b/runtime/syntax/testdir/dumps/vim_syntax_03.dump
new file mode 100644
index 000000000..b3a23ddc7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_03.dump
@@ -0,0 +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|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_99.dump 
b/runtime/syntax/testdir/dumps/vim_syntax_99.dump
new file mode 100644
index 000000000..c50589d57
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_syntax_99.dump
@@ -0,0 +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
+@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
+@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#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| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_03.dump 
b/runtime/syntax/testdir/dumps/vim_variables_03.dump
index 3260c374b..3e8d21cb8 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_03.dump
@@ -1,5 +1,5 @@
 |l+0#af5f00255#ffffff0|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
-| +0#e000e06&@5|\| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| 
+0#0000000&|e|x|p|r| @55
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|]+0#0000000&| |=+0#af5f00255&| 
+0#0000000&|e|x|p|r| @55
 @75
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| 
|b+0#00e0e07&|a|r|]+0#0000000&| |.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @52
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| 
|b+0#00e0e07&|a|r|]+0#0000000&| |++0#af5f00255&|=| +0#0000000&|e|x|p|r| @52
@@ -7,8 +7,8 @@
 @75
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| 
|b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| 
|=+0#af5f00255&| +0#0000000&|e|x|p|r| @48
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| @65
-| +0#e000e06&@5|\| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @62
-| +0#e000e06&@5|\| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| 
+0#0000000&|e|x|p|r| @55
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r|;+0#0000000&| @62
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|z|]+0#0000000&| |=+0#af5f00255&| 
+0#0000000&|e|x|p|r| @55
 @75
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| 
|b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| 
|.+0#af5f00255&|=| +0#0000000&|e|x|p|r| @47
 |l+0#af5f00255&|e|t| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| 
|b+0#00e0e07&|a|r|;+0#0000000&| |b+0#00e0e07&|a|z|]+0#0000000&| 
|++0#af5f00255&|=| +0#0000000&|e|x|p|r| @47
diff --git a/runtime/syntax/testdir/dumps/vim_variables_05.dump 
b/runtime/syntax/testdir/dumps/vim_variables_05.dump
index 7a932601b..8254fbe48 100644
--- a/runtime/syntax/testdir/dumps/vim_variables_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_variables_05.dump
@@ -2,12 +2,12 @@
 |u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
 |u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| 
+0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@61
 |u+0#af5f00255&|n|l|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-| +0#e000e06&@5|\| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
 > @74
 |u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
 |u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| 
+0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@60
 |u+0#af5f00255&|n|l|e|t|!| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@64
-| +0#e000e06&@5|\| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&@63
 @75
 |u+0#af5f00255&|n|l|e|t| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@64
 |u+0#af5f00255&|n|l|e|t|!| +0#0000000&|$+0#e000e06&|F|O@1| +0#0000000&@63
diff --git a/runtime/syntax/testdir/input/vim_syntax.vim 
b/runtime/syntax/testdir/input/vim_syntax.vim
new file mode 100644
index 000000000..e8c112cea
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_syntax.vim
@@ -0,0 +1,75 @@
+" Vim :syntax highlighting
+
+syn keyword testKeyword
+      \ conceal
+      \ cchar=&
+      \ contained
+      \ containedin=testContainer
+      \ nextgroup=testNext,@testCluster
+      \ transparent
+      \ skipwhite
+      \ skipempty
+      \ skipnl
+      \ keyword1
+      \ keyword2
+      \ keyword3
+
+syn match testMatch
+      \ "pattern"
+      \ conceal
+      \ cchar=&
+      \ contained
+      \ containedin=testContainer
+      \ nextgroup=testNext,@testCluster
+      \ transparent
+      \ skipwhite
+      \ skipempty
+      \ skipnl
+      \ contains=testContained1,testContained2
+      \ fold
+      \ display
+      \ extend
+      \ excludenl
+      \ keepend
+
+syn region testRegion
+      \ start="start-pattern"
+      \ end="end-pattern"
+      \ skip="skip-pattern"
+      \ contained
+      \ conceal
+      \ cchar=&
+      \ contained
+      \ containedin=testContainer
+      \ nextgroup=testNext,@testCluster
+      \ transparent
+      \ skipwhite
+      \ skipempty
+      \ skipnl
+      \ contains=testContained1,testContained2
+      \ oneline
+      \ fold
+      \ display
+      \ extend
+      \ concealends
+      \ excludenl
+      \ keepend
+
+syn cluster testCluster
+      \ contains=testContained1,testContained2,testContained3
+
+syn cluster testCluster
+      \ add=testAdd
+      \ remove=testRemove
+
+
+" check multiline group list
+syn keyword testKeyword
+      \ nextgroup=
+      \ testNext , 
+      \ testNext2 , 
+      \ @testCluster 
+      \ skipwhite
+      \ keyword4
+      \ keyword5
+      \ keyword6
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index d697538db..edfef438c 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -7,6 +7,7 @@
 "      2023 Dec 06 by Vim Project (add missing assignment operators)
 "      2023 Dec 10 by Vim Project (improve variable matching)
 "      2023 Dec 21 by Vim Project (improve ex command matching)
+"      2023 Dec 30 by Vim Project (:syntax improvements)
 " Version:     9.0-25
 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
@@ -525,16 +526,22 @@ syn match vimNormCmds contained   ".*$"
 
 " Syntax: {{{2
 "=======
-syn match      vimGroupList    contained       "@\=[^  ,]*"    
contains=vimGroupSpecial,vimPatSep
-syn match      vimGroupList    contained       "@\=[^  ,]*,"   
nextgroup=vimGroupList contains=vimGroupSpecial,vimPatSep
-syn keyword    vimGroupSpecial contained       ALL     ALLBUT  CONTAINED       
TOP
+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
 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
+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
+syn match      vimSynNextgroup contained       "nextgroup="    
nextgroup=vimGroupList,vimGroupListContinue skipwhite skipnl
+if has("conceal")
+ 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
@@ -552,7 +559,7 @@ 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="\\\|\|" matchgroup=vimSep end="$\||" 
contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError
+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 cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem
@@ -574,21 +581,17 @@ syn keyword       vimSynType      contained       include 
skipwhite nextgroup=vimGroupList
 syn cluster vimFuncBodyList add=vimSynType
 
 " Syntax: keyword {{{2
-syn cluster    vimSynKeyGroup  
contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
+syn cluster    vimSynKeyGroup  
contains=vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
 syn keyword    vimSynType      contained       keyword skipwhite 
nextgroup=vimSynKeyRegion
-syn region     vimSynKeyRegion contained oneline keepend       
matchgroup=vimGroupName start="\h\w*" skip="\\\|\|" matchgroup=vimSep 
end="|\|$" contains=@vimSynKeyGroup
+syn region     vimSynKeyRegion contained         keepend       
matchgroup=vimGroupName start="\h\w*" skip="\\\|\|\|
\s*\" matchgroup=vimSep 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=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vim9Comment
+syn cluster    vimSynMtchGroup 
contains=vimContinue,vimMtchComment,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vim9Comment
 syn keyword    vimSynType      contained       match   skipwhite 
nextgroup=vimSynMatchRegion
-syn region     vimSynMatchRegion       contained keepend       
matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" 
contains=@vimSynMtchGroup
+syn region     vimSynMatchRegion       contained keepend       
matchgroup=vimGroupName start="\h\w*" skip="
\s*\" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
 syn match      vimSynMtchOpt   contained       
"\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
-if has("conceal")
- syn match     vimSynMtchOpt   contained       "\<cchar="      
nextgroup=vimSynMtchCchar
- syn match     vimSynMtchCchar contained       "\S"
-endif
 syn cluster vimFuncBodyList add=vimSynMtchGroup
 
 " Syntax: off and on {{{2
@@ -596,13 +599,13 @@ 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=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
+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="\\\|\|" end="|\|$" contains=@vimSynRegGroup
+syn region     vimSynRegion    contained keepend       matchgroup=vimGroupName 
start="\h\w*" skip="\\\|\\|
\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      vimSynMtchGrp   contained       "matchgroup="   
nextgroup=vimGroup,vimHLGroup
-syn region     vimSynRegPat    contained extend        
start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\|\\z1"  end="\z1"  
contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
+syn region     vimSynRegPat    contained extend        
start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\|\\z1\|
\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\+"
@@ -694,7 +697,8 @@ syn match   vimLineComment  +^[     :]*".*$+        
contains=@vimCommentGroup,vimCommentStri
 syn match      vimLineComment  +^[     :]*"\("[^"]*"\|[^"]\)*$+        
contains=@vimCommentGroup,vimCommentString,vimCommentTitle
 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
-syn match      vimContinue     "^\s*\"
+" Note: Look-behind to work around nextgroup skipnl consuming leading 
whitespace and preventing a match
+syn match      vimContinue     "\%(^\s*\)\@32<=\"
 syn region     vimString       start="^\s*\\z(['"]\)" skip='\\\|\\z1' 
end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
 syn match      vimCommentTitleLeader   '"\s\+'ms=s+1   contained
 
@@ -955,6 +959,7 @@ 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
@@ -1050,6 +1055,8 @@ if !exists("skip_vim_syntax_inits")
  hi def link vimSynFoldMethod  Type
  hi def link vimSynKeyContainedin      vimSynContains
  hi def link vimSynKeyOpt      vimSynOption
+ hi def link vimSynCchar       vimSynOption
+ hi def link vimSynCcharValue  Character
  hi def link vimSynMtchGrp     vimSynOption
  hi def link vimSynMtchOpt     vimSynOption
  hi def link vimSynNextgroup   vimSynOption

-- 
-- 
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/E1rLVkz-00D6uZ-Ih%40256bit.org.

Raspunde prin e-mail lui