changeset 25842:196f75cf6983 v8.2.3455

patch 8.2.3455: using a count with "gp" leaves '] in wrong position Commit: https://github.com/vim/vim/commit/56858e4ed4e338e15821767b8303b06099e40384 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 22 16:43:59 2021 +0200 patch 8.2.3455: using a count with "gp" leaves '] in wrong position Problem: Using a count with "gp" leaves '] in wrong position. (Naohiro Ono) Solution: Correct the mark position. (closes https://github.com/vim/vim/issues/8899)
author Bram Moolenaar <Bram@vim.org>
date Wed, 22 Sep 2021 16:45:04 +0200
parents f3fc9c20b2b3
children 40b0027159bc
files src/register.c src/testdir/test_put.vim src/version.c
diffstat 3 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/register.c
+++ b/src/register.c
@@ -2205,6 +2205,9 @@ error:
 		{
 		    curwin->w_cursor.lnum = new_lnum;
 		    curwin->w_cursor.col = col;
+		    curbuf->b_op_end = curwin->w_cursor;
+		    if (col > 1)
+			curbuf->b_op_end.col = col - 1;
 		}
 	    }
 	    else if (y_type == MLINE)
--- a/src/testdir/test_put.vim
+++ b/src/testdir/test_put.vim
@@ -126,8 +126,10 @@ func Test_gp_with_count_leaves_cursor_at
   new
   call setline(1, '<---->')
   call setreg('@', "foo\nbar", 'c')
-  exe "normal 1G3|3gpix\<Esc>"
-  call assert_equal(['<--foo', 'barfoo', 'barfoo', 'barx-->'], getline(1, '$'))
+  normal 1G3|3gp
+  call assert_equal([0, 4, 4, 0], getpos("."))
+  call assert_equal(['<--foo', 'barfoo', 'barfoo', 'bar-->'], getline(1, '$'))
+  call assert_equal([0, 4, 3, 0], getpos("']"))
 
   bwipe!
 endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3455,
+/**/
     3454,
 /**/
     3453,