diff src/window.c @ 870:591fb953a280

updated for version 7.0g05
author vimboss
date Sat, 06 May 2006 21:38:18 +0000
parents 99305c4c42d4
children b2dcb8457067
line wrap: on
line diff
--- a/src/window.c
+++ b/src/window.c
@@ -3425,19 +3425,22 @@ enter_tabpage(tp, old_curbuf)
     buf_T	*old_curbuf;
 {
     int		old_off = tp->tp_firstwin->w_winrow;
+    win_T	*next_prevwin = tp->tp_prevwin;
 
     curtab = tp;
     firstwin = tp->tp_firstwin;
     lastwin = tp->tp_lastwin;
     topframe = tp->tp_topframe;
+
+    /* We would like doing the TabEnter event first, but we don't have a
+     * valid current window yet, which may break some commands.
+     * This triggers autocommands, thus may make "tp" invalid. */
+    win_enter_ext(tp->tp_curwin, FALSE, TRUE);
+    prevwin = next_prevwin;
+
 #ifdef FEAT_AUTOCMD
     apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
-#endif
-
-    win_enter_ext(tp->tp_curwin, FALSE, TRUE);
-    prevwin = tp->tp_prevwin;
-
-#ifdef FEAT_AUTOCMD
+
     if (old_curbuf != curbuf)
 	apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
 #endif