Patch 8.1.0630
Problem:   "wincmd p" does not work after using an autocmd window. 
Solution:   Store "prevwin" in aco_save_T. (Christian Brabandt, closes #3690)
Files:      src/fileio.c, src/structs.h, src/testdir/test_window_cmd.vim


*** ../vim-8.1.0629/src/fileio.c        2018-11-16 16:21:01.629310081 +0100
--- src/fileio.c        2018-12-23 23:53:39.133259452 +0100
***************
*** 9017,9022 ****
--- 9017,9023 ----
  
      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,9132 ****
--- 9128,9135 ----
        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,9182 ****
--- 9180,9187 ----
  
            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();
*** ../vim-8.1.0629/src/structs.h       2018-12-21 15:16:57.483579762 +0100
--- src/structs.h       2018-12-23 23:54:09.861011969 +0100
***************
*** 3252,3257 ****
--- 3252,3258 ----
      int               use_aucmd_win;  /* using aucmd_win */
      win_T     *save_curwin;   /* saved curwin */
      win_T     *new_curwin;    /* new curwin */
+     win_T     *save_prevwin;  /* saved prevwin */
      bufref_T  new_curbuf;     /* new curbuf */
      char_u    *globaldir;     /* saved value of globaldir */
  } aco_save_T;
*** ../vim-8.1.0629/src/testdir/test_window_cmd.vim     2018-11-10 
20:47:43.394262832 +0100
--- src/testdir/test_window_cmd.vim     2018-12-23 23:51:10.570457916 +0100
***************
*** 578,581 ****
--- 578,618 ----
    only
  endfunc
  
+ function! Fun_RenewFile()
+   sleep 2
+   silent execute '!echo "1" > tmp.txt'
+   sp
+   wincmd p
+   edit! tmp.txt
+ endfunction
+ 
+ func Test_window_prevwin()
+   " Can we make this work on MS-Windows?
+   if !has('unix')
+     return
+   endif
+ 
+   set hidden autoread
+   call writefile(['2'], 'tmp.txt')
+   new tmp.txt
+   q
+   " Need to wait a bit for the timestamp to be older.
+   call Fun_RenewFile()
+   call assert_equal(2, winnr())
+   wincmd p
+   call assert_equal(1, winnr())
+   wincmd p
+   q
+   call Fun_RenewFile()
+   call assert_equal(2, winnr())
+   wincmd p
+   call assert_equal(1, winnr())
+   wincmd p
+   " reset
+   q
+   call delete('tmp.txt')
+   set hidden&vim autoread&vim
+   delfunc Fun_RenewFile
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.1.0629/src/version.c       2018-12-23 19:10:05.014359877 +0100
--- src/version.c       2018-12-23 19:59:59.298394002 +0100
***************
*** 801,802 ****
--- 801,804 ----
  {   /* Add new patch number below this line */
+ /**/
+     630,
  /**/

-- 
Never overestimate a man's ability to underestimate a woman.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui