summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-02 22:21:29 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-02 22:21:29 +0100
commitfd8983b09c64d9bfa8a4bdc16d72c55fbb22b4dc (patch)
tree1f3d14352db76c73da522a541affc15ca51b15a7 /src
parent7a073549a3b1e72037a4e98ceb406d057ac9ba50 (diff)
downloadvim-fd8983b09c64d9bfa8a4bdc16d72c55fbb22b4dc.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/normal.c7
-rw-r--r--src/testdir/test_paste.vim26
-rw-r--r--src/version.c2
3 files changed, 30 insertions, 5 deletions
diff --git a/src/normal.c b/src/normal.c
index 7bae34ed2..3012bf3b7 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9079,8 +9079,13 @@ nv_edit(cmdarg_T *cap)
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 996177142..f5deb7d6b 100644
--- a/src/testdir/test_paste.vim
+++ b/src/testdir/test_paste.vim
@@ -8,18 +8,36 @@ set term=xterm
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 4dc4cd81d..d7d3948e6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 296,
+/**/
295,
/**/
294,