diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 124e617..6fc74bc 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Mar 13, 2006
-" Version:	80
+" Date:		Mar 14, 2006
+" Version:	81
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v80"
+let g:loaded_netrw = "v81"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -2803,21 +2803,7 @@
   let s:last_sort_by= g:netrw_sort_by
 
   " set up ShellCmdPost handling.  Append current buffer to browselist
-  if !exists("s:netrw_browselist")
-   let s:netrw_browselist= []
-  endif
-  if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1])
-   call add(s:netrw_browselist,bufnr("%"))
-"   call Decho("browselist=".string(s:netrw_browselist))
-  endif
-  if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1
-"   call Decho("setting up local-browser shell command refresh")
-   let s:netrw_browser_shellcmd= 1
-   augroup AuNetrwShellCmd
-    au!
-    au ShellCmdPost *	call s:LocalBrowseShellCmdRefresh()
-   augroup END
-  endif
+  call s:LocalFastBrowser()
 
   " get the new directory name
   if has("win32") || has("win95") || has("win64") || has("win16")
@@ -3369,6 +3355,47 @@
 endfun
 
 " ---------------------------------------------------------------------
+" LocalFastBrowser: handles setting up/taking down fast browsing for the {{{2
+"                   local browser
+fun! s:LocalFastBrowser()
+"  call Dfunc("LocalFastBrowser()")
+
+  " initialize browselist, a list of buffer numbers that the local browser has used
+  if !exists("s:netrw_browselist")
+   let s:netrw_browselist= []
+  endif
+
+  " append current buffer to fastbrowse list
+  if g:netrw_fastbrowse <= 1 && (empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1])
+   call add(s:netrw_browselist,bufnr("%"))
+"   call Decho("browselist=".string(s:netrw_browselist))
+  endif
+
+  " enable autocmd events to handle refreshing/removing local browser buffers
+  "    If local browse buffer is currently showing: refresh it
+  "    If local browse buffer is currently hidden : wipe it
+  if !exists("s:netrw_browser_shellcmd") && g:netrw_fastbrowse <= 1
+"   call Decho("setting up local-browser shell command refresh")
+   let s:netrw_browser_shellcmd= 1
+   augroup AuNetrwShellCmd
+    au!
+    au ShellCmdPost,FocusGained *	call s:LocalBrowseShellCmdRefresh()
+   augroup END
+
+  " user must have changed fastbrowse to its fast setting, so remove
+  " the associated autocmd events
+  if g:netrw_fastbrowse > 1 && exists("s:netrw_browser_shellcmd")
+   unlet s:netrw_browser_shellcmd
+   augroup AuNetrwShellCmd
+    au!
+   augroup END
+   augroup! AuNetrwShellCmd
+  endif
+
+"  call Dret("LocalFastBrowser")
+endfun
+
+" ---------------------------------------------------------------------
 " LocalObtain: copy selected file to current working directory {{{2
 fun! s:LocalObtain()
 "  call Dfunc("LocalObtain()")
@@ -3883,6 +3910,7 @@
   let w:cinokeep  = &cino
   let w:comkeep   = &com
   let w:cpokeep   = &cpo
+  let w:hidkeep   = &hidden
   let w:magickeep = &magic
   if !g:netrw_keepdir
    let w:dirkeep  = getcwd()
@@ -3894,7 +3922,7 @@
   setlocal cino =
   setlocal com  =
   setlocal cpo -=aA
-  setlocal nocin noai noci magic nospell fo=nroql2
+  setlocal nocin noai noci magic nospell fo=nroql2 nohid
   setlocal tw   =0
   setlocal report=10000
   if has("win32") && !has("win95")
@@ -3926,6 +3954,7 @@
   if exists("w:dirkeep")  |exe "lcd ".w:dirkeep        |unlet w:dirkeep  |endif
   if exists("w:fokeep")   |let &fo     = w:fokeep      |unlet w:fokeep   |endif
   if exists("w:gdkeep")   |let &gd     = w:gdkeep      |unlet w:gdkeep   |endif
