From: Bram Moolenaar Date: Tue, 24 Jan 2017 17:58:30 +0000 (+0100) Subject: patch 8.0.0231: bracketed paste mode is not tested X-Git-Tag: v8.0.0231 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=076e502199b19e6141e4c1e659ff3f21b71934e1;p=vim 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 .". --- 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" 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("\[200~foo\bar\[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\[200~foo\bar\[201~ done\", '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\[200~foo\bar\[201~b\\"\", 'xt') + call assert_equal("\"afoo\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 @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 231, /**/ 230, /**/