mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
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)
This commit is contained in:
parent
4ad3b2b588
commit
d41babef89
@ -607,11 +607,14 @@ check_cursor_col_win(win_T *win)
|
|||||||
if (oldcoladd > win->w_cursor.col)
|
if (oldcoladd > win->w_cursor.col)
|
||||||
{
|
{
|
||||||
win->w_cursor.coladd = 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;
|
int cs, ce;
|
||||||
|
|
||||||
/* check that coladd is not more than the char width */
|
|
||||||
getvcol(win, &win->w_cursor, &cs, NULL, &ce);
|
getvcol(win, &win->w_cursor, &cs, NULL, &ce);
|
||||||
if (win->w_cursor.coladd > ce - cs)
|
if (win->w_cursor.coladd > ce - cs)
|
||||||
win->w_cursor.coladd = ce - cs;
|
win->w_cursor.coladd = ce - cs;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Tests for 'virtualedit'.
|
" Tests for 'virtualedit'.
|
||||||
|
|
||||||
func Test_yank_move_change()
|
func Test_yank_move_change()
|
||||||
split
|
new
|
||||||
call setline(1, [
|
call setline(1, [
|
||||||
\ "func foo() error {",
|
\ "func foo() error {",
|
||||||
\ "\tif n, err := bar();",
|
\ "\tif n, err := bar();",
|
||||||
@ -29,3 +29,15 @@ func Test_yank_move_change()
|
|||||||
set virtualedit=
|
set virtualedit=
|
||||||
set ts=8
|
set ts=8
|
||||||
endfunc
|
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
|
||||||
|
@ -769,6 +769,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 */
|
||||||
|
/**/
|
||||||
|
1019,
|
||||||
/**/
|
/**/
|
||||||
1018,
|
1018,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user