mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
vim-patch:8.2.3610: crash when ModeChanged triggered too early
Problem: Crash when ModeChanged triggered too early.
Solution: Trigger ModeChanged after setting VIsual.
a062006b9d
This commit is contained in:
@@ -6789,7 +6789,6 @@ static void n_start_visual_mode(int c)
|
|||||||
VIsual_mode = c;
|
VIsual_mode = c;
|
||||||
VIsual_active = true;
|
VIsual_active = true;
|
||||||
VIsual_reselect = true;
|
VIsual_reselect = true;
|
||||||
trigger_modechanged();
|
|
||||||
// Corner case: the 0 position in a tab may change when going into
|
// Corner case: the 0 position in a tab may change when going into
|
||||||
// virtualedit. Recalculate curwin->w_cursor to avoid bad highlighting.
|
// virtualedit. Recalculate curwin->w_cursor to avoid bad highlighting.
|
||||||
//
|
//
|
||||||
@@ -6801,6 +6800,7 @@ static void n_start_visual_mode(int c)
|
|||||||
|
|
||||||
foldAdjustVisual();
|
foldAdjustVisual();
|
||||||
|
|
||||||
|
trigger_modechanged();
|
||||||
setmouse();
|
setmouse();
|
||||||
// Check for redraw after changing the state.
|
// Check for redraw after changing the state.
|
||||||
conceal_check_cursor_line();
|
conceal_check_cursor_line();
|
||||||
|
@@ -1727,4 +1727,12 @@ func Test_recursive_ModeChanged()
|
|||||||
au!
|
au!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_ModeChanged_starts_visual()
|
||||||
|
" This was triggering ModeChanged before setting VIsual, causing a crash.
|
||||||
|
au! ModeChanged * norm 0u
|
||||||
|
sil! norm
|
||||||
|
|
||||||
|
au! ModeChanged
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
Reference in New Issue
Block a user