Mercurial > vim
diff src/ex_docmd.c @ 22732:4c21a3a47707 v8.2.1914
patch 8.2.1914: Vim9: cannot put line break in expression for '=' register
Commit: https://github.com/vim/vim/commit/b4bcea474d9006e4db1fa5d6828773e739af14bb
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Oct 28 13:53:50 2020 +0100
patch 8.2.1914: Vim9: cannot put line break in expression for '=' register
Problem: Vim9: cannot put line break in expression for '=' register.
Solution: Pass fgetline to set_expr_line(). (closes https://github.com/vim/vim/issues/7209)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 28 Oct 2020 14:00:04 +0100 |
parents | 51bc501a13ca |
children | f945413264d7 |
line wrap: on
line diff
--- 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);