From: Bram Moolenaar Date: Sun, 22 Jan 2017 19:04:51 +0000 (+0100) Subject: patch 8.0.0222: blockwise put on multi-byte character misplaced X-Git-Tag: v8.0.0222 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c81299684b2b9045e56525d3da3f45e8440fbf0d;p=vim patch 8.0.0222: blockwise put on multi-byte character misplaced 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. --- diff --git a/src/Makefile b/src/Makefile index 0dcf10960..8de7104d5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2150,6 +2150,7 @@ test_arglist \ test_perl \ test_popup \ test_profile \ + test_put \ test_quickfix \ test_regexp_latin \ test_regexp_utf8 \ diff --git a/src/ops.c b/src/ops.c index 0853fd0d0..4d01ef1c6 100644 --- 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) diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index 9a7c35dcd..2b163ae5c 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -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 index 000000000..612bdabb6 --- /dev/null +++ b/src/testdir/test_put.vim @@ -0,0 +1,12 @@ + +func Test_put_block() + if !has('multi_byte') + return + endif + new + call feedkeys("i\u2500\x\", 'x') + call feedkeys("\y", 'x') + call feedkeys("gg0p", 'x') + call assert_equal("\u2500x", getline(1)) + bwipe! +endfunc diff --git a/src/version.c b/src/version.c index 5cca0342e..cae4e7dd4 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 */ +/**/ + 222, /**/ 221, /**/