mirror of
https://github.com/neovim/neovim.git
synced 2025-10-16 06:46:07 +00:00
vim-patch:8.0.1019
Problem: Pasting in virtual edit happens in the wrong place.
Solution: Do not adjust coladd when after the end of the line (closes vim/vim#2015)
d41babef89
This commit is contained in:
@@ -383,10 +383,13 @@ void check_cursor_col_win(win_T *win)
|
||||
} else if (ve_flags == VE_ALL) {
|
||||
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
|
||||
|
Reference in New Issue
Block a user