+  if exists("w:hidkeep")  |let &hidden = w:hidkeep     |unlet w:hidkeep  |endif
   if exists("w:magic")    |let &magic  = w:magic       |unlet w:magic    |endif
   if exists("w:repkeep")  |let &report = w:repkeep     |unlet w:repkeep  |endif
   if exists("w:spellkeep")|let &spell  = w:spellkeep   |unlet w:spellkeep|endif
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 6f2a57e..4c19f1d 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 10
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -270,6 +270,7 @@
 
 	Various
 |FileChangedShell|	Vim notices that a file changed since editing started
+|FileChangedShellPost|	After handling a file changed since editing started
 |FileChangedRO|		before making the first change to a read-only file
 
 |ShellCmdPost|		after executing a shell command
@@ -279,6 +280,7 @@
 |SpellFileMissing|	a spell file is used but it can't be found
 |SourcePre|		before sourcing a Vim script
 
+|VimResized|		after the Vim window size changed
 |FocusGained|		Vim got input focus
 |FocusLost|		Vim lost input focus
 |CursorHold|		the user doesn't press a key for a while
@@ -537,6 +539,9 @@
 				commands for the FileChangedShell event no
 				other FileChangedShell event will be
 				triggered.
+							*FileChangedShellPost*
+FileChangedShellPost		After handling a file that was changed outside
+				of Vim.  Can be used to update the statusline.
 							*FileEncoding*
 FileEncoding			Obsolete.  It still works and is equivalent
 				to |EncodingChanged|.
@@ -764,6 +769,10 @@
 				Mostly useful with a "*" pattern. >
 	:autocmd VimLeavePre * call CleanupStuff()
 <				To detect an abnormal exit use |v:dying|.
+							*VimResized*
+VimResized			After the Vim window was resized, thus 'lines'
+				and/or 'columns' changed.  Not when starting
+				up though.
 							*WinEnter*
 WinEnter			After entering another window.  Not done for
 				the first window, when Vim has just started.
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 8a6c7af..577b216 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 14
+*diff.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -51,6 +51,8 @@
 
 	vimdiff -o file1 file2 [file3]
 
+If you always prefer horizontal splits include "horizontal" in 'diffopt'.
+
 In each of the edited files these options are set:
 
 	'diff'		on
@@ -58,7 +60,7 @@
 	'scrollopt'	includes "hor"
 	'wrap'		off
 	'foldmethod'	"diff"
-	'foldcolumn'	2
+	'foldcolumn'	value from 'diffopt', default is 2
 
 These options are set local to the window.  When editing another file they are
 reset to the global value.
@@ -107,7 +109,9 @@
 
 	:vert diffsplit main.c~
 	:vert diffpatch /tmp/diff
-<
+
+If you always prefer a vertical split include "vertical" in 'diffopt'.
+
 							*E96*
 There can be up to four buffers with 'diff' set.
 
@@ -378,8 +382,8 @@
 
 Example (this does the same as 'patchexpr' being empty): >
 
-	let patchexpr=MyPatch()
-	function MyPatch
+	set patchexpr=MyPatch()
+	function MyPatch()
 	   :call system("patch -o " . v:fname_out . " " . v:fname_in .
 	   \  " < " . v:fname_diff)
 	endfunction
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 52ae467..7e10b85 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 12
+*options.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1624,6 +1624,8 @@
 						*'completeopt'* *'cot'*
 'completeopt' 'cot'	string	(default: "menu,preview")
 			global
+			{not available when compiled without the
+			|+insert_expand| feature}
 			{not in Vi}
 	A comma separated list of options for Insert mode completion
 	|ins-completion|.  The supported values are:
@@ -1644,7 +1646,6 @@
 	   preview  Show extra information about the currently selected
 	   	    completion in the preview window.
 
