0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 9.0.1277: cursor may move with autocmd in Visual mode

Problem:    Cursor may move with autocmd in Visual mode.
Solution:   Restore "VIsual_active" before calling check_cursor().
            (closes #11939)
This commit is contained in:
zeertzjq
2023-02-04 10:58:34 +00:00
committed by Bram Moolenaar
parent 4be18e77ff
commit 49f0524fb5
3 changed files with 16 additions and 2 deletions

View File

@@ -1695,6 +1695,7 @@ win_found:
globaldir = aco->globaldir;
// the buffer contents may have changed
VIsual_active = aco->save_VIsual_active;
check_cursor();
if (curwin->w_topline > curbuf->b_ml.ml_line_count)
{
@@ -1741,14 +1742,16 @@ win_found:
curwin = save_curwin;
curbuf = curwin->w_buffer;
prevwin = win_find_by_id(aco->save_prevwin_id);
// In case the autocommand moves the cursor to a position that
// does not exist in curbuf.
VIsual_active = aco->save_VIsual_active;
check_cursor();
}
}
check_cursor(); // just in case lines got deleted
VIsual_active = aco->save_VIsual_active;
check_cursor(); // just in case lines got deleted
if (VIsual_active)
check_pos(curbuf, &VIsual);
}