Mercurial > vim
diff src/evalvars.c @ 20992:7ee565134d4a v8.2.1047
patch 8.2.1047: Vim9: script cannot use line continuation like :def function
Commit: https://github.com/vim/vim/commit/5409f5d8c95007216ae1190565a7a8ee9ebd7100
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 24 18:37:35 2020 +0200
patch 8.2.1047: Vim9: script cannot use line continuation like :def function
Problem: Vim9: script cannot use line continuation like in a :def function.
Solution: Pass the getline function pointer to the eval() functions. Use it
for addition and multiplication operators.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 24 Jun 2020 18:45:04 +0200 |
parents | 6b4b887a12f0 |
children | 3af71cbcfdbe |
line wrap: on
line diff
--- a/src/evalvars.c +++ b/src/evalvars.c @@ -435,7 +435,7 @@ eval_spell_expr(char_u *badword, char_u if (p_verbose == 0) ++emsg_off; - if (eval1(&p, &rettv, EVAL_EVALUATE) == OK) + if (eval1(&p, &rettv, &EVALARG_EVALUATE) == OK) { if (rettv.v_type != VAR_LIST) clear_tv(&rettv); @@ -774,7 +774,7 @@ ex_let(exarg_T *eap) } else { - int eval_flags; + evalarg_T evalarg; rettv.v_type = VAR_UNKNOWN; i = FAIL; @@ -797,14 +797,17 @@ ex_let(exarg_T *eap) if (eap->skip) ++emsg_skip; - eval_flags = eap->skip ? 0 : EVAL_EVALUATE; - i = eval0(expr, &rettv, &eap->nextcmd, eval_flags); + evalarg.eval_flags = eap->skip ? 0 : EVAL_EVALUATE; + evalarg.eval_cookie = eap->getline == getsourceline + ? eap->cookie : NULL; + i = eval0(expr, &rettv, &eap->nextcmd, &evalarg); + if (eap->skip) + --emsg_skip; } if (eap->skip) { if (i != FAIL) clear_tv(&rettv); - --emsg_skip; } else if (i != FAIL) {