Mercurial > vim
changeset 10664:94db9c08e206 v8.0.0222
patch 8.0.0222: blockwise put on multi-byte character misplaced
commit https://github.com/vim/vim/commit/c81299684b2b9045e56525d3da3f45e8440fbf0d
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 22 Jan 2017 20:15:04 +0100 |
parents | 3a7291d9fd8a |
children | ec5868458234 |
files | src/Makefile src/ops.c src/testdir/test_alot.vim src/testdir/test_put.vim src/version.c |
diffstat | 5 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 \
--- 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)
--- 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
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\<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