]> granicus.if.org Git - vim/commitdiff
patch 8.0.1019: pasting in virtual edit happens in the wrong place v8.0.1019
authorBram Moolenaar <Bram@vim.org>
Wed, 30 Aug 2017 15:01:35 +0000 (17:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 30 Aug 2017 15:01:35 +0000 (17:01 +0200)
Problem:    Pasting in virtual edit happens in the wrong place.
Solution:   Do not adjust coladd when after the end of the line (closes #2015)

src/misc2.c
src/testdir/test_virtualedit.vim
src/version.c

index d431a94280143f785b9896fcd92edb502ba274bd..9e47b24b4b7217053f44cec45536fe420706ec3b 100644 (file)
@@ -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;
index da143c518f659aff8c0565685d18f4610a5f6c2d..2b8849f488f33dd62f31f5f145f4863ff0f863bf 100644 (file)
@@ -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
index d18585d91bf2a5c532455c762d8cd845e85b84fb..980f28578cdd26cfb069b221d933befb6ff89501 100644 (file)
@@ -769,6 +769,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1019,
 /**/
     1018,
 /**/