# HG changeset patch # User Christian Brabandt # Date 1485112504 -3600 # Node ID 94db9c08e2061a03843f020d5c45e5d860d336fa # Parent 3a7291d9fd8aefe015c0ff433eb2e60122355135 patch 8.0.0222: blockwise put on multi-byte character misplaced commit https://github.com/vim/vim/commit/c81299684b2b9045e56525d3da3f45e8440fbf0d Author: Bram Moolenaar Date: Sun Jan 22 20:04:51 2017 +0100 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 --- 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 --- 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 --- 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 --- /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 --- 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 */ /**/ + 222, +/**/ 221, /**/ 220,