50 lines
1.3 KiB
Diff
50 lines
1.3 KiB
Diff
|
|
From d25f003342aca9889067f2e839963dfeccf1fe05 Mon Sep 17 00:00:00 2001
|
|||
|
|
From: Bram Moolenaar <Bram@vim.org>
|
|||
|
|
Date: Thu, 30 Jun 2022 12:30:19 +0100
|
|||
|
|
Subject: [PATCH] patch 9.0.0011: reading beyond the end of the line with put
|
|||
|
|
command
|
|||
|
|
|
|||
|
|
Problem: Reading beyond the end of the line with put command.
|
|||
|
|
Solution: Adjust the end mark position.
|
|||
|
|
---
|
|||
|
|
src/register.c | 2 ++
|
|||
|
|
src/testdir/test_put.vim | 12 ++++++++++++
|
|||
|
|
2 files changed, 14 insertions(+)
|
|||
|
|
|
|||
|
|
diff --git a/src/register.c b/src/register.c
|
|||
|
|
index 87689f7..51c14b8 100644
|
|||
|
|
--- a/src/register.c
|
|||
|
|
+++ b/src/register.c
|
|||
|
|
@@ -1819,6 +1819,8 @@ do_put(
|
|||
|
|
vim_memset(ptr, ' ', (size_t)spaces);
|
|||
|
|
ptr += spaces;
|
|||
|
|
}
|
|||
|
|
+ else
|
|||
|
|
+ totlen -= spaces; // didn't use these spaces
|
|||
|
|
}
|
|||
|
|
// may insert some spaces after the new text
|
|||
|
|
vim_memset(ptr, ' ', (size_t)bd.endspaces);
|
|||
|
|
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
|
|||
|
|
index 6df04cf..c8d306a 100644
|
|||
|
|
--- a/src/testdir/test_put.vim
|
|||
|
|
+++ b/src/testdir/test_put.vim
|
|||
|
|
@@ -152,3 +152,15 @@ func Test_put_empty_register()
|
|||
|
|
bwipe!
|
|||
|
|
endfunc
|
|||
|
|
|
|||
|
|
+" this was putting the end mark after the end of the line
|
|||
|
|
+func Test_put_visual_mode()
|
|||
|
|
+ edit! SomeNewBuffer
|
|||
|
|
+ set selection=exclusive
|
|||
|
|
+ exe "norm o\t"
|
|||
|
|
+ m0
|
|||
|
|
+ sil! norm
p
p
|
|||
|
|
+
|
|||
|
|
+ bwipe!
|
|||
|
|
+ set selection&
|
|||
|
|
+endfunc
|
|||
|
|
+
|
|||
|
|
--
|
|||
|
|
1.8.3.1
|
|||
|
|
|