diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-02-15 10:23:27 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-02-15 10:26:39 +0800 |
commit | 6eec30ccfc09f0ea45c9ef86a77ca92a5fc4a1b9 (patch) | |
tree | 68a5a7fd697f5da9f4727294cb1450deefb5a634 | |
parent | 1bd6c0a05c18e10e9439b4090e6f57f0d1e1fc21 (diff) | |
download | rneovim-6eec30ccfc09f0ea45c9ef86a77ca92a5fc4a1b9.tar.gz rneovim-6eec30ccfc09f0ea45c9ef86a77ca92a5fc4a1b9.tar.bz2 rneovim-6eec30ccfc09f0ea45c9ef86a77ca92a5fc4a1b9.zip |
vim-patch:8.2.4154: ml_get error when exchanging windows in Visual mode
Problem: ml_get error when exchanging windows in Visual mode.
Solution: Correct end of Visual area when entering another buffer.
https://github.com/vim/vim/commit/05b27615481e72e3b338bb12990fb3e0c2ecc2a9
-rw-r--r-- | src/nvim/testdir/test_visual.vim | 10 | ||||
-rw-r--r-- | src/nvim/window.c | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_visual.vim b/src/nvim/testdir/test_visual.vim index 04c7db38ef..4650d4e3df 100644 --- a/src/nvim/testdir/test_visual.vim +++ b/src/nvim/testdir/test_visual.vim @@ -1280,6 +1280,16 @@ func Test_visual_block_insert_round_off() bwipe! endfunc +" this was causing an ml_get error +func Test_visual_exchange_windows() + enew! + new + call setline(1, ['foo', 'bar']) + exe "normal G\<C-V>gg\<C-W>\<C-X>OO\<Esc>" + bwipe! + bwipe! +endfunc + " this was leaving the end of the Visual area beyond the end of a line func Test_visual_ex_copy_line() new diff --git a/src/nvim/window.c b/src/nvim/window.c index e09af7a7bb..1e737d2083 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -1727,6 +1727,12 @@ static void win_exchange(long Prenum) (void)win_comp_pos(); // recompute window positions + if (wp->w_buffer != curbuf) { + reset_VIsual_and_resel(); + } else if (VIsual_active) { + wp->w_cursor = curwin->w_cursor; + } + win_enter(wp, true); redraw_later(curwin, NOT_VALID); redraw_later(wp, NOT_VALID); |