diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f842ff6..fa1362a 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -7157,7 +7157,7 @@
 
 							*sandbox-option*
 A few options contain an expression.  When this expression is evaluated it may
-have to be done in the sandbox to avoid a security risc.  But the sandbox is
+have to be done in the sandbox to avoid a security risk.  But the sandbox is
 restrictive, thus this only happens when the option was set from an insecure
 location.  Insecure in this context are:
 - sourcing a .vimrc or .exrc in the current directlry
diff --git a/runtime/doc/makehtml.awk b/runtime/doc/makehtml.awk
index 34a5544..5e40069 100644
--- a/runtime/doc/makehtml.awk
+++ b/runtime/doc/makehtml.awk
@@ -135,7 +135,7 @@
 	print "<H1>Vim documentation: " f[1] "</H1>";
 	print "<A NAME=\"top\"></A>";
 	if ( FILENAME != "help.txt" ) {
-	  print "<A HREF=\"help.html\">main help file</A>\n";
+	  print "<A HREF=\"index.html\">main help file</A>\n";
 	}
 	print "<HR>";
 	print "<PRE>";
@@ -244,7 +244,15 @@
 				find_tag1();
 				}
 				else {
+					if ( f[1] == "index" ) {
+		printf "|<A HREF=\"vimindex.html\">" p[i] "</A>|";
+					} else {
+						if ( f[1] == "help" ) {
+		printf "|<A HREF=\"index.html\">" p[i] "</A>|";
+						} else {
 		printf "|<A HREF=\"" f[1] ".html\">" p[i] "</A>|";
+						}
+					}
 				}
 			}
 		}
@@ -373,13 +381,12 @@
 
 #
 # as main we keep index.txt (by default)
