]> granicus.if.org Git - vim/commitdiff
patch 8.0.0231: bracketed paste mode is not tested v8.0.0231
authorBram Moolenaar <Bram@vim.org>
Tue, 24 Jan 2017 17:58:30 +0000 (18:58 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 24 Jan 2017 17:58:30 +0000 (18:58 +0100)
Problem:    There are no tests for bracketed paste mode.
Solution:   Add a test.  Fix repeating with "normal .".

src/Makefile
src/edit.c
src/testdir/Make_all.mak
src/testdir/test_paste.vim [new file with mode: 0644]
src/version.c

index 8de7104d5d7fca667b609896e078871f0ee86cd6..a588219946d446e67b2a46580519da41dd497768 100644 (file)
@@ -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 \
index ce6abaf209336ccb9ed8e22be0d8ad6da18746bd..9e6cc3e8bf9eb61bc9a9c7bfc5cd8fe740db3f5f 100644 (file)
@@ -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;
 
index e0da1b408d73bbbf059edace848f4941757f3c0b..613b86804e127c3c08154200c1beb03c7f30241d 100644 (file)
@@ -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 (file)
index 0000000..ffd2dfa
--- /dev/null
@@ -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
index c7528b7d971889f8e1e30bccfe45f6d23fc85b99..190a67dad12679a8a8a4e7553d689501783bc5ae 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    231,
 /**/
     230,
 /**/