aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ops.c4
-rw-r--r--src/nvim/testdir/test_put.vim6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 52164f6c38..52c55c8de3 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -3616,6 +3616,10 @@ error:
} else {
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 == kMTLineWise) {
// put cursor on first non-blank in first inserted line
diff --git a/src/nvim/testdir/test_put.vim b/src/nvim/testdir/test_put.vim
index aceac58493..3b6b2e0e0d 100644
--- a/src/nvim/testdir/test_put.vim
+++ b/src/nvim/testdir/test_put.vim
@@ -116,8 +116,10 @@ func Test_gp_with_count_leaves_cursor_at_end()
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