diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index f50d04fbc1cc80737b0cf3e98f4aed230a0112be..93a92fd4356a8cc8b517fa6365e594209bb48a44 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 22
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,34 +30,17 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Completion: When back at the original word behave like after BS.
-
-Completion: When to get out of the BS state when the user keeps on typing?
-
-TabLineMod, TabLineModSel  hl when a buffer is modified in a tab.
-Command(s) to reorder tabs?  ":tabmove N".
-Open new tab by double click in tab line.
-"gT", ":tpNext" and ":tpprev" to go to previous tab?
-":tab" -> ":tpnext".
-":tab" or ":tabpage"  modifier to open new window in new tab.
-    E.g., ":tab help gt"
-    Keep a few commands as shortcuts:
-	:tpnew	     :tab new
-	:tpedit	        -
-	:tpclose     :tab close
-	:tponly	     :tab only
-	:tpnext		-
-	:tpprevious	-
-	:tpNext		-
-	:tplast		-
-	:tpfirst	-
-    ":tab!" to open it at the end, ":0tab" to open at the start.
-    ":tab split" opens tab with window same as current window.
-    ":tpsplit" would split the tab with all its windows.
-In GUI: right click can popup menu to close a specific tab.
+:tablast
+:tabfirst
+Also support:
+    :tabdup	 split the tab with all its windows.
+    :tab ball    tab page for each buffer
+    :tab all     tab page for each argument
+    :tabdo cmd   ":tabdo windo cmd" should also work
+
+In GUI: right click can popup a menu to close a specific tab.
 Option to put tab line at the left or right?  Need an option to specify its
 witdh.  It's like a separate window with ":tabs" output.
-    :tabdo    ":tabdo windo cmd" should also work
 
 Add an argument to search functions to stop at a certain line number.
     search('{', 'b', line('w0'))
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index addb5a223411986eb980705b281dfc22bd52d9dc..6da26a0f979c5aa574e01944e7cf95aaf6d14d41 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 22
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -657,6 +657,7 @@ different value.
 
 VHDL indent file (Gerald Lai)
 
+MGL syntax file. (Gero Kuhlmann)
 
 New Keymaps: ~
 
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 235a6b13da3f8cfeab3b88505711ca854f089dc3..fa8cb2ce67a3ce514b173809c0845a7995da3430 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5300,13 +5300,21 @@ ex_help(eap)
 
     /*
      * Re-use an existing help window or open a new one.
+     * Always open a new one for ":tab help".
      */
-    if (!curwin->w_buffer->b_help)
+    if (!curwin->w_buffer->b_help
+#ifdef FEAT_WINDOWS
+	    || cmdmod.tab != 0
+#endif
+	    )
     {
 #ifdef FEAT_WINDOWS
-	for (wp = firstwin; wp != NULL; wp = wp->w_next)
-	    if (wp->w_buffer != NULL && wp->w_buffer->b_help)
-		break;
+	if (cmdmod.tab != 0)
+	    wp = NULL;
+	else
+	    for (wp = firstwin; wp != NULL; wp = wp->w_next)
+		if (wp->w_buffer != NULL && wp->w_buffer->b_help)
+		    break;
 	if (wp != NULL && wp->w_buffer->b_nwindows > 0)
 	    win_enter(wp, TRUE);
 	else
@@ -5325,19 +5333,21 @@ ex_help(eap)
 
 #ifdef FEAT_WINDOWS
 	    /* Split off help window; put it at far top if no position
-	     * specified, the current window is vertically split and narrow. */
+	     * specified, the current window is vertically split and
+	     * narrow. */
 	    n = WSP_HELP;
 # ifdef FEAT_VERTSPLIT
 	    if (cmdmod.split == 0 && curwin->w_width != Columns
-						      && curwin->w_width < 80)
+						  && curwin->w_width < 80)
 		n |= WSP_TOP;
 # endif
 	    if (win_split(0, n) == FAIL)
+		goto erret;
 #else
 	    /* use current window */
 	    if (!can_abandon(curbuf, FALSE))
-#endif
 		goto erret;
+#endif
 
 #ifdef FEAT_WINDOWS
 	    if (curwin->w_height < p_hh)
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 49e86a4583e04b821570ea7c4ff2564371048e8c..71a0e2afb645114915c4de5ba5769a8c76352f1d 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -877,18 +877,26 @@ EX(CMD_tag,		"tag",		ex_tag,
 			RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
 EX(CMD_tags,		"tags",		do_tags,
 			TRLBAR|CMDWIN),
-EX(CMD_tab,		"tab",		ex_tab,
-			RANGE|NOTADR|COUNT|TRLBAR),
+EX(CMD_tab,		"tab",		ex_wrongmodifier,
+			NEEDARG|EXTRA|NOTRLCOM),
 EX(CMD_tabclose,	"tabclose",	ex_tabclose,
 			RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN),
 EX(CMD_tabedit,		"tabedit",	ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_tabfind,		"tabfind",	ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|NEEDARG|TRLBAR),
+EX(CMD_tabmove,		"tabmove",	ex_tabmove,
+			RANGE|NOTADR|COUNT|TRLBAR|ZEROR),
+EX(CMD_tabnext,		"tabnext",	ex_tabnext,
+			RANGE|NOTADR|COUNT|TRLBAR),
 EX(CMD_tabnew,		"tabnew",	ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_tabonly,		"tabonly",	ex_tabonly,
 			TRLBAR|CMDWIN),
+EX(CMD_tabprevious,	"tabprevious",	ex_tabprevious,
+			RANGE|NOTADR|COUNT|TRLBAR),
+EX(CMD_tabNext,		"tabNext",	ex_tabprevious,
+			RANGE|NOTADR|COUNT|TRLBAR),
 EX(CMD_tabs,		"tabs",		ex_tabs,
 			TRLBAR|CMDWIN),
 EX(CMD_tcl,		"tcl",		ex_tcl,