diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-27 21:18:00 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-27 21:18:00 +0200 |
commit | 9215f01218b2ed2cfe49c1f43fcf342bd9ffdded (patch) | |
tree | f2012a07fa1a29ccfde4ecfd1010949ff81e5526 /src/userfunc.c | |
parent | 7a4981b93642b5b62018cd8150b3fb0dfa2417d4 (diff) | |
download | vim-git-9215f01218b2ed2cfe49c1f43fcf342bd9ffdded.tar.gz |
patch 8.2.1074: Vim9: no line break allowed after some operatorsv8.2.1074
Problem: Vim9: no line break allowed after some operators.
Solution: Skip a line break after the operator. Add
eval_may_get_next_line() to simplify checking for a line break.
Diffstat (limited to 'src/userfunc.c')
-rw-r--r-- | src/userfunc.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/userfunc.c b/src/userfunc.c index b358ecb38..51c437f20 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -402,17 +402,17 @@ get_lambda_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg) partial_T *pt = NULL; int varargs; int ret; - char_u *start = skipwhite(*arg + 1); + char_u *start; char_u *s, *e; int *old_eval_lavars = eval_lavars_used; int eval_lavars = FALSE; - int getnext; char_u *tofree = NULL; ga_init(&newargs); ga_init(&newlines); // First, check if this is a lambda expression. "->" must exist. + start = skipwhite(*arg + 1); ret = get_function_args(&start, '-', NULL, NULL, NULL, NULL, TRUE, NULL, NULL); if (ret == FAIL || *start != '>') @@ -435,10 +435,7 @@ get_lambda_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg) eval_lavars_used = &eval_lavars; // Get the start and the end of the expression. - *arg = skipwhite(*arg + 1); - eval_next_non_blank(*arg, evalarg, &getnext); - if (getnext) - *arg = eval_next_line(evalarg); + *arg = skipwhite_and_linebreak(*arg + 1, evalarg); s = *arg; ret = skip_expr_concatenate(&s, arg, evalarg); if (ret == FAIL) @@ -451,10 +448,7 @@ get_lambda_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg) } e = *arg; - *arg = skipwhite(*arg); - eval_next_non_blank(*arg, evalarg, &getnext); - if (getnext) - *arg = eval_next_line(evalarg); + *arg = skipwhite_and_linebreak(*arg, evalarg); if (**arg != '}') { semsg(_("E451: Expected }: %s"), *arg); |