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;
" Tests for 'virtualedit'.
func Test_yank_move_change()
- split
+ new
call setline(1, [
\ "func foo() error {",
\ "\tif n, err := bar();",
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