-# other candidate, help.txt
 #
 function topback () {
 	if ( FILENAME != "tags" ) {
 	if ( FILENAME != "help.txt" ) {
 	printf("<A HREF=\"#top\">top</A> - ");
-	printf("<A HREF=\"help.html\">main help file</A>\n");
+	printf("<A HREF=\"index.html\">main help file</A>\n");
 	} else {
 	printf("<A HREF=\"#top\">top</A>\n");
 	}
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d0c8a48..ae9f517 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1013,7 +1013,7 @@
 
 						     *'balloonexpr'* *'bexpr'*
 'balloonexpr' 'bexpr'	string	(default "")
-			global
+			global or local to buffer |global-local|
 			{not in Vi}
 			{only available when compiled with the |+balloon_eval|
 			feature}
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 1fe96fa..2353d3a 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 07
+*repeat.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -563,9 +563,17 @@
 
 :prof[ile] start {fname}			*:prof* *:profile* *E750*
 		Start profiling, write the output in {fname} upon exit.
-		If {fname} already exists it will be overwritten.
+		If {fname} already exists it will be silently overwritten.
 		The variable |v:profiling| is set to one.
 
+:prof[ile] pause
+		Don't profile until the following ":profile continue".  Can be
+		used when doing something that should not be counted (e.g., an
+		external command).  Does not nest.
+
+:prof[ile] continue
+		Continue profiling after ":profile pause".
+
 :prof[ile] func {pattern}
 		Profile function that matches the pattern {pattern}.
 		See |:debug-name| for how {pattern} is used.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 4ea882b..15ee128 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2558,12 +2558,22 @@
 :sleep	various.txt	/*:sleep*
 :sm	change.txt	/*:sm*
 :smagic	change.txt	/*:smagic*
+:smap	map.txt	/*:smap*
+:smap_l	map.txt	/*:smap_l*
+:smapc	map.txt	/*:smapc*
+:smapclear	map.txt	/*:smapclear*
+:sme	gui.txt	/*:sme*
+:smenu	gui.txt	/*:smenu*
 :sn	windows.txt	/*:sn*
 :snext	windows.txt	/*:snext*
 :sni	if_sniff.txt	/*:sni*
 :sniff	if_sniff.txt	/*:sniff*
 :sno	change.txt	/*:sno*
 :snomagic	change.txt	/*:snomagic*
+:snor	map.txt	/*:snor*
+:snoremap	map.txt	/*:snoremap*
+:snoreme	gui.txt	/*:snoreme*
+:snoremenu	gui.txt	/*:snoremenu*
 :so	repeat.txt	/*:so*
 :sor	change.txt	/*:sor*
 :sort	change.txt	/*:sort*
@@ -2607,6 +2617,10 @@
 :substitute	change.txt	/*:substitute*
 :sun	windows.txt	/*:sun*
 :sunhide	windows.txt	/*:sunhide*
+:sunm	map.txt	/*:sunm*
+:sunmap	map.txt	/*:sunmap*
+:sunme	gui.txt	/*:sunme*
+:sunmenu	gui.txt	/*:sunmenu*
 :sus	starting.txt	/*:sus*
 :suspend	starting.txt	/*:suspend*
 :sv	windows.txt	/*:sv*
@@ -2839,6 +2853,21 @@
 :xa	editing.txt	/*:xa*
 :xall	editing.txt	/*:xall*
 :xit	editing.txt	/*:xit*
+:xm	map.txt	/*:xm*
+:xmap	map.txt	/*:xmap*
+:xmap_l	map.txt	/*:xmap_l*
+:xmapc	map.txt	/*:xmapc*
+:xmapclear	map.txt	/*:xmapclear*
+:xme	gui.txt	/*:xme*
+:xmenu	gui.txt	/*:xmenu*
+:xn	map.txt	/*:xn*
+:xnoremap	map.txt	/*:xnoremap*
+:xnoreme	gui.txt	/*:xnoreme*
+:xnoremenu	gui.txt	/*:xnoremenu*
+:xu	map.txt	/*:xu*
+:xunmap	map.txt	/*:xunmap*
+:xunme	gui.txt	/*:xunme*
+:xunmenu	gui.txt	/*:xunmenu*
 :y	change.txt	/*:y*
 :yank	change.txt	/*:yank*
 :z	various.txt	/*:z*
@@ -4931,6 +4960,7 @@
 edit-intro	editing.txt	/*edit-intro*
 edit-no-break	usr_25.txt	/*edit-no-break*
 editing.txt	editing.txt	/*editing.txt*
+efm-%>	quickfix.txt	/*efm-%>*
 efm-entries	quickfix.txt	/*efm-entries*
 efm-ignore	quickfix.txt	/*efm-ignore*
 eiffel.vim	syntax.txt	/*eiffel.vim*
@@ -5972,7 +6002,9 @@
 mapmode-n	map.txt	/*mapmode-n*
 mapmode-nvo	map.txt	/*mapmode-nvo*
 mapmode-o	map.txt	/*mapmode-o*
+mapmode-s	map.txt	/*mapmode-s*
 mapmode-v	map.txt	/*mapmode-v*
+mapmode-x	map.txt	/*mapmode-x*
 mapping	map.txt	/*mapping*
 mark	motion.txt	/*mark*
 mark-motions	motion.txt	/*mark-motions*
@@ -6249,6 +6281,7 @@
 new-location-list	version7.txt	/*new-location-list*
 new-manpage-trans	version7.txt	/*new-manpage-trans*
 new-map-expression	version7.txt	/*new-map-expression*
+new-map-select	version7.txt	/*new-map-select*
 new-more-highlighting	version7.txt	/*new-more-highlighting*
 new-more-unicode	version7.txt	/*new-more-unicode*
 new-multi-byte	version5.txt	/*new-multi-byte*
diff --git a/runtime/plugin/README.txt b/runtime/plugin/README.txt
index 5cc68fd..cb87ed9 100644
--- a/runtime/plugin/README.txt
+++ b/runtime/plugin/README.txt
@@ -8,6 +8,7 @@
 rrhelper.vim	used for --remote-wait editing
 tar.vim		edit (compressed) tar files
 tohtml.vim	convert a file with syntax highlighting to HTML
+vimball.vim	create and unpack .vba files
 
 Note: the explorer.vim plugin is no longer here, the netrw.vim plugin has
 taken over browsing directories (also over ftp).
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index ad49d45..c85f0b6 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1007,6 +1007,7 @@
 }
 
 static char_u	*profile_fname = NULL;
+static proftime_T pause_time;
 
 /*
  * ":profile cmd args"
@@ -1026,12 +1027,27 @@
     {
 	vim_free(profile_fname);
 	profile_fname = vim_strsave(e);
-	do_profiling = TRUE;
+	do_profiling = PROF_YES;
 	profile_zero(&prof_wait_time);
 	set_vim_var_nr(VV_PROFILING, 1L);
     }
-    else if (!do_profiling)
+    else if (do_profiling == PROF_NONE)
 	EMSG(_("E750: First use :profile start <fname>"));
+    else if (STRCMP(eap->arg, "pause") == 0)
+    {
+	if (do_profiling == PROF_YES)
+	    profile_start(&pause_time);
+	do_profiling = PROF_PAUSED;
+    }
+    else if (STRCMP(eap->arg, "continue") == 0)
+    {
+	if (do_profiling == PROF_PAUSED)
+	{
+	    profile_end(&pause_time);
+	    profile_add(&prof_wait_time, &pause_time);
+	}
+	do_profiling = PROF_YES;
+    }
     else
     {
 	/* The rest is similar to ":breakadd". */
@@ -2920,7 +2936,7 @@
 
 #ifdef FEAT_EVAL
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
 	prof_child_enter(&wait_start);		/* entering a child now */
 # endif
 
@@ -2984,7 +3000,7 @@
     }
 
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
     {
 	int	forceit;
 
@@ -3013,7 +3029,7 @@
     retval = OK;
 
 #ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
     {
 	/* Get "si" again, "script_items" may have been reallocated. */
 	si = &SCRIPT_ITEM(current_SID);
@@ -3061,7 +3077,7 @@
     current_SID = save_current_SID;
     restore_funccal(save_funccalp);
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
 	prof_child_exit(&wait_start);		/* leaving a child now */
 # endif
 #endif
@@ -3227,7 +3243,7 @@
 	sp->dbg_tick = debug_tick;
     }
 # ifdef FEAT_PROFILE
-    if (do_profiling)
+    if (do_profiling == PROF_YES)
 	script_line_end();
 # endif
 #endif
@@ -3246,7 +3262,7 @@
 	++sourcing_lnum;
     }
 #ifdef FEAT_PROFILE
-    if (line != NULL && do_profiling)
+    if (line != NULL && do_profiling == PROF_YES)
 	script_line_start();
 #endif
 
diff --git a/src/globals.h b/src/globals.h
index b0523fc..765199b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -224,7 +224,7 @@
 EXTERN int	debug_did_msg INIT(= FALSE);	/* did "debug mode" message */
 EXTERN int	debug_tick INIT(= 0);		/* breakpoint change count */
 # ifdef FEAT_PROFILE
-EXTERN int	do_profiling INIT(= 0);		/* ":profile start" used */
+EXTERN int	do_profiling INIT(= PROF_NONE);	/* PROF_ values */
 # endif
 
 /*
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index cdd645b..a1c4375 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -320,6 +320,19 @@
     return image;
 }
 
+/*ARGSUSED*/
+    static gint
+toolbar_button_focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
+{
+    /* When we're in a GtkPlug, we don't have window focus events, only widget focus.
+     * To emulate stand-alone gvim, if a button gets focus (e.g., <Tab> into GtkPlug)
+     * immediately pass it to mainwin.
+     */
+    if (gtk_socket_id != 0)
+        gtk_widget_grab_focus(gui.drawarea);
+
+    return TRUE;
+}
 #endif /* FEAT_TOOLBAR && HAVE_GTK2 */
 
 #if (defined(FEAT_TOOLBAR) && defined(HAVE_GTK2)) || defined(PROTO)
@@ -767,6 +780,10 @@
 		    menu,
 		    idx);
 
