# HG changeset patch # User Bram Moolenaar # Date 1601585105 -7200 # Node ID f7471450243c452b93623e40588d4ccf8385e09d # Parent fd9b840138938d512ae2b7a25f7a1a42c3bc5ead patch 8.2.1783: try-catch test fails Commit: https://github.com/vim/vim/commit/bdf931c25b4fe78877106ca529baee7899d0f6a4 Author: Bram Moolenaar 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(). diff --git a/src/autocmd.c b/src/autocmd.c --- 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; diff --git a/src/proto/window.pro b/src/proto/window.pro --- 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); diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim --- 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 diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/window.c b/src/window.c --- 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.