diff --git a/src/Makefile b/src/Makefile
index ecf7bf8..4c415cb 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1857,8 +1857,8 @@
 # spell file is there.
 installspell: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
 	if test -f $(SPELLSOURCE)/en.latin1.spl; then \
-	  $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(SPELLSOURCE)/*.vim $(DEST_SPELL); \
-	  chmod $(HELPMOD) $(DEST_SPELL)/*.spl $(DEST_SPELL)/*.vim; \
+	  $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(SPELLSOURCE)/*.sug $(SPELLSOURCE)/*.vim $(DEST_SPELL); \
+	  chmod $(HELPMOD) $(DEST_SPELL)/*.spl $(DEST_SPELL)/*.sug $(DEST_SPELL)/*.vim; \
 	fi
 
 # install helper program xxd
@@ -2029,7 +2029,7 @@
 $(DEST_BIN)/$(EVIEWTARGET):
 	cd $(DEST_BIN); ln -s $(VIMTARGET) $(EVIEWTARGET)
 
-# create links for the manual pages with various names to vim.	This is only
+# Create links for the manual pages with various names to vim.	This is only
 # done when the links (or manpages with the same name) don't exist yet.
 
 INSTALLMLARGS = $(VIMNAME) $(VIMDIFFNAME) $(EVIMNAME) \
@@ -2520,6 +2520,8 @@
 # Remove the link to the runtime dir, don't want to copy all of that.
 	-rm $(RESDIR)/vim/runtime
 	$(INSTALL_DATA_R) $(APPDIR) $(DESTDIR)$(prefix)
+# Generate the help tags file now, it won't work with "make installruntime".
+	-@srcdir=`pwd`; cd $(HELPSOURCE); $(MAKE) VIMEXE=$$srcdir/$(VIMTARGET) vimtags
 # Install the runtime files.  Recursive!
 	-mkdir -p $(DESTDIR)$(prefix)/$(RESDIR)/vim/runtime
 #	-mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin
@@ -2538,7 +2540,6 @@
 	mkdir -p $@
 
 bundle-dir: $(APPDIR)/Contents $(VIMTARGET)
-	-@srcdir=`pwd`; cd $(HELPSOURCE); $(MAKE) VIMEXE=$$srcdir/$(VIMTARGET) vimtags
 # Make a link to the runtime directory, so that we can try out the executable
 # without installing it.
 	mkdir -p $(RESDIR)/vim
diff --git a/src/config.mk.in b/src/config.mk.in
index 4996afd..759559a 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -135,8 +135,6 @@
 GUI_X_LIBS	= @GUI_X_LIBS@
 MOTIF_LIBNAME	= @MOTIF_LIBNAME@
 GTK_LIBNAME	= @GTK_LIBNAME@
-KDE_PREFIX	= @KDE_PREFIX@
-MOC             = @MOC@
 
 ### Any OS dependent extra source and object file
 OS_EXTRA_SRC	= @OS_EXTRA_SRC@
diff --git a/src/configure.in b/src/configure.in
index 90eb33b..aae20b9 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -169,9 +169,9 @@
     fi
   fi
 
-  dnl Avoid a bug with -O2 with gcc 4.0.  Symptom: malloc() reports double
+  dnl Avoid a bug with -O2 with gcc 4.0.1.  Symptom: malloc() reports double
   dnl free.  This happens in expand_filename(), because the optimizer swaps
-  dnl two blocks of code that use "repl" that can't be swapped.
+  dnl two blocks of code, both using "repl", that can't be swapped.
   if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
   fi
diff --git a/src/eval.c b/src/eval.c
index f47f16e..efa04be 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1661,11 +1661,12 @@
     int		var_count = 0;
     int		semicolon = 0;
     char_u	op[2];
+    char_u	*argend;
 
-    expr = skip_var_list(arg, &var_count, &semicolon);
-    if (expr == NULL)
+    argend = skip_var_list(arg, &var_count, &semicolon);
+    if (argend == NULL)
 	return;
-    expr = vim_strchr(expr, '=');
+    expr = vim_strchr(argend, '=');
     if (expr == NULL)
     {
 	/*
@@ -1692,7 +1693,7 @@
     {
 	op[0] = '=';
 	op[1] = NUL;
-	if (expr > arg)
+	if (expr > argend)
 	{
 	    if (vim_strchr((char_u *)"+-.", expr[-1]) != NULL)
 		op[0] = expr[-1];   /* +=, -= or .= */
@@ -12664,7 +12665,8 @@
     n1 = list_find_nr(arg->vval.v_list, 0L, &error);
     n2 = list_find_nr(arg->vval.v_list, 1L, &error);
 # ifdef WIN3264
