diff src/fileio.c @ 15241:83ff85896a14 v8.1.0630

patch 8.1.0630: "wincmd p" does not work after using an autocmd window commit https://github.com/vim/vim/commit/a42df5934bdc1178ed2ee8cb9c8686975b578497 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 24 00:22:39 2018 +0100 patch 8.1.0630: "wincmd p" does not work after using an autocmd window Problem: "wincmd p" does not work after using an autocmd window. Solution: Store "prevwin" in aco_save_T. (Christian Brabandt, closes https://github.com/vim/vim/issues/3690)
author Bram Moolenaar <Bram@vim.org>
date Mon, 24 Dec 2018 00:30:07 +0100
parents 6e4e0d43b20b
children 3e2e1608efa4
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -9017,6 +9017,7 @@ aucmd_prepbuf(
 
     aco->save_curwin = curwin;
     aco->save_curbuf = curbuf;
+    aco->save_prevwin = prevwin;
     if (win != NULL)
     {
 	/* There is a window for "buf" in the current tab page, make it the
@@ -9127,6 +9128,8 @@ win_found:
 	else
 	    /* Hmm, original window disappeared.  Just use the first one. */
 	    curwin = firstwin;
+	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 */
@@ -9177,6 +9180,8 @@ win_found:
 
 	    curwin = aco->save_curwin;
 	    curbuf = curwin->w_buffer;
+	    if (win_valid(aco->save_prevwin))
+		prevwin = aco->save_prevwin;
 	    /* In case the autocommand move the cursor to a position that that
 	     * not exist in curbuf. */
 	    check_cursor();