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 save_reg_executing = reg_executing;
|
||||||
int ni; // set when Not Implemented
|
int ni; // set when Not Implemented
|
||||||
char_u *cmd;
|
char_u *cmd;
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
int starts_with_colon;
|
||||||
|
#endif
|
||||||
|
|
||||||
vim_memset(&ea, 0, sizeof(ea));
|
vim_memset(&ea, 0, sizeof(ea));
|
||||||
ea.line1 = 1;
|
ea.line1 = 1;
|
||||||
@@ -1689,6 +1692,7 @@ do_one_cmd(
|
|||||||
ea.cookie = cookie;
|
ea.cookie = cookie;
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
ea.cstack = cstack;
|
ea.cstack = cstack;
|
||||||
|
starts_with_colon = *skipwhite(ea.cmd) == ':';
|
||||||
#endif
|
#endif
|
||||||
if (parse_command_modifiers(&ea, &errormsg, FALSE) == FAIL)
|
if (parse_command_modifiers(&ea, &errormsg, FALSE) == FAIL)
|
||||||
goto doend;
|
goto doend;
|
||||||
@@ -1713,7 +1717,7 @@ do_one_cmd(
|
|||||||
ea.cmd = skipwhite(ea.cmd + 1);
|
ea.cmd = skipwhite(ea.cmd + 1);
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#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);
|
p = find_ex_command(&ea, NULL, lookup_scriptvar, NULL);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -580,6 +580,21 @@ def Test_substitute_cmd()
|
|||||||
setline(1, 'something')
|
setline(1, 'something')
|
||||||
:substitute(some(other(
|
:substitute(some(other(
|
||||||
assert_equal('otherthing', getline(1))
|
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
|
enddef
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -738,6 +738,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
306,
|
||||||
/**/
|
/**/
|
||||||
305,
|
305,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user