aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ops.c2
-rw-r--r--src/nvim/testdir/test_put.vim12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 52c55c8de3..c29668f541 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -3591,7 +3591,7 @@ error:
// Put the '] mark on the first byte of the last inserted character.
// Correct the length for change in indent.
- curbuf->b_op_end.lnum = lnum;
+ curbuf->b_op_end.lnum = new_lnum;
col = (colnr_T)STRLEN(y_array[y_size - 1]) - lendiff;
if (col > 1) {
curbuf->b_op_end.col = col - 1 - utf_head_off(y_array[y_size - 1],
diff --git a/src/nvim/testdir/test_put.vim b/src/nvim/testdir/test_put.vim
index 45c9ec9ba5..4b708fc6a1 100644
--- a/src/nvim/testdir/test_put.vim
+++ b/src/nvim/testdir/test_put.vim
@@ -126,6 +126,18 @@ func Test_gp_with_count_leaves_cursor_at_end()
bwipe!
endfunc
+func Test_p_with_count_leaves_mark_at_end()
+ new
+ call setline(1, '<---->')
+ call setreg('@', "start\nend", 'c')
+ normal 1G3|3p
+ call assert_equal([0, 1, 4, 0], getpos("."))
+ call assert_equal(['<--start', 'endstart', 'endstart', 'end-->'], getline(1, '$'))
+ call assert_equal([0, 4, 3, 0], getpos("']"))
+
+ bwipe!
+endfunc
+
func Test_multibyte_op_end_mark()
new
call setline(1, 'ั‚ะตัั‚')