From fe249721390cae1ad26f8637bdfe4716bb5bb241 Mon Sep 17 00:00:00 2001 From: Doug Kearns Date: Tue, 11 Nov 2025 16:37:09 +0000 Subject: [PATCH] runtime(vim): Update base syntax, refine object constructor matching Match "object" and "<" ... ">" separately with dedicated syntax groups to allow for highlighting distinct from that generally used for types. closes: #18721 Signed-off-by: Doug Kearns Signed-off-by: Christian Brabandt --- runtime/syntax/generator/vim.vim.base | 18 ++++++++++------- .../dumps/vim9_types_example_object_00.dump | 4 ++-- .../dumps/vim9_types_example_object_01.dump | 12 +++++------ .../testdir/dumps/vim9_types_object_00.dump | 20 +++++++++---------- .../testdir/dumps/vim9_types_object_01.dump | 12 +++++------ .../input/vim9_types_example_object.vim | 2 -- .../testdir/input/vim9_types_object.vim | 4 ++-- runtime/syntax/vim.vim | 18 ++++++++++------- 8 files changed, 48 insertions(+), 42 deletions(-) diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index 7aae3055b7..6f1b73be47 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 " Doug Kearns -" Last Change: 2025 Nov 10 +" Last Change: 2025 Nov 11 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -585,9 +585,10 @@ syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType conta syn match vimTypeSep contained ":\%(\s\|\n\)\@=" skipwhite nextgroup=@vimType syn keyword vimType contained blob bool channel float job number string void syn keyword vimTypeAny contained any -syn region vimTypeObject contained - \ matchgroup=vimType - \ start="\v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64 |#+0#0000e05&| |V|i|m|9| |o|b|j|e|c|t| |t|y|p|e| |c|o|n|s|t|r|u|c|t|o|r| +0#0000000&@44 -|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|T|y|p|e|O|b|j|e|c|t| |T|o|d|o| +0#0000000&@31 -|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|V|a|r|i|a|b|l|e|T|y|p|e|O|b|j|e|c|t| |T|o|d|o| +0#0000000&@22 @75 @75 |#+0#0000e05&| |I|s@1|u|e| |#|1|8|6|7@1| |(|N|o| |r|e|c|o|g|n|i|t|i|o|n| |o|f| |o|b|j|e|c|t|<|a|n|y|>| |t|y|p|e|s| |-| |A|l|i|a|k|s|e|i| |B|u|d|a|v|e|i|)| +0#0000000&@3 @@ -17,4 +15,6 @@ |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66 @75 |e+0#af5f00255&|n|u|m| +0#0000000&|E| |i+0#af5f00255&|m|p|l|e|m|e|n|t|s| +0#0000000&|I| @55 +@2|I|N|S|T|A|N|C|E| @64 +@75 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim9_types_example_object_01.dump b/runtime/syntax/testdir/dumps/vim9_types_example_object_01.dump index 4f2100214d..21d48d7c59 100644 --- a/runtime/syntax/testdir/dumps/vim9_types_example_object_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_types_example_object_01.dump @@ -1,11 +1,9 @@ -| +0&#ffffff0@1|d+0#af5f00255&|e|f| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@52 -@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|C|"| +0#0000000&@60 -@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66 +| +0&#ffffff0@1|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66 |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66 @75 ->e+0#af5f00255&|n|u|m| +0#0000000&|E| |i+0#af5f00255&|m|p|l|e|m|e|n|t|s| +0#0000000&|I| @55 +|e+0#af5f00255&|n|u|m| +0#0000000&|E| |i+0#af5f00255&|m|p|l|e|m|e|n|t|s| +0#0000000&|I| @55 @2|I|N|S|T|A|N|C|E| @64 -@75 +> @74 @2|d+0#af5f00255&|e|f| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@52 @4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|E|"| +0#0000000&@60 @2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@66 @@ -17,4 +15,6 @@ |e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|c+0#0000000&|,| |e|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|o|s| @57 @75 |~+0#4040ff13&| @73 -| +0#0000000&@56|1|9|,|1| @9|B|o|t| +|~| @73 +|~| @73 +| +0#0000000&@56|1|9|,|0|-|1| @7|B|o|t| diff --git a/runtime/syntax/testdir/dumps/vim9_types_object_00.dump b/runtime/syntax/testdir/dumps/vim9_types_object_00.dump index ea653037e4..efd7f06a07 100644 --- a/runtime/syntax/testdir/dumps/vim9_types_object_00.dump +++ b/runtime/syntax/testdir/dumps/vim9_types_object_00.dump @@ -1,20 +1,20 @@ >v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64 |#+0#0000e05&| |V|i|m|9| |o|b|j|e|c|t| |t|y|p|e| |c|o|n|s|t|r|u|c|t|o|r| +0#0000000&@44 -|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|I|y|p|e|O|b|j|e|c|t| |T|o|d|o| +0#0000000&@31 -|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|9|V|a|r|i|a|b|l|e|I|y|p|e|O|b|j|e|c|t| |T|o|d|o| +0#0000000&@22 +|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|T|y|p|e|O|b|j|e|c|t| |T|o|d|o| +0#0000000&@31 +|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |v|i|m|T|y|p|e|O|b|j|e|c|t|B|r|a|c|k|e|t| |T|i|t|l|e| +0#0000000&@23 @75 @75 |i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&|I| @63 |e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@62 @75 -|v+0#af5f00255&|a|r| +0#0000000&|a|:| |o+0#00e0003&|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&| +0#0000000&@58 -|v+0#af5f00255&|a|r| +0#0000000&|b|:| |o+0#00e0003&|b|j|e|c|t|<|a|n|y|>| +0#0000000&@56 -|v+0#af5f00255&|a|r| +0#0000000&|c|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&@1| +0#0000000&@50 -|v+0#af5f00255&|a|r| +0#0000000&|d|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|a|n|y|>@1| +0#0000000&@48 +|v+0#af5f00255&|a|r| +0#0000000&|a|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&| +0#0000000&@58 +|v+0#af5f00255&|a|r| +0#0000000&|b|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&| +0#0000000&@56 +|v+0#af5f00255&|a|r| +0#0000000&|c|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&@1| +0#0000000&@50 +|v+0#af5f00255&|a|r| +0#0000000&|d|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&@1| +0#0000000&@48 @75 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@66 -@4|a|r|g|1|:| |o+0#00e0003&|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&|,+0#0000000&| @54 -@4|a|r|g|2|:| |o+0#00e0003&|b|j|e|c|t|<|a|n|y|>|,+0#0000000&| @52 -@4|a|r|g|3|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&@1|,+0#0000000&| @46 -@4|a|r|g|4|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|a|n|y|>@1|)+0#e000e06&| +0#0000000&@44 +@4|a|r|g|1|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&|,+0#0000000&| @54 +@4|a|r|g|2|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&|,+0#0000000&| @52 +@4|a|r|g|3|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&@1|,+0#0000000&| @46 +@4|a|r|g|4|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&@1|)| +0#0000000&@44 @57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim9_types_object_01.dump b/runtime/syntax/testdir/dumps/vim9_types_object_01.dump index d4031aa10d..7f9cd31527 100644 --- a/runtime/syntax/testdir/dumps/vim9_types_object_01.dump +++ b/runtime/syntax/testdir/dumps/vim9_types_object_01.dump @@ -1,15 +1,15 @@ | +0&#ffffff0@74 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@66 -@4|a|r|g|1|:| |o+0#00e0003&|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&|,+0#0000000&| @54 -@4|a|r|g|2|:| |o+0#00e0003&|b|j|e|c|t|<|a|n|y|>|,+0#0000000&| @52 -@4|a|r|g|3|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&@1|,+0#0000000&| @46 -@4>a|r|g|4|:| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|a|n|y|>@1|)+0#e000e06&| +0#0000000&@44 +@4|a|r|g|1|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&|,+0#0000000&| @54 +@4|a|r|g|2|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&|,+0#0000000&| @52 +@4|a|r|g|3|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&@1|,+0#0000000&| @46 +@4>a|r|g|4|:| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|a+0#00e0003&|n|y|>+0#e000e06&@1|)| +0#0000000&@44 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 @75 -|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)|:+0#0000000&| |o+0#00e0003&|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&| +0#0000000&@54 +|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)|:+0#0000000&| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&| +0#0000000&@54 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 @75 -|d+0#af5f00255&|e|f| +0#0000000&|B|a|z|(+0#e000e06&|)|:+0#0000000&| |o+0#00e0003&|b|j|e|c|t|<|o|b|j|e|c|t|<|I+0#0000000&|>+0#00e0003&@1| +0#0000000&@46 +|d+0#af5f00255&|e|f| +0#0000000&|B|a|z|(+0#e000e06&|)|:+0#0000000&| |o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|o+0#0000001#ffff4012|b|j|e|c|t|<+0#e000e06#ffffff0|I+0#0000000&|>+0#e000e06&@1| +0#0000000&@46 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68 @75 |~+0#4040ff13&| @73 diff --git a/runtime/syntax/testdir/input/vim9_types_example_object.vim b/runtime/syntax/testdir/input/vim9_types_example_object.vim index 4d36cc9259..f5f902db7f 100644 --- a/runtime/syntax/testdir/input/vim9_types_example_object.vim +++ b/runtime/syntax/testdir/input/vim9_types_example_object.vim @@ -1,7 +1,5 @@ vim9script # Vim9 object type constructor -# VIM_TEST_SETUP hi link vimTypeObject Todo -# VIM_TEST_SETUP hi link vim9VariableTypeObject Todo # Issue #18677 (No recognition of object types - Aliaksei Budavei) diff --git a/runtime/syntax/testdir/input/vim9_types_object.vim b/runtime/syntax/testdir/input/vim9_types_object.vim index 7066464559..7cf6eec05a 100644 --- a/runtime/syntax/testdir/input/vim9_types_object.vim +++ b/runtime/syntax/testdir/input/vim9_types_object.vim @@ -1,7 +1,7 @@ vim9script # Vim9 object type constructor -# VIM_TEST_SETUP hi link vimIypeObject Todo -# VIM_TEST_SETUP hi link vim9VariableIypeObject Todo +# VIM_TEST_SETUP hi link vimTypeObject Todo +# VIM_TEST_SETUP hi link vimTypeObjectBracket Title interface I diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 5e1185a2b0..25879f46cf 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -2,7 +2,7 @@ " Language: Vim script " Maintainer: Hirohito Higashi " Doug Kearns -" Last Change: 2025 Nov 10 +" Last Change: 2025 Nov 11 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -639,9 +639,10 @@ syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType conta syn match vimTypeSep contained ":\%(\s\|\n\)\@=" skipwhite nextgroup=@vimType syn keyword vimType contained blob bool channel float job number string void syn keyword vimTypeAny contained any -syn region vimTypeObject contained - \ matchgroup=vimType - \ start="\