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 70c0da2..62cab6e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1647,6 +1647,9 @@
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 @@
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 @@
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