diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index fabf808e11..a2ac5d2c87 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 "\"+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 0000000000..76085289fe --- /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 0000000000..acfcf5431d --- /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 0000000000..89477a99e4 --- /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 0000000000..d9869fe34b --- /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 0000000000..cadd7bbaa8 --- /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 3383702c2c..88e7ad4715 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 71d7f37ef6..0021b7433a 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 "\