-
 				*'confirm'* *'cf'* *'noconfirm'* *'nocf'*
 'confirm' 'cf'		boolean (default off)
 			global
@@ -2184,11 +2185,20 @@
 				exactly.  It should ignore adding trailing
 				white space, but not leading white space.
 
+		horizontal	Start diff mode with horizontal splits (unless
+				explicitly specified otherwise).
+
+		vertical	Start diff mode with vertical splits (unless
+				explicitly specified otherwise).
+
+		foldcolumn:{n}	Set the 'foldcolumn' option to {n} when
+				starting diff mode.  Without this 2 is used.
+
 	Examples: >
 
 		:set diffopt=filler,context:4
 		:set diffopt=
-		:set diffopt=filler
+		:set diffopt=filler,foldcolumn:3
 <
 				     *'digraph'* *'dg'* *'nodigraph'* *'nodg'*
 'digraph' 'dg'		boolean	(default off)
@@ -5019,6 +5029,17 @@
 			global
 	When on a ":" prompt is used in Ex mode.
 
+						*'pumheight'* *'ph'*
+'pumheight' 'ph'	number	(default 0)
+			global
+			{not available when compiled without the
+			|+insert_expand| feature}
+			{not in Vi}
+	Determines the maximum number of items to show in the popup menu.
+	When zero as much space as available is used.
+	|ins-completion-menu|.
+
+
 						*'quoteescape'* *'qe'*
 'quoteescape' 'qe'	string	(default "\")
 			local to buffer
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 5d054e9..3baed63 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.0.  Last change: Mar 10, 2006
+*pi_netrw.txt*  For Vim version 7.0.  Last change: Mar 14, 2006
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
@@ -1439,6 +1439,13 @@
 ==============================================================================
 11. History						*netrw-history* {{{1
 
+	v81: * FocusGained also used to refresh/wipe local browser directory
+	       buffers
+	     * (bugfix) netrw was leaving [Scratch] buffers behind when the
+	       the user had the "hidden" option set.  The 'hidden' option is
+	       now bypassed.
+	v80: * ShellCmdPost event used in conjunction with g:netrw_fastbrowse
+	       to refresh/wipe local browser directory buffers.
 	v79: * directories are now displayed with nowrap
 	     * (bugfix) if the column width was smaller than the largest
 	       file's name, then netrw would hang when using wide-listing
diff --git a/runtime/doc/tags b/runtime/doc/tags
index d27b911..3b18a5b 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -646,6 +646,7 @@
 'pex'	options.txt	/*'pex'*
 'pexpr'	options.txt	/*'pexpr'*
 'pfn'	options.txt	/*'pfn'*
+'ph'	options.txt	/*'ph'*
 'pheader'	options.txt	/*'pheader'*
 'pi'	options.txt	/*'pi'*
 'pm'	options.txt	/*'pm'*
@@ -665,6 +666,7 @@
 'printoptions'	options.txt	/*'printoptions'*
 'prompt'	options.txt	/*'prompt'*
 'pt'	options.txt	/*'pt'*
+'pumheight'	options.txt	/*'pumheight'*
 'pvh'	options.txt	/*'pvh'*
 'pvw'	options.txt	/*'pvw'*
 'qe'	options.txt	/*'qe'*
@@ -3979,6 +3981,7 @@
 FileAppendPre	autocmd.txt	/*FileAppendPre*
 FileChangedRO	autocmd.txt	/*FileChangedRO*
 FileChangedShell	autocmd.txt	/*FileChangedShell*
+FileChangedShellPost	autocmd.txt	/*FileChangedShellPost*
 FileEncoding	autocmd.txt	/*FileEncoding*
 FileReadCmd	autocmd.txt	/*FileReadCmd*
 FileReadPost	autocmd.txt	/*FileReadPost*
@@ -4181,6 +4184,7 @@
 VimEnter	autocmd.txt	/*VimEnter*
 VimLeave	autocmd.txt	/*VimLeave*
 VimLeavePre	autocmd.txt	/*VimLeavePre*
+VimResized	autocmd.txt	/*VimResized*
 Virtual-Replace-mode	insert.txt	/*Virtual-Replace-mode*
 VisVim	if_ole.txt	/*VisVim*
 Visual	visual.txt	/*Visual*
diff --git a/src/auto/configure b/src/auto/configure
index 27c2d64..13cb226 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -2838,6 +2838,10 @@
   echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
+    if test x$prefix = xNONE; then
+    prefix=/Applications
+  fi
+
   echo "$as_me:$LINENO: checking --disable-darwin argument" >&5
 echo $ECHO_N "checking --disable-darwin argument... $ECHO_C" >&6
   # Check whether --enable-darwin or --disable-darwin was given.
diff --git a/src/configure.in b/src/configure.in
index 60a19ef..1797f69 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -85,6 +85,11 @@
 if test "`(uname) 2>/dev/null`" = Darwin; then
   AC_MSG_RESULT(yes)
 
+  dnl Default install directory is not /usr/local
+  if test x$prefix = xNONE; then
+    prefix=/Applications
+  fi
+
   AC_MSG_CHECKING(--disable-darwin argument)
   AC_ARG_ENABLE(darwin,
 	  [  --disable-darwin        Disable Darwin (Mac OS X) support.],
diff --git a/src/gui_mac.c b/src/gui_mac.c
index c4250a0..d05fddb 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -52,8 +52,8 @@
 static EventHandlerUPP mouseWheelHandlerUPP = NULL;
 SInt32 gMacSystemVersion;
 
-#if defined(FEAT_MBYTE)
-#define USE_CARBONKEYHANDLER
+#ifdef MACOS_CONVERT
+# define USE_CARBONKEYHANDLER
 static EventHandlerUPP keyEventHandlerUPP = NULL;
 #endif
 
@@ -130,7 +130,7 @@
     Boolean isPanelVisible;
 } gFontPanelInfo = { 0, 0, 0, false };
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
 # define USE_ATSUI_DRAWING
 ATSUStyle   gFontStyle;
 Boolean	    gIsFontFallbackSet;
@@ -419,7 +419,7 @@
     return pixels;
 }
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
 /*
  * Deletes all traces of any Windows-style mnemonic text (including any
  * parentheses) from a menu item and returns the cleaned menu item title.
@@ -4437,7 +4437,7 @@
 #endif
 	tempclip[scrapSize] = 0;
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
 	/* Convert from utf-16 (clipboard) */
 	size_t encLen = 0;
 	char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen);
@@ -4510,7 +4510,7 @@
 
     type = clip_convert_selection(&str, (long_u *) &scrapSize, cbd);
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     size_t utf16_len = 0;
     UniChar *to = mac_enc_to_utf16(str, scrapSize, &utf16_len);
     if (to)
@@ -4628,7 +4628,7 @@
 	menu_after_me = hierMenu;
 
     /* Convert the name */
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     name = menu_title_removing_mnemonic(menu);
 #else
     name = C2Pascal_save(menu->dname);
@@ -4721,7 +4721,7 @@
        for older OS call GetMenuItemData (menu, item, isCommandID?, data) */
 
     /* Convert the name */
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     name = menu_title_removing_mnemonic(menu);
 #else
     name = C2Pascal_save(menu->dname);
@@ -5745,7 +5745,7 @@
     /* TODO: Get vim to make sure maxlen (from p_titlelen) is smaller
      *       that 256. Even better get it to fit nicely in the titlebar.
      */
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     CFStringRef windowTitle;
     size_t	windowTitleLen;
 #else
@@ -5755,7 +5755,7 @@
     if (title == NULL)		/* nothing to do */
 	return;
 
-#if defined(FEAT_MBYTE)
+#ifdef MACOS_CONVERT
     windowTitleLen = STRLEN(title);
     windowTitle  = mac_enc_to_cfstring(title, windowTitleLen);
 
diff --git a/src/misc2.c b/src/misc2.c
index 44b0517..dece0d9 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -964,8 +964,10 @@
 
 #ifdef FEAT_WINDOWS
     /* close all tabs and windows */
-    do_cmdline_cmd((char_u *)"tabonly!");
-    do_cmdline_cmd((char_u *)"only!");
+    if (first_tabpage->tp_next != NULL)
+	do_cmdline_cmd((char_u *)"tabonly!");
+    if (firstwin != lastwin)
+	do_cmdline_cmd((char_u *)"only!");
 #endif
 
 # if defined(FEAT_SPELL)
@@ -1077,6 +1079,10 @@
 
     reset_last_sourcing();
 
+#ifdef FEAT_WINDOWS
+    vim_free(first_tabpage);
+#endif
+
 # ifdef UNIX
     /* Machine-specific free. */
     mch_free_mem();
diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c
index fbce577..9f19a80 100644
--- a/src/os_mac_conv.c
+++ b/src/os_mac_conv.c
@@ -16,7 +16,14 @@
 #define NO_X11_INCLUDES
 #include "vim.h"
 
-#ifdef FEAT_MBYTE
+#if defined(MACOS_CONVERT) || defined(PROTO)
+# ifdef PROTO
+/* A few dummy types to be able to generate function prototypes. */
+typedef int UniChar;
+typedef int *TECObjectRef;
+typedef int CFStringRef;
+# endif
+
 static char_u	    *mac_utf16_to_utf8 __ARGS((UniChar *from, size_t fromLen, size_t *actualLen));
 static UniChar	    *mac_utf8_to_utf16 __ARGS((char_u *from, size_t fromLen, size_t *actualLen));
 
@@ -477,7 +484,7 @@
 /*
  * Converts from UTF-16 UniChars to precomposed UTF-8
  */
-    char_u *
+    static char_u *
 mac_utf16_to_utf8(from, fromLen, actualLen)
     UniChar *from;
     size_t fromLen;
@@ -517,7 +524,7 @@
 /*
  * Converts from UTF-8 to UTF-16 UniChars
  */
-    UniChar *
+    static UniChar *
 mac_utf8_to_utf16(from, fromLen, actualLen)
     char_u *from;
     size_t fromLen;
@@ -548,4 +555,4 @@
 
     return result;
 }
-#endif /* FEAT_MBYTE */
+#endif /* MACOS_CONVERT */
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 5126e86..ca3547c 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -87,11 +87,13 @@
 	pum_height = size;
     else
 	pum_height = PUM_DEF_HEIGHT;
+    if (p_ph > 0 && pum_height > p_ph)
+	pum_height = p_ph;
 
     /* Put the pum below "row" if possible.  If there are few lines decide on
      * where there is more room. */
-    if (row >= cmdline_row - top_clear - pum_height
-	    && row > (cmdline_row - top_clear - height) / 2)
+    if (row >= cmdline_row - pum_height
+			      && row > (cmdline_row - top_clear - height) / 2)
     {
 	/* pum above "row" */
 	if (row >= size)
@@ -104,6 +106,11 @@
 	    pum_row = 0;
 	    pum_height = row;
 	}
+	if (p_ph > 0 && pum_height > p_ph)
+	{
+	    pum_row += pum_height - p_ph;
+	    pum_height = p_ph;
+	}
     }
     else
     {
@@ -113,6 +120,8 @@
 	    pum_height = cmdline_row - pum_row;
 	else
 	    pum_height = size;
+	if (p_ph > 0 && pum_height > p_ph)
+	    pum_height = p_ph;
     }
 
     /* don't display when we only have room for one line */
@@ -214,7 +223,7 @@
     int		i;
     int		idx;
     char_u	*s;
-    char_u	*p;
+    char_u	*p = NULL;
     int		totwidth, width, w;
     int		thumb_pos = 0;
     int		thumb_heigth = 1;
@@ -330,6 +339,7 @@
     int	    n;
 {
     int	    resized = FALSE;
+    int	    context = pum_height / 2;
 
     pum_selected = n;
 
@@ -364,20 +374,22 @@
 		pum_first = pum_selected - pum_height + 1;
 	}
 
-	if (pum_height > 6)
+	/* Give a few lines of context when possible. */
+	if (context > 3)
+	    context = 3;
+	if (pum_height > 2)
 	{
-	    /* Give three lines of context when possible. */
-	    if (pum_first > pum_selected - 3)
+	    if (pum_first > pum_selected - context)
 	    {
 		/* scroll down */
-		pum_first = pum_selected - 3;
+		pum_first = pum_selected - context;
 		if (pum_first < 0)
 		    pum_first = 0;
 	    }
-	    else if (pum_first < pum_selected + 3 - pum_height + 1)
+	    else if (pum_first < pum_selected + context - pum_height + 1)
 	    {
 		/* scroll up */
-		pum_first = pum_selected + 3 - pum_height + 1;
+		pum_first = pum_selected + context - pum_height + 1;
 	    }
 	}
 
@@ -479,6 +491,12 @@
 
 			if (win_valid(curwin_save))
 			    win_enter(curwin_save, TRUE);
+
+			/* May need to update the screen again when there are
+			 * autocommands involved. */
+			pum_do_redraw = TRUE;
+			update_screen(0);
+			pum_do_redraw = FALSE;
 		    }
 		}
 	    }
