diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index 85fc1d7..244fd24 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 25
+*tabpage.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -284,19 +284,20 @@
 See the 'statusline' option for the format of the value.
 
 The "%N" item can be used for the current tab page number.  The |v:lnum|
-variable is also set to this number.
+variable is also set to this number when 'guitablabel' is evaluated.
+The items that use a file name refer to the current window of the tab page.
 
 Note that syntax highlighting is not used for 'guitablabel'.  The %T and %X
-are also ignored.
+items are also ignored.
 
-A simple example that puts the tab page number and the buffer name in the label: >
-
+A simple example that puts the tab page number and the buffer name in the
+label: >
 	:set guitablabel=%N\ %f
 
 An example that resembles the default: Show the number of windows in the tab
 page and a '+' if there is a modifed buffer: >
 
-	function! GuiTabLabel()
+	function GuiTabLabel()
 	  let label = ''
 	  let bufnrlist = tabpagebuflist(v:lnum)
 
@@ -320,7 +321,11 @@
 	  " Append the buffer name
 	  return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
 	endfunction
+
 	set guitablabel=%{GuiTabLabel()}
-<
+
+Note that the function must be defined before setting the option, otherwise
+you get an error message for the function not being known.
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 74998d9..743cc77 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2509,6 +2509,7 @@
 	    case CMD_snomagic:
 	    case CMD_substitute:
 	    case CMD_syntax:
+	    case CMD_tab:
 	    case CMD_tcl:
 	    case CMD_throw:
 	    case CMD_tilde:
@@ -2963,6 +2964,7 @@
 	{"rightbelow", 6},
 	{"sandbox", 3},
 	{"silent", 3},
+	{"tab", 3},
 	{"topleft", 2},
 	{"verbose", 4},
 	{"vertical", 4},
@@ -3353,6 +3355,7 @@
 	case CMD_rightbelow:
 	case CMD_sandbox:
 	case CMD_silent:
+	case CMD_tab:
 	case CMD_topleft:
 	case CMD_verbose:
 	case CMD_vertical:
