diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index 8b83468..8b24981 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2005 Jul 23
+# Last change:  2006 Feb 23
 #
 # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -288,7 +288,7 @@
 SRC =	buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \
 	ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \
 	hardcopy.c hashtable.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \
-	misc2.c move.c normal.c ops.c option.c quickfix.c regexp.c search.c \
+	misc2.c move.c normal.c ops.c option.c popupmenu.c quickfix.c regexp.c search.c \
 	spell.c syntax.c tag.c term.c termlib.c ui.c undo.c version.c screen.c \
 	window.c os_unix.c os_vms.c pathdef.c \
 	$(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \
@@ -298,7 +298,7 @@
 	ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \
 	if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtable.obj main.obj mark.obj \
 	menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \
-	move.obj mbyte.obj normal.obj ops.obj option.obj quickfix.obj \
+	move.obj mbyte.obj normal.obj ops.obj option.obj popupmenu.obj quickfix.obj \
 	regexp.obj search.obj spell.obj syntax.obj tag.obj term.obj termlib.obj \
 	ui.obj undo.obj screen.obj version.obj window.obj os_unix.obj \
 	os_vms.obj pathdef.obj \
@@ -607,6 +607,10 @@
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
+popupmenu.obj : popupmenu.c vim.h [.auto]config.h feature.h os_unix.h \
+ ascii.h keymap.h term.h macros.h structs.h regexp.h \
+ gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
+ globals.h farsi.h arabic.h
 quickfix.obj : quickfix.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
diff --git a/src/edit.c b/src/edit.c
index d159911..7960566 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -713,8 +713,8 @@
 		    continue;
 		}
 
-		/* A printable character: Add it to "compl_leader". */
-		if (vim_isprintc(c))
+		/* A printable, non-white character: Add to "compl_leader". */
+		if (vim_isprintc(c) && !vim_iswhite(c))
 		{
 		    ins_compl_addleader(c);
 		    continue;
@@ -3696,7 +3696,10 @@
 ins_compl_insert()
 {
     ins_bytes(compl_shown_match->cp_str + curwin->w_cursor.col - compl_col);
-    compl_used_match = TRUE;
+    if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
+	compl_used_match = FALSE;
+    else
+	compl_used_match = TRUE;
 }
 
 /*
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 575a185..416fd3e 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1983,7 +1983,8 @@
 #endif
 
 #ifdef FEAT_WINDOWS
-	if (*eap->cmd == 's')	    /* split window first */
+	/* split window or create new tab page first */
+	if (*eap->cmd == 's' || cmdmod.tab != 0)
 	{
 	    if (win_split(0, 0) == FAIL)
 		return;
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 6828f67..bac600c 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2939,6 +2939,14 @@
     if (cmd_silent)
 	return;
 
+    /* when 'incsearch' is set there may be no command line while redrawing */
+    if (ccline.cmdbuff == NULL)
+    {
+	windgoto(cmdline_row, 0);
+	msg_clr_eos();
+	return;
+    }
+
     msg_start();
     redrawcmdprompt();
 
@@ -5635,6 +5643,9 @@
     /* Don't execute autocommands while creating the window. */
     ++autocmd_block;
 # endif
+    /* don't use a new tab page */
+    cmdmod.tab = 0;
+
     /* Create a window for the command-line buffer. */
     if (win_split((int)p_cwh, WSP_BOT) == FAIL)
     {
diff --git a/src/proto/window.pro b/src/proto/window.pro
index ca0de7a..1c56ab1 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -14,11 +14,13 @@
 void curwin_init __ARGS((void));
 int win_alloc_first __ARGS((void));
 void win_init_size __ARGS((void));
-int win_new_tabpage __ARGS((void));
+int win_new_tabpage __ARGS((int after));
+int may_open_tabpage __ARGS((void));
 int make_tabpages __ARGS((int maxcount));
 int valid_tabpage __ARGS((tabpage_T *tpc));
 tabpage_T *find_tabpage __ARGS((int n));
 void goto_tabpage __ARGS((int n));
+void tabpage_move __ARGS((int nr));
 void win_goto __ARGS((win_T *wp));
 win_T *win_find_nr __ARGS((int winnr));
 void win_enter __ARGS((win_T *wp, int undo_sync));
diff --git a/src/structs.h b/src/structs.h
index 4d1928e..bb02a75 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -428,6 +428,7 @@
 # endif
 # ifdef FEAT_WINDOWS
     int		split;			/* flags for win_split() */
+    int		tab;			/* > 0 when ":tab" was used */
 # endif
 # if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
     int		confirm;		/* TRUE to invoke yes/no dialog */
diff --git a/src/syntax.c b/src/syntax.c
index 4560153..b5c3464 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6109,7 +6109,7 @@
 	"DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue",
 	"DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta",
 	"DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan",
-	"TabLine term=underline cterm=underline ctermbg=LightGrey gui=underline guibg=LightGrey",
+	"TabLine term=underline cterm=underline ctermfg=black ctermbg=LightGrey gui=underline guibg=LightGrey",
 	NULL
     };
 
@@ -6138,7 +6138,7 @@
 	"DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue",
 	"DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta",
 	"DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan",
-	"TabLine term=underline cterm=underline ctermbg=DarkGrey gui=underline guibg=DarkGrey",
+	"TabLine term=underline cterm=underline ctermfg=white ctermbg=DarkGrey gui=underline guibg=DarkGrey",
 	NULL
     };
 
diff --git a/src/term.c b/src/term.c
index f9d6d2d..621d35b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4695,10 +4695,18 @@
 			    && orig_num_clicks != 4
 			    && orig_mouse_col == mouse_col
 			    && orig_mouse_row == mouse_row
+			    && ((orig_topline == curwin->w_topline
 #ifdef FEAT_DIFF
-			    && orig_topfill == curwin->w_topfill
+				    && orig_topfill == curwin->w_topfill
 #endif
-			    && orig_topline == curwin->w_topline)
+				)
+#ifdef FEAT_WINDOWS
+				/* Double click in tab pages line also works
+				 * when window contents changes. */
+				|| (mouse_row == 0 && firstwin->w_winrow > 0)
+#endif
+			       )
+			    )
 			++orig_num_clicks;
 		    else
 			orig_num_clicks = 1;
diff --git a/src/version.h b/src/version.h
index 0ebd781..9838f1b 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 22)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 22, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 23)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 23, compiled "