+            if (gtk_socket_id != 0)
+                gtk_signal_connect(GTK_OBJECT(menu->id), "focus_in_event",
+                        GTK_SIGNAL_FUNC(toolbar_button_focus_in_event), NULL);
+
 	    CONVERT_TO_UTF8_FREE(text);
 	    CONVERT_TO_UTF8_FREE(tooltip);
 
diff --git a/src/option.c b/src/option.c
index 8bfeb98..73933b4 100644
--- a/src/option.c
+++ b/src/option.c
@@ -101,6 +101,9 @@
 #ifdef FEAT_MBYTE
 # define PV_FENC	OPT_BUF(BV_FENC)
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+# define PV_BEXPR	OPT_BOTH(OPT_BUF(BV_BEXPR))
+#endif
 #ifdef FEAT_EVAL
 # define PV_FEX		OPT_BUF(BV_FEX)
 #endif
@@ -250,7 +253,7 @@
 #define VAR_WIN ((char_u *)-1)
 
 /*
- * These the global values for options which are also local to a buffer.
+ * These are the global values for options which are also local to a buffer.
  * Only to be used in option.c!
  */
 static int	p_ai;
@@ -581,7 +584,7 @@
 			    {(char_u *)FALSE, (char_u *)0L}},
 # ifdef FEAT_EVAL
     {"balloonexpr", "bexpr", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
-			    (char_u *)&p_bexpr, PV_NONE,
+			    (char_u *)&p_bexpr, PV_BEXPR,
 			    {(char_u *)"", (char_u *)0L}},
 # endif
 #endif
@@ -4997,6 +5000,9 @@
     check_string_option(&buf->b_p_inde);
     check_string_option(&buf->b_p_indk);
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+    check_string_option(&buf->b_p_bexpr);
+#endif
 #if defined(FEAT_EVAL)
     check_string_option(&buf->b_p_fex);
 #endif
