patch 8.0.0296: bracketed paste can only append, not insert
Problem: Bracketed paste can only append, not insert.
Solution: When the cursor is in the first column insert the text.
diff --git a/src/normal.c b/src/normal.c
index 7bae34e..3012bf3 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9079,8 +9079,13 @@
beginline(BL_WHITE|BL_FIX);
break;
+ case K_PS: /* Bracketed paste works like "a"ppend, unless the
+ cursor is in the first column, then it inserts. */
+ if (curwin->w_cursor.col == 0)
+ break;
+ /*FALLTHROUGH*/
+
case 'a': /* "a"ppend is like "i"nsert on the next character. */
- case K_PS: /* bracketed paste works like "a"ppend */
#ifdef FEAT_VIRTUALEDIT
/* increment coladd when in virtual space, increment the
* column otherwise, also to append after an unprintable char */
diff --git a/src/testdir/test_paste.vim b/src/testdir/test_paste.vim
index 9961771..f5deb7d 100644
--- a/src/testdir/test_paste.vim
+++ b/src/testdir/test_paste.vim
@@ -8,18 +8,36 @@
func Test_paste_normal_mode()
new
+ " In first column text is inserted
call setline(1, ['a', 'b', 'c'])
- 2
+ call cursor(2, 1)
call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
- call assert_equal('bfoo', getline(2))
- call assert_equal('bar', getline(3))
+ call assert_equal('foo', getline(2))
+ call assert_equal('barb', getline(3))
call assert_equal('c', getline(4))
+ " When repeating text is appended
normal .
call assert_equal('barfoo', getline(3))
- call assert_equal('bar', getline(4))
+ call assert_equal('barb', getline(4))
call assert_equal('c', getline(5))
bwipe!
+
+ " In second column text is appended
+ call setline(1, ['a', 'bbb', 'c'])
+ call cursor(2, 2)
+ call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
+ call assert_equal('bbfoo', getline(2))
+ call assert_equal('barb', getline(3))
+ call assert_equal('c', getline(4))
+
+ " In last column text is appended
+ call setline(1, ['a', 'bbb', 'c'])
+ call cursor(2, 3)
+ call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
+ call assert_equal('bbbfoo', getline(2))
+ call assert_equal('bar', getline(3))
+ call assert_equal('c', getline(4))
endfunc
func Test_paste_insert_mode()
diff --git a/src/version.c b/src/version.c
index 4dc4cd8..d7d3948 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 296,
+/**/
295,
/**/
294,