@@ -3880,7 +3883,8 @@
 			    if (searchit(curwin, curbuf, &pos,
 					*cmd == '?' ? BACKWARD : FORWARD,
 					(char_u *)"", 1L,
-					SEARCH_MSG + SEARCH_START, i) != FAIL)
+					SEARCH_MSG + SEARCH_START,
+						      i, (linenr_T)0) != FAIL)
 				lnum = pos.lnum;
 			    else
 			    {
diff --git a/src/main.aap b/src/main.aap
index d2c7d37..1a36545 100644
--- a/src/main.aap
+++ b/src/main.aap
@@ -73,6 +73,11 @@
 # Include the recipe that autoconf generated.
 :include auto/config.aap
 
+# Unfortunately "-M" doesn't work when building for two architectures.  Switch
+# back to PPC only.
+@if string.find(_no.CPPFLAGS, "-arch i386 -arch ppc") >= 0:
+    CPPFLAGS = `string.replace(_no.CPPFLAGS, "-arch i386 -arch ppc", "-arch ppc")`
+
 # A "PREFIX=dir" argument overrules the value of $prefix
 @if _no.get("PREFIX"):
     prefix = $PREFIX
diff --git a/src/mark.c b/src/mark.c
index 193d768..98550b3 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -345,8 +345,8 @@
 #ifdef FEAT_VISUAL
     else if (c == '<' || c == '>')	/* start/end of visual area */
     {
-	startp = &curbuf->b_visual_start;
-	endp = &curbuf->b_visual_end;
+	startp = &curbuf->b_visual.vi_start;
+	endp = &curbuf->b_visual.vi_end;
 	if ((c == '<') == lt(*startp, *endp))
 	    posp = startp;
 	else
@@ -354,7 +354,7 @@
 	/*
 	 * For Visual line mode, set mark at begin or end of line
 	 */
-	if (curbuf->b_visual_mode == 'V')
+	if (curbuf->b_visual.vi_mode == 'V')
 	{
 	    pos_copy = *posp;
 	    posp = &pos_copy;
@@ -679,8 +679,8 @@
     show_one_mark('^', arg, &curbuf->b_last_insert, NULL, TRUE);
     show_one_mark('.', arg, &curbuf->b_last_change, NULL, TRUE);
 #ifdef FEAT_VISUAL
-    show_one_mark('<', arg, &curbuf->b_visual_start, NULL, TRUE);
-    show_one_mark('>', arg, &curbuf->b_visual_end, NULL, TRUE);
+    show_one_mark('<', arg, &curbuf->b_visual.vi_start, NULL, TRUE);
+    show_one_mark('>', arg, &curbuf->b_visual.vi_end, NULL, TRUE);
 #endif
     show_one_mark(-1, arg, NULL, NULL, FALSE);
 }
@@ -814,8 +814,8 @@
 		    case '[': curbuf->b_op_start.lnum    = 0; break;
 		    case ']': curbuf->b_op_end.lnum      = 0; break;
 #ifdef FEAT_VISUAL
-		    case '<': curbuf->b_visual_start.lnum = 0; break;
-		    case '>': curbuf->b_visual_end.lnum   = 0; break;
+		    case '<': curbuf->b_visual.vi_start.lnum = 0; break;
+		    case '>': curbuf->b_visual.vi_end.lnum   = 0; break;
 #endif
 		    case ' ': break;
 		    default:  EMSG2(_(e_invarg2), p);
@@ -998,8 +998,8 @@
 
 #ifdef FEAT_VISUAL
 	/* Visual area */
-	one_adjust_nodel(&(curbuf->b_visual_start.lnum));
-	one_adjust_nodel(&(curbuf->b_visual_end.lnum));
+	one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
+	one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
 #endif
 
 #ifdef FEAT_QUICKFIX
@@ -1173,8 +1173,8 @@
 
 #ifdef FEAT_VISUAL
     /* Visual area */
-    col_adjust(&(curbuf->b_visual_start));
-    col_adjust(&(curbuf->b_visual_end));
+    col_adjust(&(curbuf->b_visual.vi_start));
+    col_adjust(&(curbuf->b_visual.vi_end));
 #endif
 
     /* previous context mark */
diff --git a/src/normal.c b/src/normal.c
index 405f558..b603184 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -1474,13 +1474,13 @@
 	else if (VIsual_active)
 	{
 	    /* Save the current VIsual area for '< and '> marks, and "gv" */
-	    curbuf->b_visual_start = VIsual;
-	    curbuf->b_visual_end = curwin->w_cursor;
-	    curbuf->b_visual_mode = VIsual_mode;
+	    curbuf->b_visual.vi_start = VIsual;
+	    curbuf->b_visual.vi_end = curwin->w_cursor;
+	    curbuf->b_visual.vi_mode = VIsual_mode;
+	    curbuf->b_visual.vi_curswant = curwin->w_curswant;
 # ifdef FEAT_EVAL
 	    curbuf->b_visual_mode_eval = VIsual_mode;
 # endif
-	    curbuf->b_visual_curswant = curwin->w_curswant;
 
 	    /* In Select mode, a linewise selection is operated upon like a
 	     * characterwise selection. */
@@ -2126,7 +2126,7 @@
  * Handle the "g@" operator: call 'operatorfunc'.
  */
 /*ARGSUSED*/
-    void
+    static void
 op_function(oap)
     oparg_T	*oap;
 {
@@ -3176,13 +3176,13 @@
 #endif
 
     /* Save the current VIsual area for '< and '> marks, and "gv" */
-    curbuf->b_visual_mode = VIsual_mode;
+    curbuf->b_visual.vi_mode = VIsual_mode;
+    curbuf->b_visual.vi_start = VIsual;
+    curbuf->b_visual.vi_end = curwin->w_cursor;
+    curbuf->b_visual.vi_curswant = curwin->w_curswant;
 #ifdef FEAT_EVAL
     curbuf->b_visual_mode_eval = VIsual_mode;
 #endif
-    curbuf->b_visual_start = VIsual;
-    curbuf->b_visual_end = curwin->w_cursor;
-    curbuf->b_visual_curswant = curwin->w_curswant;
 #ifdef FEAT_VIRTUALEDIT
     if (!virtual_active())
 	curwin->w_cursor.coladd = 0;
@@ -4150,7 +4150,7 @@
     for (;;)
     {
 	t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD,
-					       pat, 1L, searchflags, RE_LAST);
+				  pat, 1L, searchflags, RE_LAST, (linenr_T)0);
 	if (curwin->w_cursor.lnum >= old_pos.lnum)
 	    t = FAIL;	/* match after start is failure too */
 
@@ -4985,7 +4985,7 @@
 }
 #endif
 
-#ifdef FEAT_GUI_TABLINE
+#if defined(FEAT_GUI_TABLINE) || defined(PROTO)
 /*
  * Click in GUI tab.
  */
@@ -5011,6 +5011,16 @@
 	clearopbeep(cap->oap);
 
     /* Even if an operator was pending, we still want to jump tabs. */
+    handle_tabmenu();
+}
+
+/*
+ * Handle selecting an item of the GUI tab line menu.
+ * Used in Normal and Insert mode.
+ */
+    void
+handle_tabmenu()
+{
     switch (current_tabmenu)
     {
 	case TABLINE_MENU_CLOSE:
@@ -7475,9 +7485,9 @@
 	if (checkclearop(oap))
 	    break;
 
-	if (	   curbuf->b_visual_start.lnum == 0
-		|| curbuf->b_visual_start.lnum > curbuf->b_ml.ml_line_count
-		|| curbuf->b_visual_end.lnum == 0)
+	if (	   curbuf->b_visual.vi_start.lnum == 0
+		|| curbuf->b_visual.vi_start.lnum > curbuf->b_ml.ml_line_count
+		|| curbuf->b_visual.vi_end.lnum == 0)
 	    beep_flush();
 	else
 	{
@@ -7485,26 +7495,26 @@
 	    if (VIsual_active)
 	    {
 		i = VIsual_mode;
-		VIsual_mode = curbuf->b_visual_mode;
-		curbuf->b_visual_mode = i;
+		VIsual_mode = curbuf->b_visual.vi_mode;
+		curbuf->b_visual.vi_mode = i;
 # ifdef FEAT_EVAL
 		curbuf->b_visual_mode_eval = i;
 # endif
 		i = curwin->w_curswant;
-		curwin->w_curswant = curbuf->b_visual_curswant;
-		curbuf->b_visual_curswant = i;
+		curwin->w_curswant = curbuf->b_visual.vi_curswant;
+		curbuf->b_visual.vi_curswant = i;
 
-		tpos = curbuf->b_visual_end;
-		curbuf->b_visual_end = curwin->w_cursor;
-		curwin->w_cursor = curbuf->b_visual_start;
-		curbuf->b_visual_start = VIsual;
+		tpos = curbuf->b_visual.vi_end;
+		curbuf->b_visual.vi_end = curwin->w_cursor;
+		curwin->w_cursor = curbuf->b_visual.vi_start;
+		curbuf->b_visual.vi_start = VIsual;
 	    }
 	    else
 	    {
-		VIsual_mode = curbuf->b_visual_mode;
-		curwin->w_curswant = curbuf->b_visual_curswant;
-		tpos = curbuf->b_visual_end;
-		curwin->w_cursor = curbuf->b_visual_start;
+		VIsual_mode = curbuf->b_visual.vi_mode;
+		curwin->w_curswant = curbuf->b_visual.vi_curswant;
+		tpos = curbuf->b_visual.vi_end;
+		curwin->w_cursor = curbuf->b_visual.vi_start;
 	    }
 
 	    VIsual_active = TRUE;
@@ -8941,8 +8951,8 @@
 	 * be the most useful, since the original text was removed. */
 	if (was_visual)
 	{
-	    curbuf->b_visual_start = curbuf->b_op_start;
-	    curbuf->b_visual_end = curbuf->b_op_end;
+	    curbuf->b_visual.vi_start = curbuf->b_op_start;
+	    curbuf->b_visual.vi_end = curbuf->b_op_end;
 	}
 
 	/* When all lines were selected and deleted do_put() leaves an empty
diff --git a/src/spell.c b/src/spell.c
index 8c82a7e..ab9bf31 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -988,6 +988,11 @@
      * then, skipping over the character. */
     if (*ptr <= ' ')
 	return 1;
+
+    /* Return here when loading language files failed. */
+    if (wp->w_buffer->b_langp.ga_len == 0)
+	return 1;
+
     vim_memset(&mi, 0, sizeof(matchinf_T));
 
     /* A number is always OK.  Also skip hexadecimal numbers 0xFF99 and
@@ -1942,7 +1947,8 @@
 no_spell_checking(wp)
     win_T	*wp;
 {
-    if (!wp->w_p_spell || *wp->w_buffer->b_p_spl == NUL)
+    if (!wp->w_p_spell || *wp->w_buffer->b_p_spl == NUL
+					 || wp->w_buffer->b_langp.ga_len == 0)
     {
 	EMSG(_("E756: Spell checking is not enabled"));
 	return TRUE;
diff --git a/src/vim.h b/src/vim.h
index 2a4a8cf..2333e64 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1465,6 +1465,24 @@
  */
 #define vim_iswhite(x)	((x) == ' ' || (x) == '\t')
 
+/*
+ * EXTERN is only defined in main.c.  That's where global variables are
+ * actually defined and initialized.
+ */
+#ifndef EXTERN
+# define EXTERN extern
+# define INIT(x)
+#else
+# ifndef INIT
+#  define INIT(x) x
+#  define DO_INIT
+# endif
+#endif
+
+/* Include option.h before structs.h, because the number of window-local and
+ * buffer-local options is used there. */
+#include "option.h"	    /* options and default values */
+
 /* Note that gui.h is included by structs.h */
 
 #include "structs.h"	    /* file that defines many structures */
@@ -1663,20 +1681,6 @@
 # define stat(a,b) (access(a,0) ? -1 : stat(a,b))
 #endif
 
-/*
- * EXTERN is only defined in main.c.  That's where global variables are
- * actually defined and initialized.
- */
-#ifndef EXTERN
-# define EXTERN extern
-# define INIT(x)
-#else
-# ifndef INIT
-#  define INIT(x) x
-#  define DO_INIT
-# endif
-#endif
-
 #ifdef FEAT_PROFILE
 # ifdef WIN3264
 typedef LARGE_INTEGER proftime_T;
@@ -1687,7 +1691,6 @@
 typedef int proftime_T;	    /* dummy for function prototypes */
 #endif
 
-#include "option.h"	    /* option variables and defines */
 #include "ex_cmds.h"	    /* Ex command defines */
 #include "proto.h"	    /* function prototypes */
 
diff --git a/src/window.c b/src/window.c
index 0c0fb30..fa0cc90 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3323,7 +3323,7 @@
 
 #ifdef FEAT_GUI_TABLINE
     if (gui_use_tabline())
-	gui_mch_set_curtab(tabpage_index(tp));
+	gui_mch_set_curtab(tabpage_index(curtab));
 #endif
 }
 