diff --git a/src/screen.c b/src/screen.c
index 64c2bb5..6de791d 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -7305,6 +7305,11 @@
 #endif
 
     entered = FALSE;
+
+#ifdef FEAT_AUTOCMD
+    if (starting == 0)
+	apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+#endif
 }
 
     void
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index 62e3ded..3bbd964 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -24,7 +24,8 @@
 		test38.out test39.out test40.out test41.out test42.out \
 		test43.out test44.out test45.out test46.out test47.out \
 		test48.out test51.out test53.out test54.out test55.out \
-		test56.out test57.out test58.out test59.out test60.out
+		test56.out test57.out test58.out test59.out test60.out \
+		test61.out
 
 .SUFFIXES: .in .out
 
@@ -104,3 +105,4 @@
 test58.out: test58.in
 test59.out: test59.in
 test60.out: test60.in
+test61.out: test61.in
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index cbab6cd..66c9f9f 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -19,7 +19,7 @@
 		test44.out test45.out test46.out test47.out \
 		test48.out test51.out test53.out test54.out \
 		test55.out test56.out test57.out test58.out test59.out \
-		test60.out
+		test60.out test61.out
 
 SCRIPTS =	test3.out test4.out test5.out test6.out test7.out \
 		test8.out test9.out test11.out test13.out test14.out \
diff --git a/src/undo.c b/src/undo.c
index 88f11a3..27f04b9 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -295,6 +295,8 @@
 	    if (uhp == NULL)
 		goto nomem;
 	}
+	else
+	    uhp = NULL;
 
 	/*
 	 * If we undid more than we redid, move the entry lists before and
@@ -326,7 +328,7 @@
 	    }
 	}
 
-	if (p_ul < 0)		/* no undo at all */
+	if (uhp == NULL)		/* no undo at all */
 	{
 	    if (old_curhead != NULL)
 		u_freebranch(curbuf, old_curhead, NULL);
@@ -655,6 +657,10 @@
     int		    dosec = sec;
     int		    above = FALSE;
 
+    /* First make sure the current undoable change is synced. */
+    if (curbuf->b_u_synced == FALSE)
+	u_sync();
+
     u_newcount = 0;
     u_oldcount = 0;
     if (curbuf->b_ml.ml_flags & ML_EMPTY)
diff --git a/src/version.h b/src/version.h
index d239d8a..774222d 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 14)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 14, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 15)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 15, compiled "
