mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
vim-patch:7.4.901
Problem: When a BufLeave autocommand changes folding in a way it syncs
undo, undo can be corrupted.
Solution: Prevent undo sync. (Jacob Niehus)
e7d1376b63
---
see: "[bug] [patch] Setting foldmethod in WinLeave autocommand can corrupt undo state"
https://groups.google.com/d/msg/vim_dev/xF5uMLb1vwY/Jn4RglosDgAJ
This commit is contained in:
parent
7609a96a35
commit
4a4c3fdfcd
@ -545,7 +545,11 @@ static int pum_set_selected(int n, int repeat)
|
||||
g_do_tagpreview = (int)p_pvh;
|
||||
}
|
||||
RedrawingDisabled++;
|
||||
// Prevent undo sync here, if an autocommand syncs undo weird
|
||||
// things can happen to the undo tree.
|
||||
no_u_sync++;
|
||||
resized = prepare_tagpreview(false);
|
||||
no_u_sync--;
|
||||
RedrawingDisabled--;
|
||||
g_do_tagpreview = 0;
|
||||
|
||||
@ -629,7 +633,9 @@ static int pum_set_selected(int n, int repeat)
|
||||
// the window when needed, otherwise it will always be
|
||||
// redraw.
|
||||
if (resized) {
|
||||
no_u_sync++;
|
||||
win_enter(curwin_save, true);
|
||||
no_u_sync--;
|
||||
update_topline();
|
||||
}
|
||||
|
||||
@ -640,7 +646,9 @@ static int pum_set_selected(int n, int repeat)
|
||||
pum_do_redraw = FALSE;
|
||||
|
||||
if (!resized && win_valid(curwin_save)) {
|
||||
no_u_sync++;
|
||||
win_enter(curwin_save, true);
|
||||
no_u_sync--;
|
||||
}
|
||||
|
||||
// May need to update the screen again when there are
|
||||
|
@ -387,7 +387,7 @@ static int included_patches[] = {
|
||||
// 904,
|
||||
// 903,
|
||||
// 902 NA
|
||||
// 901,
|
||||
901,
|
||||
// 900 NA
|
||||
// 899 NA
|
||||
898,
|
||||
|
Loading…
Reference in New Issue
Block a user