diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-01-24 18:58:30 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-01-24 18:58:30 +0100 |
commit | 076e502199b19e6141e4c1e659ff3f21b71934e1 (patch) | |
tree | d14fa6a4bf61387ea272784faec0a6a34ee7a05f /src | |
parent | 915350edec02f0326ecbe49f3b6cf2cbcd105f7d (diff) | |
download | vim-076e502199b19e6141e4c1e659ff3f21b71934e1.zip |
patch 8.0.0231: bracketed paste mode is not tested
Problem: There are no tests for bracketed paste mode.
Solution: Add a test. Fix repeating with "normal .".
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 3 | ||||
-rw-r--r-- | src/edit.c | 9 | ||||
-rw-r--r-- | src/testdir/Make_all.mak | 1 | ||||
-rw-r--r-- | src/testdir/test_paste.vim | 41 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 53 insertions, 3 deletions
diff --git a/src/Makefile b/src/Makefile index 8de7104d5..a58821994 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2147,6 +2147,7 @@ test_arglist \ test_options \ test_packadd \ test_partial \ + test_paste \ test_perl \ test_popup \ test_profile \ @@ -2161,9 +2162,9 @@ test_arglist \ test_searchpos \ test_set \ test_signs \ + test_smartindent \ test_sort \ test_source_utf8 \ - test_smartindent \ test_startup \ test_startup_utf8 \ test_stat \ diff --git a/src/edit.c b/src/edit.c index ce6abaf20..9e6cc3e8b 100644 --- a/src/edit.c +++ b/src/edit.c @@ -463,7 +463,10 @@ edit( else #endif { - AppendCharToRedobuff(cmdchar); + if (cmdchar == K_PS) + AppendCharToRedobuff('a'); + else + AppendCharToRedobuff(cmdchar); if (cmdchar == 'g') /* "gI" command */ AppendCharToRedobuff('I'); else if (cmdchar == 'r') /* "r<CR>" command */ @@ -9502,8 +9505,10 @@ bracketed_paste(paste_mode_T mode, int drop, garray_T *gap) if (idx == 1 && (c == CAR || c == K_KENTER || c == NL)) ins_eol(c); else + { ins_char_bytes(buf, idx); - AppendToRedobuffLit(buf, idx); + AppendToRedobuffLit(buf, idx); + } } break; diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index e0da1b408..613b86804 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -173,6 +173,7 @@ NEW_TESTS = test_arglist.res \ test_nested_function.res \ test_netbeans.res \ test_normal.res \ + test_paste.res \ test_packadd.res \ test_perl.res \ test_profile.res \ diff --git a/src/testdir/test_paste.vim b/src/testdir/test_paste.vim new file mode 100644 index 000000000..ffd2dfa32 --- /dev/null +++ b/src/testdir/test_paste.vim @@ -0,0 +1,41 @@ +" Tests for bracketed paste. + +" Bracketed paste only works with "xterm". +set term=xterm + +func Test_paste_normal_mode() + new + call setline(1, ['a', 'b', 'c']) + 2 + 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('c', getline(4)) + + normal . + call assert_equal('barfoo', getline(3)) + call assert_equal('bar', getline(4)) + call assert_equal('c', getline(5)) + bwipe! +endfunc + +func Test_paste_insert_mode() + new + call setline(1, ['a', 'b', 'c']) + 2 + call feedkeys("i\<Esc>[200~foo\<CR>bar\<Esc>[201~ done\<Esc>", 'xt') + call assert_equal('foo', getline(2)) + call assert_equal('bar doneb', getline(3)) + call assert_equal('c', getline(4)) + + normal . + call assert_equal('bar donfoo', getline(3)) + call assert_equal('bar doneeb', getline(4)) + call assert_equal('c', getline(5)) + bwipe! +endfunc + +func Test_paste_cmdline() + call feedkeys(":a\<Esc>[200~foo\<CR>bar\<Esc>[201~b\<Home>\"\<CR>", 'xt') + call assert_equal("\"afoo\<CR>barb", getreg(':')) +endfunc diff --git a/src/version.c b/src/version.c index c7528b7d9..190a67dad 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 */ /**/ + 231, +/**/ 230, /**/ 229, |