diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-02-02 22:21:29 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-02-02 22:21:29 +0100 |
commit | fd8983b09c64d9bfa8a4bdc16d72c55fbb22b4dc (patch) | |
tree | 1f3d14352db76c73da522a541affc15ca51b15a7 /src | |
parent | 7a073549a3b1e72037a4e98ceb406d057ac9ba50 (diff) | |
download | vim-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.c | 7 | ||||
-rw-r--r-- | src/testdir/test_paste.vim | 26 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |