forked from aniani/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)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -738,6 +738,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
306,
|
||||
/**/
|
||||
305,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user