changeset 22470:f7471450243c v8.2.1783

patch 8.2.1783: try-catch test fails Commit: https://github.com/vim/vim/commit/bdf931c25b4fe78877106ca529baee7899d0f6a4 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 1 22:37:40 2020 +0200 patch 8.2.1783: try-catch test fails Problem: Try-catch test fails. Solution: Don't call win_enter(), only call enterering_window().
author Bram Moolenaar <Bram@vim.org>
date Thu, 01 Oct 2020 22:45:05 +0200
parents fd9b84013893
children 6c851d7824aa
files src/autocmd.c src/proto/window.pro src/testdir/runtest.vim src/version.c src/window.c
diffstat 5 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -1533,18 +1533,22 @@ win_found:
 	unblock_autocmds();
 
 	if (win_valid(aco->save_curwin))
-	    win_enter(aco->save_curwin, TRUE);
+	    curwin = aco->save_curwin;
 	else
 	    // Hmm, original window disappeared.  Just use the first one.
 	    curwin = firstwin;
+	curbuf = curwin->w_buffer;
+#ifdef FEAT_JOB_CHANNEL
+	// May need to restore insert mode for a prompt buffer.
+	entering_window(curwin);
+#endif
+
 	if (win_valid(aco->save_prevwin))
 	    prevwin = aco->save_prevwin;
 #ifdef FEAT_EVAL
 	vars_clear(&aucmd_win->w_vars->dv_hashtab);  // free all w: variables
 	hash_init(&aucmd_win->w_vars->dv_hashtab);   // re-use the hashtab
 #endif
-	curbuf = curwin->w_buffer;
-
 	vim_free(globaldir);
 	globaldir = aco->globaldir;
 
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -10,6 +10,7 @@ int win_count(void);
 int make_windows(int count, int vertical);
 void win_move_after(win_T *win1, win_T *win2);
 void win_equal(win_T *next_curwin, int current, int dir);
+void entering_window(win_T *win);
 void close_windows(buf_T *buf, int keep_curwin);
 int one_window(void);
 int win_close(win_T *win, int free_buf);
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -227,7 +227,12 @@ func RunTheTest(test)
 
   " Close any extra tab pages and windows and make the current one not modified.
   while tabpagenr('$') > 1
+    let winid = win_getid()
     quit!
+    if winid == win_getid()
+      echoerr 'Could not quit window'
+      break
+    endif
   endwhile
 
   while 1
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1783,
+/**/
     1782,
 /**/
     1781,
--- a/src/window.c
+++ b/src/window.c
@@ -2227,7 +2227,7 @@ leaving_window(win_T *win)
     }
 }
 
-    static void
+    void
 entering_window(win_T *win)
 {
     // Only matters for a prompt window.