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 #7209)
diff --git a/src/eval.c b/src/eval.c
index 6bc2b29..1859e5e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -474,9 +474,10 @@
* Return pointer to allocated memory, or NULL for failure.
*/
char_u *
-eval_to_string(
+eval_to_string_eap(
char_u *arg,
- int convert)
+ int convert,
+ exarg_T *eap)
{
typval_T tv;
char_u *retval;
@@ -484,8 +485,10 @@
#ifdef FEAT_FLOAT
char_u numbuf[NUMBUFLEN];
#endif
+ evalarg_T evalarg;
- if (eval0(arg, &tv, NULL, &EVALARG_EVALUATE) == FAIL)
+ fill_evalarg_from_eap(&evalarg, eap, eap != NULL && eap->skip);
+ if (eval0(arg, &tv, NULL, &evalarg) == FAIL)
retval = NULL;
else
{
@@ -512,11 +515,19 @@
retval = vim_strsave(tv_get_string(&tv));
clear_tv(&tv);
}
- clear_evalarg(&EVALARG_EVALUATE, NULL);
+ clear_evalarg(&evalarg, NULL);
return retval;
}
+ char_u *
+eval_to_string(
+ char_u *arg,
+ int convert)
+{
+ return eval_to_string_eap(arg, convert, NULL);
+}
+
/*
* Call eval_to_string() without using current local variables and using
* textwinlock. When "use_sandbox" is TRUE use the sandbox.