Mercurial > vim
changeset 34086:29432c35ce31
runtime(vim): Update syntax file (#13671)
Commit: https://github.com/vim/vim/commit/c79646dfb10126f4ef22734d8713f2352197435e
Author: dkearns <dougkearns@gmail.com>
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 <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 04 Jan 2024 23:00:05 +0100 |
parents | 25df082b97ea |
children | 630e70746a1f |
files | runtime/syntax/testdir/dumps/vim_syntax_00.dump runtime/syntax/testdir/dumps/vim_syntax_01.dump runtime/syntax/testdir/dumps/vim_syntax_02.dump runtime/syntax/testdir/dumps/vim_syntax_03.dump runtime/syntax/testdir/dumps/vim_syntax_99.dump runtime/syntax/testdir/dumps/vim_variables_03.dump runtime/syntax/testdir/dumps/vim_variables_05.dump runtime/syntax/testdir/input/vim_syntax.vim runtime/syntax/vim.vim |
diffstat | 9 files changed, 205 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /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|
new file mode 100644 --- /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|%|
new file mode 100644 --- /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|%|
new file mode 100644 --- /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|%|
new file mode 100644 --- /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|
--- 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
--- 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
new file mode 100644 --- /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
--- 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 "@\=[^ \t,]*" contains=vimGroupSpecial,vimPatSep -syn match vimGroupList contained "@\=[^ \t,]*," 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 s " 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="\\\\\|\\\|\n\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 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="\\\\\|\\|\|\n\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="\n\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 " 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="\\\\\|\\\|\n\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\|\n\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 +^[ \t:]*".*$+ syn match vimLineComment +^[ \t:]*"\("[^"]*"\|[^"]\)*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle syn match vim9LineComment +^[ \t:]\+#.*$+ 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