runtime(vim): Update base-syntax, match bare mark ranges Commit: https://github.com/vim/vim/commit/dcff4973731f3016a66adaa6edd869221913f178 Author: Doug Kearns <dougkea...@gmail.com> Date: Sun Jun 22 18:47:49 2025 +0200
runtime(vim): Update base-syntax, match bare mark ranges Remove unmatchable :normal {mark,register} matches. The arg to :normal is now handled separately and contained marks and registers are no longer matched. closes: #17571 Signed-off-by: Doug Kearns <dougkea...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index fabf808e1..a2ac5d2c8 100644 --- a/runtime/syntax/generator/vim.vim.base +++ b/runtime/syntax/generator/vim.vim.base @@ -949,18 +949,17 @@ syn match vimMarkArgError contained "["^.(){}0-9]" syn cluster vimMarkArg contains=vimMarkArg,vimMarkArgError " Marks, Registers, Addresses, Filters: {{{2 +syn match vimMark "'[a-zA-Z0-9]\ze\s*$" +syn match vimMark "'[[\]{}()<>'`"^.]\ze\s*$" syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark "'[[\]{}()<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark ",\zs'[[\]{}()<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1 +syn match vimMark "'[[\]{}()<>'`"^.]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 +syn match vimMark ",\zs'[[\]{}()<>'`"^.]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1 syn match vimPlainMark contained "'[a-zA-Z0-9]" syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter syn match vimRegister '[^,;[{: ]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]' -syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]' -syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]' syn match vimRegister '@"' syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]' syn match vimLetRegister contained '@["0-9\-a-zA-Z:.%#=*+~_/]' diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_00.dump b/runtime/syntax/testdir/dumps/vim_ex_range_00.dump index 2b0ad770e..ecc0c73c6 100644 --- a/runtime/syntax/testdir/dumps/vim_ex_range_00.dump +++ b/runtime/syntax/testdir/dumps/vim_ex_range_00.dump @@ -1,20 +1,20 @@ >"+0#0000e05#ffffff0| |E|x| |c|o|m@1|a|n|d| |r|a|n|g|e|s| +0#0000000&@55 @75 +@75 |'+0#e000002&|<|,+0#0000000&|'+0#e000002&|>|p+0#af5f00255&|r|i|n|t| +0#0000000&@64 |'+0#e000002&|(|,+0#0000000&|'+0#e000002&|)|p+0#af5f00255&|r|i|n|t| +0#0000000&@64 |'+0#e000002&|{|,+0#0000000&|'+0#e000002&|}|p+0#af5f00255&|r|i|n|t| +0#0000000&@64 |'+0#e000002&|[|,+0#0000000&|'+0#e000002&|]|p+0#af5f00255&|r|i|n|t| +0#0000000&@64 -|~+0#4040ff13&| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -|~| @73 -| +0#0000000&@56|1|,|1| @10|A|l@1| +@75 +|:|'+0#e000002&|<|,+0#0000000&|'+0#e000002&|>|p+0#af5f00255&|r|i|n|t| +0#0000000&@63 +|:|'+0#e000002&|(|,+0#0000000&|'+0#e000002&|)|p+0#af5f00255&|r|i|n|t| +0#0000000&@63 +|:|'+0#e000002&|{|,+0#0000000&|'+0#e000002&|}|p+0#af5f00255&|r|i|n|t| +0#0000000&@63 +|:|'+0#e000002&|[|,+0#0000000&|'+0#e000002&|]|p+0#af5f00255&|r|i|n|t| +0#0000000&@63 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|<|,+0#0000000&|'+0#e000002&|>|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|(|,+0#0000000&|'+0#e000002&|)|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|{|,+0#0000000&|'+0#e000002&|}|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|[|,+0#0000000&|'+0#e000002&|]|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +@75 +|"+0#0000e05&| |b|a|r|e| |m|a|r|k| |r|a|n|g|e|s| +0#0000000&@56 +@57|1|,|1| @10|T|o|p| diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_01.dump b/runtime/syntax/testdir/dumps/vim_ex_range_01.dump new file mode 100644 index 000000000..76085289f --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_range_01.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&||| |'+0#e000002&|<|,+0#0000000&|'+0#e000002&|>|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|(|,+0#0000000&|'+0#e000002&|)|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|{|,+0#0000000&|'+0#e000002&|}|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|[|,+0#0000000&|'+0#e000002&|]|p+0#af5f00255&|r|i|n|t| +0#0000000&@57 +@75 +>"+0#0000e05&| |b|a|r|e| |m|a|r|k| |r|a|n|g|e|s| +0#0000000&@56 +@75 +|'+0#e000002&|a| +0#0000000&@72 +|'+0#e000002&|k| +0#0000000&@72 +|'+0#e000002&|z| +0#0000000&@72 +|'+0#e000002&|A| +0#0000000&@72 +|'+0#e000002&|K| +0#0000000&@72 +|'+0#e000002&|Z| +0#0000000&@72 +|'+0#e000002&|0| +0#0000000&@72 +|'+0#e000002&|9| +0#0000000&@72 +|'+0#e000002&|[| +0#0000000&@72 +|'+0#e000002&|]| +0#0000000&@72 +|'+0#e000002&|{| +0#0000000&@72 +|'+0#e000002&|}| +0#0000000&@72 +@57|1|9|,|1| @9|1|8|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_02.dump b/runtime/syntax/testdir/dumps/vim_ex_range_02.dump new file mode 100644 index 000000000..acfcf5431 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_range_02.dump @@ -0,0 +1,20 @@ +|'+0#e000002#ffffff0|}| +0#0000000&@72 +|'+0#e000002&|(| +0#0000000&@72 +|'+0#e000002&|)| +0#0000000&@72 +|'+0#e000002&|<| +0#0000000&@72 +|'+0#e000002&|>| +0#0000000&@72 +>'+0#e000002&|`| +0#0000000&@72 +|'+0#e000002&@1| +0#0000000&@72 +|'+0#e000002&|"| +0#0000000&@72 +|'+0#e000002&|^| +0#0000000&@72 +|'+0#e000002&|.| +0#0000000&@72 +@75 +@1|:|'+0#e000002&|a| +0#0000000&@70 +|:| |'+0#e000002&|a| +0#0000000&@70 +|:|'+0#e000002&|a| +0#0000000&@71 +|:|'+0#e000002&|k| +0#0000000&@71 +|:|'+0#e000002&|z| +0#0000000&@71 +|:|'+0#e000002&|A| +0#0000000&@71 +|:|'+0#e000002&|K| +0#0000000&@71 +|:|'+0#e000002&|Z| +0#0000000&@71 +@57|3|7|,|1| @9|4|3|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_03.dump b/runtime/syntax/testdir/dumps/vim_ex_range_03.dump new file mode 100644 index 000000000..89477a99e --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_range_03.dump @@ -0,0 +1,20 @@ +|:+0&#ffffff0|'+0#e000002&|Z| +0#0000000&@71 +|:|'+0#e000002&|0| +0#0000000&@71 +|:|'+0#e000002&|9| +0#0000000&@71 +|:|'+0#e000002&|[| +0#0000000&@71 +|:|'+0#e000002&|]| +0#0000000&@71 +>:|'+0#e000002&|{| +0#0000000&@71 +|:|'+0#e000002&|}| +0#0000000&@71 +|:|'+0#e000002&|(| +0#0000000&@71 +|:|'+0#e000002&|)| +0#0000000&@71 +|:|'+0#e000002&|<| +0#0000000&@71 +|:|'+0#e000002&|>| +0#0000000&@71 +|:|'+0#e000002&|`| +0#0000000&@71 +|:|'+0#e000002&@1| +0#0000000&@71 +|:|'+0#e000002&|"| +0#0000000&@71 +|:|'+0#e000002&|^| +0#0000000&@71 +|:|'+0#e000002&|.| +0#0000000&@71 +@75 +|e+0#af5f00255&|c|h|o| +0#0000000&|||'+0#e000002&|a| +0#0000000&@66 +|e+0#af5f00255&|c|h|o||+0#0000000&| |'+0#e000002&|a| +0#0000000&@66 +@57|5@1|,|1| @9|6|9|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_04.dump b/runtime/syntax/testdir/dumps/vim_ex_range_04.dump new file mode 100644 index 000000000..d9869fe34 --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_range_04.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o||+0#0000000&| |'+0#e000002&|a| +0#0000000&@66 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|a| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|k| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|z| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|A| +0#0000000&@65 +>e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|K| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|Z| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|0| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|9| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|[| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|]| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|{| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|}| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|(| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|)| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|<| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|>| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|`| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&@1| +0#0000000&@65 +@57|7|3|,|1| @9|9|4|%| diff --git a/runtime/syntax/testdir/dumps/vim_ex_range_05.dump b/runtime/syntax/testdir/dumps/vim_ex_range_05.dump new file mode 100644 index 000000000..cadd7bbaa --- /dev/null +++ b/runtime/syntax/testdir/dumps/vim_ex_range_05.dump @@ -0,0 +1,20 @@ +|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&||| |'+0#e000002&@1| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|"| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|^| +0#0000000&@65 +|e+0#af5f00255&|c|h|o| +0#0000000&||| |'+0#e000002&|.| +0#0000000&@65 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|9|0|,|0|-|1| @7|B|o|t| diff --git a/runtime/syntax/testdir/input/vim_ex_range.vim b/runtime/syntax/testdir/input/vim_ex_range.vim index 3383702c2..88e7ad471 100644 --- a/runtime/syntax/testdir/input/vim_ex_range.vim +++ b/runtime/syntax/testdir/input/vim_ex_range.vim @@ -1,6 +1,90 @@ " Ex command ranges + '<,'>print '(,')print '{,'}print '[,']print + +:'<,'>print +:'(,')print +:'{,'}print +:'[,']print + +echo | '<,'>print +echo | '(,')print +echo | '{,'}print +echo | '[,']print + +" bare mark ranges + +'a +'k +'z +'A +'K +'Z +'0 +'9 +'[ +'] +'{ +'} +'( +') +'< +'> +'` +'' +'" +'^ +'. + + :'a +: 'a +:'a +:'k +:'z +:'A +:'K +:'Z +:'0 +:'9 +:'[ +:'] +:'{ +:'} +:'( +:') +:'< +:'> +:'` +:'' +:'" +:'^ +:'. + +echo |'a +echo| 'a +echo | 'a +echo | 'k +echo | 'z +echo | 'A +echo | 'K +echo | 'Z +echo | '0 +echo | '9 +echo | '[ +echo | '] +echo | '{ +echo | '} +echo | '( +echo | ') +echo | '< +echo | '> +echo | '` +echo | '' +echo | '" +echo | '^ +echo | '. + diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 71d7f37ef..0021b7433 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1004,18 +1004,17 @@ syn match vimMarkArgError contained "["^.(){}0-9]" syn cluster vimMarkArg contains=vimMarkArg,vimMarkArgError " Marks, Registers, Addresses, Filters: {{{2 +syn match vimMark "'[a-zA-Z0-9]\ze\s*$" +syn match vimMark "'[[\]{}()<>'`"^.]\ze\s*$" syn match vimMark "'[a-zA-Z0-9]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark "'[[\]{}()<>]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark ",\zs'[[\]{}()<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst1 +syn match vimMark "'[[\]{}()<>'`"^.]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 +syn match vimMark ",\zs'[[\]{}()<>'`"^.]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 -syn match vimMark "\<norm\%[al]\s\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst1 syn match vimMarkNumber "[-+]\d\+" contained contains=vimOper nextgroup=vimSubst1 syn match vimPlainMark contained "'[a-zA-Z0-9]" syn match vimRange "[`'][a-zA-Z0-9],[`'][a-zA-Z0-9]" contains=vimMark skipwhite nextgroup=vimFilter syn match vimRegister '[^,;[{: ]\zs"[a-zA-Z0-9.%#:_\-/]\ze[^a-zA-Z_":0-9]' -syn match vimRegister '\<norm\s\+\zs"[a-zA-Z0-9]' -syn match vimRegister '\<normal\s\+\zs"[a-zA-Z0-9]' syn match vimRegister '@"' syn match vimPlainRegister contained '"[a-zA-Z0-9\-:.%#*+=]' syn match vimLetRegister contained '@["0-9\-a-zA-Z:.%#=*+~_/]' -- -- 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 vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uTO3A-00ENB0-8Q%40256bit.org.