0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 8.2.1080: Vim9: no line break allowed in a for loop

Problem:    Vim9: no line break allowed in a for loop.
Solution:   Skip line breaks in for command.
This commit is contained in:
Bram Moolenaar
2020-06-28 18:43:40 +02:00
parent d5053d015a
commit b7a78f7a67
8 changed files with 101 additions and 23 deletions

View File

@@ -899,10 +899,16 @@ ex_eval(exarg_T *eap)
CLEAR_FIELD(evalarg);
evalarg.eval_flags = eap->skip ? 0 : EVAL_EVALUATE;
evalarg.eval_cookie = eap->getline == getsourceline ? eap->cookie : NULL;
if (getline_equal(eap->getline, eap->cookie, getsourceline))
{
evalarg.eval_getline = eap->getline;
evalarg.eval_cookie = eap->cookie;
}
if (eval0(eap->arg, &tv, eap, &evalarg) == OK)
clear_tv(&tv);
clear_evalarg(&evalarg, eap);
}
/*
@@ -1108,7 +1114,16 @@ ex_while(exarg_T *eap)
}
else
{
void *fi;
void *fi;
evalarg_T evalarg;
CLEAR_FIELD(evalarg);
evalarg.eval_flags = skip ? 0 : EVAL_EVALUATE;
if (getline_equal(eap->getline, eap->cookie, getsourceline))
{
evalarg.eval_getline = eap->getline;
evalarg.eval_cookie = eap->cookie;
}
/*
* ":for var in list-expr"
@@ -1119,11 +1134,14 @@ ex_while(exarg_T *eap)
// previously evaluated list.
fi = cstack->cs_forinfo[cstack->cs_idx];
error = FALSE;
// the "in expr" is not used, skip over it
skip_for_lines(fi, &evalarg);
}
else
{
// Evaluate the argument and get the info in a structure.
fi = eval_for_line(eap->arg, &error, eap, skip);
fi = eval_for_line(eap->arg, &error, eap, &evalarg);
cstack->cs_forinfo[cstack->cs_idx] = fi;
}
@@ -1138,6 +1156,7 @@ ex_while(exarg_T *eap)
free_for_info(fi);
cstack->cs_forinfo[cstack->cs_idx] = NULL;
}
clear_evalarg(&evalarg, eap);
}
/*