]> granicus.if.org Git - vim/commitdiff
patch 8.0.0222: blockwise put on multi-byte character misplaced v8.0.0222
authorBram Moolenaar <Bram@vim.org>
Sun, 22 Jan 2017 19:04:51 +0000 (20:04 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 22 Jan 2017 19:04:51 +0000 (20:04 +0100)
Problem:    When a multi-byte character ends in a zero byte, putting blockwise
            text puts it before the character instead of after it.
Solution:   Use int instead of char for the character under the cursor.
            (Luchr, closes #1403)  Add a test.

src/Makefile
src/ops.c
src/testdir/test_alot.vim
src/testdir/test_put.vim [new file with mode: 0644]
src/version.c

index 0dcf109604d592f4ff7c079c2792b09c03996234..8de7104d5d7fca667b609896e078871f0ee86cd6 100644 (file)
@@ -2150,6 +2150,7 @@ test_arglist \
        test_perl \
        test_popup \
        test_profile \
+       test_put \
        test_quickfix \
        test_regexp_latin \
        test_regexp_utf8 \
index 0853fd0d09b154648777d4c1e9bcffcebd862c97..4d01ef1c66411cf930664bf1b4ea1046f588200e 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -3550,7 +3550,7 @@ do_put(
      */
     if (y_type == MBLOCK)
     {
-       char    c = gchar_cursor();
+       int     c = gchar_cursor();
        colnr_T endcol2 = 0;
 
        if (dir == FORWARD && c != NUL)
index 9a7c35dcd531b7c2cd62533260c6432a3b523ad1..2b163ae5ca3bfca60d9265359ff5614464c1ecbb 100644 (file)
@@ -31,6 +31,7 @@ source test_mapping.vim
 source test_messages.vim
 source test_partial.vim
 source test_popup.vim
+source test_put.vim
 source test_reltime.vim
 source test_searchpos.vim
 source test_set.vim
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
new file mode 100644 (file)
index 0000000..612bdab
--- /dev/null
@@ -0,0 +1,12 @@
+
+func Test_put_block()
+  if !has('multi_byte')
+    return
+  endif
+  new
+  call feedkeys("i\<C-V>u2500\<CR>x\<ESC>", 'x')
+  call feedkeys("\<C-V>y", 'x')
+  call feedkeys("gg0p", 'x')
+  call assert_equal("\u2500x", getline(1))
+  bwipe!
+endfunc
index 5cca0342e7bbb79a58347686242a0a708df8775e..cae4e7dd4478371f5211c22740e2316115f46ec4 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    222,
 /**/
     221,
 /**/