summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-10-19 20:08:45 +0100
committerBram Moolenaar <Bram@vim.org>2021-10-19 20:08:45 +0100
commitf47ebf1e1a0a6473b10fb4c92c9c6427aab4dc91 (patch)
tree91b63efb29f6d59c6925f799b8d33e94fb731ac0
parent604e207e277767a67cbf4a6a179080efb830b9e7 (diff)
downloadvim-git-f47ebf1e1a0a6473b10fb4c92c9c6427aab4dc91.tar.gz
patch 8.2.3540: the mark '] is wrong after put with a countv8.2.3540
Problem: The mark '] is wrong after put with a count. (Naohiro Ono) Solution: Use the right line number. (closes #8956)
-rw-r--r--src/register.c2
-rw-r--r--src/testdir/test_put.vim12
-rw-r--r--src/version.c2
3 files changed, 15 insertions, 1 deletions
diff --git a/src/register.c b/src/register.c
index 9f179ea15..522500ce1 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2183,7 +2183,7 @@ error:
curbuf->b_op_start.lnum, nr_lines);
// put '] mark at last inserted character
- curbuf->b_op_end.lnum = lnum;
+ curbuf->b_op_end.lnum = new_lnum;
// correct length for change in indent
col = (colnr_T)STRLEN(y_array[y_size - 1]) - lendiff;
if (col > 1)
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
index 4e3294679..a6bed7535 100644
--- a/src/testdir/test_put.vim
+++ b/src/testdir/test_put.vim
@@ -136,6 +136,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_very_large_count()
" FIXME: should actually check if sizeof(int) == sizeof(long)
CheckNotMSWindows
diff --git a/src/version.c b/src/version.c
index 28a70fd39..c430ff170 100644
--- 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 */
/**/
+ 3540,
+/**/
3539,
/**/
3538,