From: Bram Moolenaar Date: Wed, 12 Aug 2020 13:48:55 +0000 (+0200) Subject: patch 8.2.1427: Vim9: cannot use a range with marks in :def function X-Git-Tag: v8.2.1427 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c5ad34878a338f1db57337b5ca9f68c0c39424e;p=vim 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 #6686) --- diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 5d9447d8c..3c7724df1 100644 --- 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 index 6edd5ec2e..63c9c3d30 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1427, /**/ 1426, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index 88108f498..dfcff508f 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6567,7 +6567,7 @@ compile_def_function(ufunc_T *ufunc, int set_return_type, cctx_T *outer_cctx) * '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)