Mercurial > vim
diff src/eval.c @ 21098:e88b0daa2fcb v8.2.1100
patch 8.2.1100: Vim9: cannot use line break in :execute argument
Commit: https://github.com/vim/vim/commit/47e880d6c13c3ec2888398fd9ba1f5a7180d791a
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jun 30 22:02:02 2020 +0200
patch 8.2.1100: Vim9: cannot use line break in :execute argument
Problem: Vim9: cannot use line break in :execute, :echomsg and :echoerr
argument.
Solution: Check for line break.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 30 Jun 2020 22:15:04 +0200 |
parents | 74e5e212e550 |
children | f8ec5a7a9cf6 |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -207,14 +207,17 @@ eval_to_bool( * Call eval1() and give an error message if not done at a lower level. */ static int -eval1_emsg(char_u **arg, typval_T *rettv, int evaluate) +eval1_emsg(char_u **arg, typval_T *rettv, exarg_T *eap) { char_u *start = *arg; int ret; int did_emsg_before = did_emsg; int called_emsg_before = called_emsg; - - ret = eval1(arg, rettv, evaluate ? &EVALARG_EVALUATE : NULL); + evalarg_T evalarg; + + fill_evalarg_from_eap(&evalarg, eap, eap != NULL && eap->skip); + + ret = eval1(arg, rettv, &evalarg); if (ret == FAIL) { // Report the invalid expression unless the expression evaluation has @@ -225,6 +228,7 @@ eval1_emsg(char_u **arg, typval_T *rettv && called_emsg == called_emsg_before) semsg(_(e_invexpr2), start); } + clear_evalarg(&evalarg, eap); return ret; } @@ -294,7 +298,7 @@ eval_expr_typval(typval_T *expr, typval_ if (s == NULL) return FAIL; s = skipwhite(s); - if (eval1_emsg(&s, rettv, TRUE) == FAIL) + if (eval1_emsg(&s, rettv, NULL) == FAIL) return FAIL; if (*s != NUL) // check for trailing chars after expr { @@ -5330,7 +5334,7 @@ ex_execute(exarg_T *eap) ++emsg_skip; while (!ends_excmd2(eap->cmd, arg) || *arg == '"') { - ret = eval1_emsg(&arg, &rettv, !eap->skip); + ret = eval1_emsg(&arg, &rettv, eap); if (ret == FAIL) break;