# HG changeset patch # User Bram Moolenaar # Date 1582465503 -3600 # Node ID 639b1d6727573ea494311c8ec597850d6da1c20e # Parent 53b0cee66935e589462288ff8b2bbc4a9d44009a patch 8.2.0306: Vim9: :substitute(pat(repl does not work in Vim9 script Commit: https://github.com/vim/vim/commit/83f37b91426b419a913aa4f42d041b2111b57864 Author: Bram Moolenaar Date: Sun Feb 23 14:35:01 2020 +0100 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 https://github.com/vim/vim/issues/5676) diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 306, +/**/ 305, /**/ 304,