-    tm->QuadPart = (n1 << 32) + n2;
+    tm->HighPart = n1;
+    tm->LowPart = n2;
 # else
     tm->tv_sec = n1;
     tm->tv_usec = n2;
@@ -12710,8 +12712,8 @@
 	long	n1, n2;
 
 # ifdef WIN3264
-	n1 = res.QuadPart >> 32;
-	n2 = res.QuadPart & 0xffffffff;
+	n1 = res.HighPart;
+	n2 = res.LowPart;
 # else
 	n1 = res.tv_sec;
 	n2 = res.tv_usec;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index fa8f4ef..dd1622a 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -213,8 +213,12 @@
 			TRLBAR|FILE1|BANG),
 EX(CMD_cfirst,		"cfirst",	ex_cc,
 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
+EX(CMD_cgetbuffer,	"cgetbuffer",	ex_cbuffer,
+			RANGE|NOTADR|WORD1|TRLBAR),
 EX(CMD_cgetfile,	"cgetfile",	ex_cfile,
 			TRLBAR|FILE1|BANG),
+EX(CMD_cgetexpr,	"cgetexpr",	ex_cexpr,
+			NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG),
 EX(CMD_chdir,		"chdir",	ex_cd,
 			BANG|FILE1|TRLBAR|CMDWIN),
 EX(CMD_changes,		"changes",	ex_changes,
@@ -517,6 +521,10 @@
 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
 EX(CMD_lgetfile,	"lgetfile",	ex_cfile,
 			TRLBAR|FILE1|BANG),
+EX(CMD_lgetbuffer,	"lgetbuffer",	ex_cbuffer,
+			RANGE|NOTADR|WORD1|TRLBAR),
+EX(CMD_lgetexpr,	"lgetexpr",	ex_cexpr,
+			NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG),
 EX(CMD_lgrep,		"lgrep",	ex_make,
 			RANGE|NOTADR|BANG|NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
 EX(CMD_lgrepadd,	"lgrepadd",	ex_make,
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 58cfec8..ec6ee56 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1749,6 +1749,8 @@
 		end_pos = curwin->w_cursor;
 		curwin->w_cursor = save_pos;
 	    }
+	    else
+		end_pos = curwin->w_cursor; /* shutup gcc 4 */
 
 	    validate_cursor();
 
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index f1661b4..35e18c9 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -41,6 +41,10 @@
 # endif
 # include <gnome.h>
 # include "version.h"
+#  ifdef HAVE_GTK2
+/* missing prototype in bonobo-dock-item.h */
+extern void bonobo_dock_item_set_behavior(BonoboDockItem *dock_item, BonoboDockItemBehavior beh);
+#  endif
 #endif
 
 #if !defined(FEAT_GUI_GTK) && defined(PROTO)
@@ -3541,8 +3545,10 @@
 	gnome_app_set_menus(GNOME_APP(gui.mainwin), GTK_MENU_BAR(gui.menubar));
 	dockitem = gnome_app_get_dock_item_by_name(GNOME_APP(gui.mainwin),
 						   GNOME_APP_MENUBAR_NAME);
-	// bonobo_dock_item_set_behavior(dockitem,
-	//				 BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING);
+	/* We don't want the menu to float. */
+	bonobo_dock_item_set_behavior(dockitem,
+		bonobo_dock_item_get_behavior(dockitem)
+				       | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING);
 	gui.menubar_h = GTK_WIDGET(dockitem);
 #  else
 	gui.menubar_h = gnome_dock_item_new("VimMainMenu",
@@ -3600,9 +3606,10 @@
 						   GNOME_APP_TOOLBAR_NAME);
 	gui.toolbar_h = GTK_WIDGET(dockitem);
 	/* When the toolbar is floating it gets stuck.  So long as that isn't
-	 * fixed let's disallow floating.  Also changes it appearance... */
+	 * fixed let's disallow floating. */
 	bonobo_dock_item_set_behavior(dockitem,
-					 BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING);
+		bonobo_dock_item_get_behavior(dockitem)
+				       | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING);
 	gtk_container_set_border_width(GTK_CONTAINER(gui.toolbar), 0);
 #  else
 	GtkWidget *dockitem;
diff --git a/src/option.c b/src/option.c
index 73933b4..ff33e0f 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6053,7 +6053,7 @@
 #if defined(FEAT_GUI_TABLINE)
     /* 'guitablabel' */
     else if (varp == &p_gtl)
-	gui_update_tabline();
+	gui_init_which_components(NULL);
 #endif
 
 #if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
diff --git a/src/quickfix.c b/src/quickfix.c
index 7d4a006..f22c860 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3497,8 +3497,10 @@
 /*
  * ":[range]cbuffer [bufnr]" command.
  * ":[range]caddbuffer [bufnr]" command.
+ * ":[range]cgetbuffer [bufnr]" command.
  * ":[range]lbuffer [bufnr]" command.
  * ":[range]laddbuffer [bufnr]" command.
+ * ":[range]lgetbuffer [bufnr]" command.
  */
     void
 ex_cbuffer(eap)
@@ -3507,7 +3509,8 @@
     buf_T	*buf = NULL;
     qf_info_T	*qi = &ql_info;
 
-    if (eap->cmdidx == CMD_lbuffer || eap->cmdidx == CMD_laddbuffer)
+    if (eap->cmdidx == CMD_lbuffer || eap->cmdidx == CMD_lgetbuffer
+	    || eap->cmdidx == CMD_laddbuffer)
     {
 	qi = ll_get_or_alloc_list(curwin);
 	if (qi == NULL)
@@ -3534,12 +3537,12 @@
 	    EMSG(_(e_invrange));
 	else
 	{
-	    int		buffer_cmd = (eap->cmdidx == CMD_cbuffer
-					       || eap->cmdidx == CMD_lbuffer);
-
-	    if (qf_init_ext(qi, NULL, buf, NULL, p_efm, buffer_cmd,
+	    if (qf_init_ext(qi, NULL, buf, NULL, p_efm,
+			    (eap->cmdidx != CMD_caddbuffer
+			     && eap->cmdidx != CMD_laddbuffer),
 						   eap->line1, eap->line2) > 0
-		    && buffer_cmd)
+		    && (eap->cmdidx == CMD_cbuffer
+			|| eap->cmdidx == CMD_lbuffer))
 		qf_jump(qi, 0, 0, eap->forceit);  /* display first error */
 	}
     }
@@ -3547,8 +3550,8 @@
 
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
- * ":cexpr {expr}" and ":caddexpr {expr}" command.
- * ":lexpr {expr}" and ":laddexpr {expr}" command.
+ * ":cexpr {expr}", ":cgetexpr {expr}", ":caddexpr {expr}" command.
+ * ":lexpr {expr}", ":lgetexpr {expr}", ":laddexpr {expr}" command.
  */
     void
 ex_cexpr(eap)
@@ -3557,7 +3560,8 @@
     typval_T	*tv;
     qf_info_T	*qi = &ql_info;
 
-    if (eap->cmdidx == CMD_lexpr || eap->cmdidx == CMD_laddexpr)
+    if (eap->cmdidx == CMD_lexpr || eap->cmdidx == CMD_lgetexpr
+	    || eap->cmdidx == CMD_laddexpr)
     {
 	qi = ll_get_or_alloc_list(curwin);
 	if (qi == NULL)
@@ -3572,11 +3576,12 @@
 	if ((tv->v_type == VAR_STRING && tv->vval.v_string != NULL)
 		|| (tv->v_type == VAR_LIST && tv->vval.v_list != NULL))
 	{
-	    int	    expr_cmd = (eap->cmdidx == CMD_cexpr
-				|| eap->cmdidx == CMD_lexpr);
-	    if (qf_init_ext(qi, NULL, NULL, tv, p_efm, expr_cmd,
+	    if (qf_init_ext(qi, NULL, NULL, tv, p_efm,
+			    (eap->cmdidx != CMD_caddexpr
+			     && eap->cmdidx != CMD_laddexpr),
 						 (linenr_T)0, (linenr_T)0) > 0
-		    && expr_cmd)
+		    && (eap->cmdidx == CMD_cexpr
+			|| eap->cmdidx == CMD_lexpr))
 		qf_jump(qi, 0, 0, eap->forceit);  /* display first error */
 	}
 	else
diff --git a/src/regexp.c b/src/regexp.c
index dd07ea7..e0bfb03 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -6854,6 +6854,23 @@
 	}
 	if (no < 0)	      /* Ordinary character. */
 	{
+	    if (c == K_SPECIAL && src[0] != NUL && src[1] != NUL)
+	    {
+		/* Copy a specialy key as-is. */
+		if (copy)
+		{
+		    *dst++ = c;
+		    *dst++ = *src++;
+		    *dst++ = *src++;
+		}
+		else
+		{
+		    dst += 3;
+		    src += 2;
+		}
+		continue;
+	    }
+
 	    if (c == '\\' && *src != NUL)
 	    {
 		/* Check for abbreviations -- webb */
@@ -6877,13 +6894,12 @@
 				c = *src++;
 		}
 	    }
-
-	    /* Write to buffer, if copy is set. */
 #ifdef FEAT_MBYTE
-	    if (has_mbyte)
+	    else if (has_mbyte)
 		c = mb_ptr2char(src - 1);
 #endif
 
+	    /* Write to buffer, if copy is set. */
 	    if (func == (fptr_T)NULL)	/* just copy */
 		cc = c;
 	    else
diff --git a/src/screen.c b/src/screen.c
index fbc3fee..0e8b867 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -8791,7 +8791,7 @@
     redraw_tabline = FALSE;
 
 #ifdef FEAT_GUI_TABLINE
-    /* When the GUI has the tabline then this always returns zero. */
+    /* Take care of a GUI tabline. */
     if (gui_use_tabline())
     {
 	gui_update_tabline();
diff --git a/src/undo.c b/src/undo.c
index ed106c1..8d23e77 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -88,7 +88,7 @@
 static int u_savecommon __ARGS((linenr_T, linenr_T, linenr_T));
 static void u_doit __ARGS((int count));
 static void u_undoredo __ARGS((int undo));
-static void u_undo_end __ARGS((int did_undo));
+static void u_undo_end __ARGS((int did_undo, int absolute));
 static void u_add_time __ARGS((char_u *buf, size_t buflen, time_t tt));
 static void u_freeheader __ARGS((buf_T *buf, u_header_T *uhp, u_header_T **uhpp));
 static void u_freebranch __ARGS((buf_T *buf, u_header_T *uhp, u_header_T **uhpp));
@@ -638,7 +638,7 @@
 	    curbuf->b_u_curhead = curbuf->b_u_curhead->uh_prev;
 	}
     }
-    u_undo_end(undo_undoes);
+    u_undo_end(undo_undoes, FALSE);
 }
 
 static int lastmark = 0;
@@ -704,7 +704,7 @@
 	else
 	{
 	    if (sec)
-		closest = time(NULL) - starttime + 1;
+		closest = (long)(time(NULL) - starttime + 1);
 	    else
 		closest = curbuf->b_u_seq_last + 2;
 	    if (target >= closest)
@@ -739,7 +739,7 @@
 	while (uhp != NULL)
 	{
 	    uhp->uh_walk = mark;
-	    val = (dosec ? (uhp->uh_time - starttime) : uhp->uh_seq);
+	    val = (long)(dosec ? (uhp->uh_time - starttime) : uhp->uh_seq);
 
 	    if (round == 1)
 	    {
@@ -788,7 +788,12 @@
 	    else if (uhp->uh_next != NULL && uhp->uh_alt_prev == NULL
 		    && uhp->uh_next->uh_walk != nomark
 		    && uhp->uh_next->uh_walk != mark)
+	    {
+		/* If still at the start we don't go through this change. */
+		if (uhp == curbuf->b_u_curhead)
+		    uhp->uh_walk = nomark;
 		uhp = uhp->uh_next;
+	    }
 
 	    else
 	    {
@@ -880,7 +885,10 @@
 	    /* Stop when going backwards in time and didn't find the exact
 	     * header we were looking for. */
 	    if (uhp->uh_seq == target && above)
+	    {
+		curbuf->b_u_seq_cur = target - 1;
 		break;
+	    }
 
 	    u_undoredo(FALSE);
 
@@ -903,7 +911,7 @@
 	    }
 	}
     }
-    u_undo_end(did_undo);
+    u_undo_end(did_undo, absolute);
 }
 
 /*
@@ -1176,8 +1184,9 @@
  * in some cases, but it's better than nothing).
  */
     static void
-u_undo_end(did_undo)
+u_undo_end(did_undo, absolute)
     int		did_undo;	/* just did an undo */
+    int		absolute;	/* used ":undo N" */
 {
     char	*msg;
     u_header_T	*uhp;
@@ -1215,7 +1224,13 @@
 
     if (curbuf->b_u_curhead != NULL)
     {
-	if (did_undo)
+	/* For ":undo N" we prefer a "after #N" message. */
+	if (absolute && curbuf->b_u_curhead->uh_next != NULL)
+	{
+	    uhp = curbuf->b_u_curhead->uh_next;
+	    did_undo = FALSE;
+	}
+	else if (did_undo)
 	    uhp = curbuf->b_u_curhead;
 	else
 	    uhp = curbuf->b_u_curhead->uh_next;
diff --git a/src/version.h b/src/version.h
index 6ba548b..f3a87f7 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 21)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 21, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 23)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 23, compiled "
