diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-05-06 15:47:07 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-05-06 15:47:07 +0100 |
commit | 521bf32bb4f86676ce3617d25309770f1440ba79 (patch) | |
tree | 6e574e5e70b43787f9b20d7dd44e947297889a8d /src/userfunc.c | |
parent | 9b334d5912607f09912bfd19aa95355a1efc2761 (diff) | |
download | vim-git-521bf32bb4f86676ce3617d25309770f1440ba79.tar.gz |
patch 8.2.4888: line number of lambda ignores line continuationv8.2.4888
Problem: Line number of lambda ignores line continuation.
Solution: Use the line number of where the arguments are. Avoid outputting
"..." twice. (closes #10364)
Diffstat (limited to 'src/userfunc.c')
-rw-r--r-- | src/userfunc.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/userfunc.c b/src/userfunc.c index f3ba7719c..081bac19a 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -1373,6 +1373,7 @@ get_lambda_tv( int white_error = FALSE; int called_emsg_start = called_emsg; int vim9script = in_vim9script(); + long start_lnum = SOURCING_LNUM; if (equal_arrow && !vim9script) return NOTDONE; @@ -1433,6 +1434,7 @@ get_lambda_tv( if (evalarg == NULL) // cannot happen? goto theend; + SOURCING_LNUM = start_lnum; // used for where lambda is defined if (lambda_function_body(arg, rettv, evalarg, pnewargs, types_optional ? &argtypes : NULL, varargs, &default_args, ret_type) == FAIL) @@ -1563,7 +1565,8 @@ get_lambda_tv( fp->uf_flags = flags; fp->uf_calls = 0; fp->uf_script_ctx = current_sctx; - fp->uf_script_ctx.sc_lnum += SOURCING_LNUM - newlines.ga_len + 1; + // Use the line number of the arguments. + fp->uf_script_ctx.sc_lnum += start_lnum; function_using_block_scopes(fp, evalarg->eval_cstack); @@ -3707,9 +3710,12 @@ list_func_head(ufunc_T *fp, int indent) } if (fp->uf_va_name != NULL) { - if (j) - msg_puts(", "); - msg_puts("..."); + if (!fp->uf_varargs) + { + if (j) + msg_puts(", "); + msg_puts("..."); + } msg_puts((char *)fp->uf_va_name); if (fp->uf_va_type != NULL) { |