changeset 25220:89b39ce243e2 v8.2.3146

patch 8.2.3146: Vim9: line number wrong for :execute argument Commit: https://github.com/vim/vim/commit/c03fe66ade4c79a4eb5fc05d1d549c8f931a04b6 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 11 16:52:45 2021 +0200 patch 8.2.3146: Vim9: line number wrong for :execute argument Problem: Vim9: line number wrong for :execute argument. Solution: Use the line number of the :execute command itself. (closes https://github.com/vim/vim/issues/8537)
author Bram Moolenaar <Bram@vim.org>
date Sun, 11 Jul 2021 17:00:04 +0200
parents 269f1e0a2cf1
children 7bff292bff66
files src/eval.c src/testdir/test_vim9_script.vim src/version.c
diffstat 3 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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)
--- 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,