summaryrefslogtreecommitdiff
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-28 13:53:50 +0100
committerBram Moolenaar <Bram@vim.org>2020-10-28 13:53:50 +0100
commitb4bcea474d9006e4db1fa5d6828773e739af14bb (patch)
tree1cef0b7161b2d71b8d826917f2bf2f60931d4840 /src/ex_docmd.c
parent70cf45810cb9be5bd17074f7fb4ee238f2c4d57b (diff)
downloadvim-git-b4bcea474d9006e4db1fa5d6828773e739af14bb.tar.gz
patch 8.2.1914: Vim9: cannot put line break in expression for '=' registerv8.2.1914
Problem: Vim9: cannot put line break in expression for '=' register. Solution: Pass fgetline to set_expr_line(). (closes #7209)
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 97d4b421d..b8ee85c76 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1719,6 +1719,7 @@ do_one_cmd(
#ifdef FEAT_EVAL
int may_have_range;
int vim9script = in_vim9script();
+ int did_set_expr_line = FALSE;
#endif
CLEAR_FIELD(ea);
@@ -2315,8 +2316,9 @@ do_one_cmd(
// for '=' register: accept the rest of the line as an expression
if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
{
- set_expr_line(vim_strsave(ea.arg));
+ set_expr_line(vim_strsave(ea.arg), &ea);
ea.arg += STRLEN(ea.arg);
+ did_set_expr_line = TRUE;
}
#endif
ea.arg = skipwhite(ea.arg);
@@ -2595,6 +2597,9 @@ doend:
do_errthrow(cstack,
(ea.cmdidx != CMD_SIZE && !IS_USER_CMDIDX(ea.cmdidx))
? cmdnames[(int)ea.cmdidx].cmd_name : (char_u *)NULL);
+
+ if (did_set_expr_line)
+ set_expr_line(NULL, NULL);
#endif
undo_cmdmod(&cmdmod);