changeset 10682:d564e73ff9ee v8.0.0231

patch 8.0.0231: bracketed paste mode is not tested commit https://github.com/vim/vim/commit/076e502199b19e6141e4c1e659ff3f21b71934e1 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 24 18:58:30 2017 +0100 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 .".
author Christian Brabandt <cb@256bit.org>
date Tue, 24 Jan 2017 19:00:06 +0100
parents 77215f362b10
children f31f82e3f06c
files src/Makefile src/edit.c src/testdir/Make_all.mak src/testdir/test_paste.vim src/version.c
diffstat 5 files changed, 53 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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 \
--- 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 d
 			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;
 
--- 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 \
new file mode 100644
--- /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
--- 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,