summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eval.c4
-rw-r--r--src/testdir/test_vim9_script.vim10
-rw-r--r--src/version.c2
3 files changed, 16 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index 6537ffea41..5dc1642a16 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6191,6 +6191,7 @@ ex_execute(exarg_T *eap)
char_u *p;
garray_T ga;
int len;
+ long start_lnum = SOURCING_LNUM;
ga_init2(&ga, 1, 80);
@@ -6244,6 +6245,9 @@ ex_execute(exarg_T *eap)
if (ret != FAIL && ga.ga_data != NULL)
{
+ // use the first line of continuation lines for messages
+ SOURCING_LNUM = start_lnum;
+
if (eap->cmdidx == CMD_echomsg || eap->cmdidx == CMD_echoerr)
{
// Mark the already saved text as finishing the line, so that what
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index ab0c031c54..0602b2ae5b 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4167,6 +4167,16 @@ def Test_option_modifier()
set hlsearch&
enddef
+" This must be called last, it may cause following :def functions to fail
+def Test_xxx_echoerr_line_number()
+ var lines =<< trim END
+ echoerr 'some'
+ .. ' error'
+ .. ' continued'
+ END
+ CheckDefExecAndScriptFailure(lines, 'some error continued', 1)
+enddef
+
def ProfiledFunc()
var n = 3
echo [[1, 2], [3, 4]]->filter((_, l) => l[0] == n)
diff --git a/src/version.c b/src/version.c
index 82d2d1fa0f..8e1d88e3e9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3146,
+/**/
3145,
/**/
3144,