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)
 	{