mirror of
https://github.com/vim/vim.git
synced 2025-10-05 05:34:07 -04:00
patch 8.2.3072: "zy" does not work well when "virtualedit' is "block"
Problem: The "zy" command does not work well when 'virtualedit' is set to "block". (Johann Höchtl) Solution: Make endspaces zero. (Christian Brabandt, closes #8468, closes #8448)
This commit is contained in:
@@ -1455,6 +1455,8 @@ yank_copy_line(struct block_def *bd, long y_idx, int exclude_trailing_space)
|
|||||||
{
|
{
|
||||||
char_u *pnew;
|
char_u *pnew;
|
||||||
|
|
||||||
|
if (exclude_trailing_space)
|
||||||
|
bd->endspaces = 0;
|
||||||
if ((pnew = alloc(bd->startspaces + bd->endspaces + bd->textlen + 1))
|
if ((pnew = alloc(bd->startspaces + bd->endspaces + bd->textlen + 1))
|
||||||
== NULL)
|
== NULL)
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -2747,7 +2749,7 @@ write_reg_contents_lst(
|
|||||||
&yank_type) == FAIL)
|
&yank_type) == FAIL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
str_to_reg(y_current, yank_type, (char_u *) strings, -1, block_len, TRUE);
|
str_to_reg(y_current, yank_type, (char_u *)strings, -1, block_len, TRUE);
|
||||||
|
|
||||||
finish_write_reg(name, old_y_previous, old_y_current);
|
finish_write_reg(name, old_y_previous, old_y_current);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
" Tests for various Visual modes.
|
" Tests for various Visual modes.
|
||||||
|
|
||||||
source shared.vim
|
source shared.vim
|
||||||
|
source check.vim
|
||||||
|
|
||||||
func Test_block_shift_multibyte()
|
func Test_block_shift_multibyte()
|
||||||
" Uses double-wide character.
|
" Uses double-wide character.
|
||||||
@@ -1225,5 +1226,24 @@ func Test_visual_put_in_block_using_zy_and_zp()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_visual_put_blockedit_zy_and_zp()
|
||||||
|
new
|
||||||
|
|
||||||
|
call setline(1, ['aa', 'bbbbb', 'ccc', '', 'XX', 'GGHHJ', 'RTZU'])
|
||||||
|
exe "normal! gg0\<c-v>2j$zy"
|
||||||
|
norm! 5gg0zP
|
||||||
|
call assert_equal(['aa', 'bbbbb', 'ccc', '', 'aaXX', 'bbbbbGGHHJ', 'cccRTZU'], getline(1, 7))
|
||||||
|
"
|
||||||
|
" now with blockmode editing
|
||||||
|
sil %d
|
||||||
|
:set ve=block
|
||||||
|
call setline(1, ['aa', 'bbbbb', 'ccc', '', 'XX', 'GGHHJ', 'RTZU'])
|
||||||
|
exe "normal! gg0\<c-v>2j$zy"
|
||||||
|
norm! 5gg0zP
|
||||||
|
call assert_equal(['aa', 'bbbbb', 'ccc', '', 'aaXX', 'bbbbbGGHHJ', 'cccRTZU'], getline(1, 7))
|
||||||
|
set ve&vim
|
||||||
|
bw!
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -755,6 +755,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3072,
|
||||||
/**/
|
/**/
|
||||||
3071,
|
3071,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user