diff src/buffer.c @ 27275:841145bb9885 v8.2.4166

patch 8.2.4166: undo synced when switching buffer in another window Commit: https://github.com/vim/vim/commit/e615db06046312e74886fa1ef98feb5a9db2a7c3 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 20 21:00:54 2022 +0000 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 https://github.com/vim/vim/issues/9575)
author Bram Moolenaar <Bram@vim.org>
date Thu, 20 Jan 2022 22:15:03 +0100
parents e1cedf009920
children ebe56a24acb6
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1744,7 +1744,11 @@ set_curbuf(buf_T *buf, int action)
 	{
 	    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