# HG changeset patch # User Bram Moolenaar # Date 1597240806 -7200 # Node ID 3b312e56e2b879c6dd4a7f878cacf4f495cf3bc0 # Parent 02dadec5fe330dda0c5be0ee3504c4dbe4d90a1e patch 8.2.1427: Vim9: cannot use a range with marks in :def function Commit: https://github.com/vim/vim/commit/7c5ad34878a338f1db57337b5ca9f68c0c39424e Author: Bram Moolenaar Date: Wed Aug 12 15:48:55 2020 +0200 patch 8.2.1427: Vim9: cannot use a range with marks in :def function Problem: Vim9: cannot use a range with marks in :def function. Solution: Parse range after colon. (closes https://github.com/vim/vim/issues/6686) diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -83,20 +83,37 @@ enddef def Test_disassemble_exec_expr() let res = execute('disass s:EditExpand') - assert_match('\d*_EditExpand.*' .. - ' let filename = "file".*' .. - '\d PUSHS "file".*' .. - '\d STORE $0.*' .. - ' let filenr = 123.*' .. - '\d STORE 123 in $1.*' .. - ' edit the`=filename``=filenr`.txt.*' .. - '\d PUSHS "edit the".*' .. - '\d LOAD $0.*' .. - '\d LOAD $1.*' .. - '\d 2STRING stack\[-1\].*' .. - '\d PUSHS ".txt".*' .. - '\d EXECCONCAT 4.*' .. - '\d PUSHNR 0.*' .. + assert_match('\d*_EditExpand\_s*' .. + ' let filename = "file"\_s*' .. + '\d PUSHS "file"\_s*' .. + '\d STORE $0\_s*' .. + ' let filenr = 123\_s*' .. + '\d STORE 123 in $1\_s*' .. + ' edit the`=filename``=filenr`.txt\_s*' .. + '\d PUSHS "edit the"\_s*' .. + '\d LOAD $0\_s*' .. + '\d LOAD $1\_s*' .. + '\d 2STRING stack\[-1\]\_s*' .. + '\d\+ PUSHS ".txt"\_s*' .. + '\d\+ EXECCONCAT 4\_s*' .. + '\d\+ PUSHNR 0\_s*' .. + '\d\+ RETURN', + res) +enddef + +def s:YankRange() + norm! m[jjm] + :'[,']yank +enddef + +def Test_disassemble_yank_range() + let res = execute('disass s:YankRange') + assert_match('\d*_YankRange.*' .. + ' norm! m\[jjm\]\_s*' .. + '\d EXEC norm! m\[jjm\]\_s*' .. + ' :''\[,''\]yank\_s*' .. + '\d EXEC :''\[,''\]yank\_s*' .. + '\d PUSHNR 0\_s*' .. '\d RETURN', res) enddef diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1427, +/**/ 1426, /**/ 1425, diff --git a/src/vim9compile.c b/src/vim9compile.c --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6567,7 +6567,7 @@ compile_def_function(ufunc_T *ufunc, int * 'text'->func() should not be confused with 'a mark */ cmd = ea.cmd; - if (*cmd != '\'') + if (*cmd != '\'' || starts_with_colon) { ea.cmd = skip_range(ea.cmd, NULL); if (ea.cmd > cmd && !starts_with_colon)