@@ -5157,6 +5163,9 @@
 #ifdef FEAT_EVAL
 	    case PV_FDE:	return &curwin->w_p_fde_flags;
 	    case PV_FDT:	return &curwin->w_p_fdt_flags;
+# ifdef FEAT_BEVAL
+	    case PV_BEXPR:	return &curbuf->b_p_bexpr_flags;
+# endif
 #endif
 #if defined(FEAT_EVAL)
 # if defined(FEAT_CINDENT)
@@ -8784,6 +8793,9 @@
 	    case PV_DICT: return (char_u *)&(curbuf->b_p_dict);
 	    case PV_TSR:  return (char_u *)&(curbuf->b_p_tsr);
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+	    case PV_BEXPR: return (char_u *)&(curbuf->b_p_bexpr);
+#endif
 #ifdef FEAT_STL_OPT
 	    case PV_STL:  return (char_u *)&(curwin->w_p_stl);
 #endif
@@ -8839,6 +8851,10 @@
 	case PV_MP:	return *curbuf->b_p_mp != NUL
 				    ? (char_u *)&(curbuf->b_p_mp) : p->var;
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+	case PV_BEXPR:	return *curbuf->b_p_bexpr != NUL
+				    ? (char_u *)&(curbuf->b_p_bexpr) : p->var;
+#endif
 #ifdef FEAT_STL_OPT
 	case PV_STL:	return *curwin->w_p_stl != NUL
 				    ? (char_u *)&(curwin->w_p_stl) : p->var;
@@ -9368,6 +9384,9 @@
 #ifdef FEAT_TEXTOBJ
 	    buf->b_p_qe = vim_strsave(p_qe);
 #endif
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+	    buf->b_p_bexpr = empty_option;
+#endif
 
 	    /*
 	     * Don't copy the options set by ex_help(), use the saved values,
diff --git a/src/option.h b/src/option.h
index b1e6f82..1bd9d7d 100644
--- a/src/option.h
+++ b/src/option.h
@@ -910,6 +910,7 @@
     , BV_ET
     , BV_FENC
 #ifdef FEAT_EVAL
+    , BV_BEXPR
     , BV_FEX
 #endif
     , BV_FF
diff --git a/src/structs.h b/src/structs.h
index 907b1cc..1b7c826 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1458,6 +1458,11 @@
     dict_T	b_vars;		/* internal variables, local to buffer */
 #endif
 
+#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
+    char_u	*b_p_bexpr;	/* 'balloonexpr' local value */
+    long_u	b_p_bexpr_flags;/* flags for 'balloonexpr' */
+#endif
+
     /* When a buffer is created, it starts without a swap file.  b_may_swap is
      * then set to indicate that a swap file may be opened later.  It is reset
      * if a swap file could not be opened.
@@ -1618,6 +1623,10 @@
     win_T	    *tp_lastwin;    /* last window in this Tab page */
     long	    tp_old_Rows;    /* Rows when Tab page was left */
     long	    tp_old_Columns; /* Columns when Tab page was left */
+#ifdef FEAT_GUI
+    int		    tp_prev_which_scrollbars[3];
+				    /* previous value of which_scrollbars */
+#endif
 #ifdef FEAT_DIFF
     diff_T	    *tp_first_diff;
     buf_T	    *(tp_diffbuf[DB_COUNT]);
@@ -2092,15 +2101,17 @@
 #define MENU_INDEX_INVALID	-1
 #define MENU_INDEX_NORMAL	0
 #define MENU_INDEX_VISUAL	1
-#define MENU_INDEX_OP_PENDING	2
-#define MENU_INDEX_INSERT	3
-#define MENU_INDEX_CMDLINE	4
-#define MENU_INDEX_TIP		5
-#define MENU_MODES		6
+#define MENU_INDEX_SELECT	2
+#define MENU_INDEX_OP_PENDING	3
+#define MENU_INDEX_INSERT	4
+#define MENU_INDEX_CMDLINE	5
+#define MENU_INDEX_TIP		6
+#define MENU_MODES		7
 
 /* Menu modes */
 #define MENU_NORMAL_MODE	(1 << MENU_INDEX_NORMAL)
 #define MENU_VISUAL_MODE	(1 << MENU_INDEX_VISUAL)
+#define MENU_SELECT_MODE	(1 << MENU_INDEX_SELECT)
 #define MENU_OP_PENDING_MODE	(1 << MENU_INDEX_OP_PENDING)
 #define MENU_INSERT_MODE	(1 << MENU_INDEX_INSERT)
 #define MENU_CMDLINE_MODE	(1 << MENU_INDEX_CMDLINE)
diff --git a/src/version.h b/src/version.h
index 365d288..ee1532b 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 Mar 19)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 19, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 20)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 20, compiled "
