changeset 30341:65c69861bad0 v9.0.0506

patch 9.0.0506: line number argument for :badd does not work Commit: https://github.com/vim/vim/commit/a2b91036d12e1b406ed5d17bf03f8d1ed05221f6 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Sep 19 18:20:08 2022 +0100 patch 9.0.0506: line number argument for :badd does not work Problem: Line number argument for :badd does not work. Solution: Set the last cursor position in the new buffer. (closes https://github.com/vim/vim/issues/11161)
author Bram Moolenaar <Bram@vim.org>
date Mon, 19 Sep 2022 19:30:03 +0200
parents 8740fb5cd365
children 930fed9ccf0d
files src/ex_cmds.c src/testdir/test_buffer.vim src/version.c
diffstat 3 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2651,8 +2651,13 @@ do_ecmd(
 		// with the current window.
 		newbuf = buflist_new(ffname, sfname, tlnum,
 						    BLN_LISTED | BLN_NOCURWIN);
-		if (newbuf != NULL && (flags & ECMD_ALTBUF))
-		    curwin->w_alt_fnum = newbuf->b_fnum;
+		if (newbuf != NULL)
+		{
+		    if (flags & ECMD_ALTBUF)
+			curwin->w_alt_fnum = newbuf->b_fnum;
+		    if (tlnum > 0)
+			newbuf->b_last_cursor.lnum = tlnum;
+		}
 		goto theend;
 	    }
 	    buf = buflist_new(ffname, sfname, 0L,
--- a/src/testdir/test_buffer.vim
+++ b/src/testdir/test_buffer.vim
@@ -361,6 +361,13 @@ func Test_badd_options()
   close
   close
   bwipe! SomeNewBuffer
+
+  badd +3 XbaddFile
+  call writefile(range(6), 'XbaddFile', 'D')
+  buf XbaddFile
+  call assert_equal([0, 3, 1, 0], getpos('.'))
+
+  bwipe! XbaddFile
 endfunc
 
 func Test_balt()
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    506,
+/**/
     505,
 /**/
     504,