summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-24 18:58:30 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-24 18:58:30 +0100
commit076e502199b19e6141e4c1e659ff3f21b71934e1 (patch)
treed14fa6a4bf61387ea272784faec0a6a34ee7a05f
parent915350edec02f0326ecbe49f3b6cf2cbcd105f7d (diff)
downloadvim-git-076e502199b19e6141e4c1e659ff3f21b71934e1.tar.gz
patch 8.0.0231: bracketed paste mode is not testedv8.0.0231
Problem: There are no tests for bracketed paste mode. Solution: Add a test. Fix repeating with "normal .".
-rw-r--r--src/Makefile3
-rw-r--r--src/edit.c9
-rw-r--r--src/testdir/Make_all.mak1
-rw-r--r--src/testdir/test_paste.vim41
-rw-r--r--src/version.c2
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,