From: Bram Moolenaar Date: Sun, 23 Feb 2020 13:35:01 +0000 (+0100) Subject: patch 8.2.0306: Vim9: :substitute(pat(repl does not work in Vim9 script X-Git-Tag: v8.2.0306 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83f37b91426b419a913aa4f42d041b2111b57864;p=vim patch 8.2.0306: Vim9: :substitute(pat(repl does not work in Vim9 script Problem: Vim9: :substitute(pat(repl does not work in Vim9 script. Solution: Remember starting with a colon. (closes #5676) --- diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 70c0da2f0..62cab6e22 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1647,6 +1647,9 @@ do_one_cmd( int save_reg_executing = reg_executing; int ni; // set when Not Implemented char_u *cmd; +#ifdef FEAT_EVAL + int starts_with_colon; +#endif vim_memset(&ea, 0, sizeof(ea)); ea.line1 = 1; @@ -1689,6 +1692,7 @@ do_one_cmd( ea.cookie = cookie; #ifdef FEAT_EVAL ea.cstack = cstack; + starts_with_colon = *skipwhite(ea.cmd) == ':'; #endif if (parse_command_modifiers(&ea, &errormsg, FALSE) == FAIL) goto doend; @@ -1713,7 +1717,7 @@ do_one_cmd( ea.cmd = skipwhite(ea.cmd + 1); #ifdef FEAT_EVAL - if (current_sctx.sc_version == SCRIPT_VERSION_VIM9) + if (current_sctx.sc_version == SCRIPT_VERSION_VIM9 && !starts_with_colon) p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL); else #endif diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 5dbc9f9ea..a7bccec4e 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -580,6 +580,21 @@ def Test_substitute_cmd() setline(1, 'something') :substitute(some(other( assert_equal('otherthing', getline(1)) + bwipe! + + " also when the context is Vim9 script + let lines =<< trim END + vim9script + new + setline(1, 'something') + :substitute(some(other( + assert_equal('otherthing', getline(1)) + bwipe! + END + writefile(lines, 'Xvim9lines') + source Xvim9lines + + delete('Xvim9lines') enddef diff --git a/src/version.c b/src/version.c index 2c4f78b42..49cdcc5da 100644 --- a/src/version.c +++ b/src/version.c @@ -738,6 +738,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 306, /**/ 305, /**/