patch 8.2.4166: undo synced when switching buffer in another window
Problem: Undo synced when switching buffer in another window.
Solution: Do not sync undo when not needed. (closes #9575)
diff --git a/src/buffer.c b/src/buffer.c
index 18aa2a0..d8d0f3c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1744,7 +1744,11 @@
{
win_T *previouswin = curwin;
- if (prevbuf == curbuf)
+ // Do not sync when in Insert mode and the buffer is open in
+ // another window, might be a timer doing something in another
+ // window.
+ if (prevbuf == curbuf
+ && ((State & INSERT) == 0 || curbuf->b_nwindows <= 1))
u_sync(FALSE);
close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
unload ? action : (action == DOBUF_GOTO