Permalink
Browse files

patch 8.0.1019: pasting in virtual edit happens in the wrong place

Problem:    Pasting in virtual edit happens in the wrong place.
Solution:   Do not adjust coladd when after the end of the line (closes #2015)
  • Loading branch information...
brammool committed Aug 30, 2017
1 parent 4ad3b2b commit d41babef89a50cdf165f15bc1834c0a4e89ffff8
Showing with 20 additions and 3 deletions.
  1. +5 −2 src/misc2.c
  2. +13 −1 src/testdir/test_virtualedit.vim
  3. +2 −0 src/version.c
View
@@ -607,11 +607,14 @@ check_cursor_col_win(win_T *win)
if (oldcoladd > win->w_cursor.col)
{
win->w_cursor.coladd = oldcoladd - win->w_cursor.col;
if (win->w_cursor.col < len && win->w_cursor.coladd > 0)
/* Make sure that coladd is not more than the char width.
* Not for the last character, coladd is then used when the cursor
* is actually after the last character. */
if (win->w_cursor.col + 1 < len && win->w_cursor.coladd > 0)
{
int cs, ce;
/* check that coladd is not more than the char width */
getvcol(win, &win->w_cursor, &cs, NULL, &ce);
if (win->w_cursor.coladd > ce - cs)
win->w_cursor.coladd = ce - cs;
@@ -1,7 +1,7 @@
" Tests for 'virtualedit'.
func Test_yank_move_change()
split
new
call setline(1, [
\ "func foo() error {",
\ "\tif n, err := bar();",
@@ -29,3 +29,15 @@ func Test_yank_move_change()
set virtualedit=
set ts=8
endfunc
func Test_paste_end_of_line()
new
set virtualedit=all
call setline(1, ['456', '123'])
normal! gg0"ay$
exe "normal! 2G$lllA\<C-O>:normal! \"agP\r"
call assert_equal('123456', getline(2))
bwipe!
set virtualedit=
endfunc
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1019,
/**/
1018,
/**/

0 comments on commit d41babe

Please sign in to comment.