changeset 697:f08390485cd3 v7.0210

updated for version 7.0210
author vimboss
date Wed, 01 Mar 2006 00:01:28 +0000
parents f0a9ef4db025
children e402b0af6083
files runtime/doc/eval.txt runtime/doc/options.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/undo.txt runtime/doc/usr_31.txt runtime/doc/version7.txt src/Makefile src/auto/configure src/configure.in src/edit.c src/eval.c src/ex_cmds.h src/proto/os_win32.pro src/syntax.c src/testdir/test49.vim src/undo.c src/version.h
diffstat 18 files changed, 204 insertions(+), 117 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 27
+*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3375,11 +3375,11 @@ match({expr}, {pat}[, {start}[, {count}]
 		{start} bytes later, thus "^" will match there.
 		For a String, if {start} < 0, it will be set to 0.  For a list
 		the index is counted from the end.
-		If {start} is out of range (> strlen({expr} for a String or
-		> len({expr} for a |List|) -1 is returned.
+		If {start} is out of range ({start} > strlen({expr}) for a
+		String or {start} > len({expr}) for a |List|) -1 is returned.
 
 		When {count} is given use the {count}'th match.  When a match
-		is found in a String the search for the next one starts on
+		is found in a String the search for the next one starts one
 		character further.  Thus this example results in 1: >
 			echo match("testing", "..", 0, 2)
 <		In a |List| the search continues in the next item.
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 27
+*options.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3252,7 +3252,7 @@ A jump table for the options with a shor
 	  'c'	Use console dialogs instead of popup dialogs for simple
 		choices.
 
-	  'e'	Add tab pages when indicated with 'showtabpages'.
+	  'e'	Add tab pages when indicated with 'showtabline'.
 		'guitablabel' can be used to change the text in the labels.
 		When 'e' is missing a non-GUI tab pages line may be used.
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2710,6 +2710,8 @@ 90.5	usr_90.txt	/*90.5*
 :una	map.txt	/*:una*
 :unabbreviate	map.txt	/*:unabbreviate*
 :undo	undo.txt	/*:undo*
+:undoj	undo.txt	/*:undoj*
+:undojoin	undo.txt	/*:undojoin*
 :unh	windows.txt	/*:unh*
 :unhide	windows.txt	/*:unhide*
 :unl	eval.txt	/*:unl*
@@ -5471,6 +5473,7 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -7132,6 +7135,7 @@ uganda.txt	uganda.txt	/*uganda.txt*
 undercurl	syntax.txt	/*undercurl*
 underline	syntax.txt	/*underline*
 undo	undo.txt	/*undo*
+undo-blocks	undo.txt	/*undo-blocks*
 undo-commands	undo.txt	/*undo-commands*
 undo-redo	undo.txt	/*undo-redo*
 undo-remarks	undo.txt	/*undo-remarks*
--- 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 27
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,19 +30,15 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-test 49 fails because of the function line numbering now taking care of
-continuation lines.
+Gcc 4 gives more warnings for uninitialized vars.
+
+Ignore "j" at hit-enter prompt?  "k" already works differently.
 
 Crash with X command server (Ciaran McCreesh).
 
 Ctags still hasn't included the patch.  Darren is looking for someone to do
 maintanance.
 
-"fsutil hardlink" can create a hard link on an NTFS file system. (Daniel
-Einspanjer)  What library function can detect that?
-Win32: use GetFileInformationByHandle() to detect hard links on NTFS?
-(George Reilly)
-
 spelling:
 - Also use the spelling dictionary for dictionary completion.
   When 'dictionary' is empty and/or when "kspell" is in 'complete'.
@@ -89,9 +85,6 @@ 8   Alternate Dutch word list at www.ned
 Is it possible to keep the command-line window open?  Would actually work like
 closing it, executing the command and re-opening it (at the same position).
 
-":keepundo": add change to existing undo chain, so that one "u" undoes them
-all. (Gautam Iyer)
-
 Mac unicode patch (Da Woon Jung):
 - configuration option for platform: i386, ppc or both.
     Use __LITTLE_ENDIAN__ to test for current platform.
@@ -249,7 +242,7 @@ Omni completion:
     to avoid a performance penalty (esp. for string options)?
 8   Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
     Add the 'maxcombining' option to set the nr. of composing characters.
-    At the same time support more colors (use two bytes when necessary).
+    At the same time support 32 bit Unicode characters?
 8   "ga" should show all composing characters, also if there are more than 2.
 8   Searching for a composing character by itself should work.  Perhaps "."
     with a composing char should work too.
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -1,4 +1,4 @@
-*undo.txt*      For Vim version 7.0aa.  Last change: 2003 Oct 21
+*undo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -10,7 +10,8 @@ The basics are explained in section |02.
 
 1. Undo and redo commands	|undo-commands|
 2. Two ways of undo		|undo-two-ways|
-3. Remarks about undo		|undo-remarks|
+3. Undo blocks			|undo-blocks|
+4. Remarks about undo		|undo-remarks|
 
 ==============================================================================
 1. Undo and redo commands				*undo-commands*
@@ -72,7 +73,36 @@ Rationale:  Nvi uses the "." command ins
 	    words, in Nvi it does nothing.
 
 ==============================================================================
-3. Remarks about undo					*undo-remarks*
+3. Undo blocks						*undo-blocks*
+
+One undo command normally undoes a typed command, no matter how many changes
+that command makes.  This sequence of undo-able changes forms an undo block.
+Thus if the typed key(s) call a function, all the commands in the function are
+undone together.
+
+If you want to write a function or script that doesn't create a new undoable
+change but joins in with the previous change use this command:
+
+							*:undoj* *:undojoin*
+:undoj[oin]		Join further changes with the previous undo block.
+			Warning: Use with care, it may prevent the user from
+			properly undoing changes.
+			{not in Vi}
+
+This is most useful when you need to prompt the user halfway a change.  For
+example in a function that calls |getchar()|.  Do make sure that there was a
+related change before this that you must join with.
+
+This doesn't work by itself, because the next key press will start a new
+change again.  But you can do something like this: >
+
+	:undojoin | delete
+
+After this an "u" command will undo the delete command and the previous
+change.
+
+==============================================================================
+4. Remarks about undo					*undo-remarks*
 
 The number of changes that are remembered is set with the 'undolevels' option.
 If it is zero, the Vi-compatible way is always used.  If it is negative no
--- a/runtime/doc/usr_31.txt
+++ b/runtime/doc/usr_31.txt
@@ -1,4 +1,4 @@
-*usr_31.txt*	For Vim version 7.0aa.  Last change: 2003 Oct 21
+*usr_31.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -76,7 +76,7 @@ Will start the browser in "/usr".
 
 When you are not using the GUI version, you could use the file explorer window
 to select files like in a file browser.  However, this doesn't work for the
-":browse" command.  See |file-explorer|.
+":browse" command.  See |netrw-browse|.
 
 ==============================================================================
 *31.2*	Confirmation
--- 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 27
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -132,6 +132,12 @@ compatibility problems and because "SS" 
 that could be the function argument without type.  Now it finds the position
 where the type is given.
 
+The line continuation in functions was not taken into account, line numbers in
+errors were logical lines, not lines in the sourced file.  That made it
+difficult to locate errors.  Now the line number in the sourced file is
+reported, relative to the function start.  This also means that line numbers
+for ":breakadd func" are different.
+
 ==============================================================================
 NEW FEATURES						*new-7*
 
@@ -510,6 +516,8 @@ Win32: The ":winpos" command now also wo
 |:lcscope|		Like |:cscope| but use the location list.
 |:ltag|			Jump to a tag and add matching tags to a location list.
 
+|:undojoin|		Join a change with the previous undo block.
+
 
 Ex command modifiers: ~
 
@@ -836,6 +844,10 @@ list.
 Win32: When libintl.dll supports bind_textdomain_codeset(), use it.
 (NAKADAIRA Yukihiro)
 
+Win32: Vim was not aware of hard links on NTFS file systems.  These are
+detected now for when 'backupcopy' is "auto".  Also fixed a bogus "file has
+been changed since reading it" error for links.
+
 When foldtext() finds no text after removing the comment leader, use the
 second line of the fold.  Helps for C-style /* */ comments where the first
 line is just "/*".
@@ -1787,8 +1799,8 @@ GUI: The "Replace All" button didn't han
 the same way as "Replace".  Escape backslashes so that they are taken
 literally.
 
-An error in a function reported a line number that doesn't take line
-continuation into account.  Now store a NULL for continuation lines, so that
-the index is equal to the line number in the sourced file.
+When using Select mode from Insert mode and typing a key, causing lines to be
+deleted and a message displayed, delayed the effect of inserting the key.
+Now overwrite the message without delay.
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/src/Makefile
+++ b/src/Makefile
@@ -1270,6 +1270,10 @@ POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAG
 
 ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
 
+# Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
+# with "-E".
+OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
+
 LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) -Dinline= -D__extension__= -Dalloca=alloca
 
 LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
@@ -2219,7 +2223,7 @@ auto/if_perl.c: if_perl.xs
 	    $(PERLLIB)/ExtUtils/typemap if_perl.xs >> $@
 
 auto/osdef.h: auto/config.h osdef.sh osdef1.h.in osdef2.h.in
-	CC="$(CC) $(ALL_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh
+	CC="$(CC) $(OSDEF_CFLAGS)" srcdir=$(srcdir) sh $(srcdir)/osdef.sh
 
 QUOTESED = sed -e 's/"/\\"/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
 auto/pathdef.c: Makefile auto/config.mk
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -2783,7 +2783,7 @@ fi
 if test "$GCC" = yes; then
   gccversion=`"$CC" --version | sed -e '2,$d;s/^[^0-9]*\(darwin.[^0-9]*\)*\([0-9]\.[0-9.]*\).*$/\2/g'`
     if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
-    echo 'GCC 34.0.12 has a bug in the optimizer, disabling "-O#"'
+    echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"'
     CFLAGS=`echo "$CFLAGS" | sed 's/-O[23456789]/-O/'`
   else
     if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
@@ -2874,17 +2874,17 @@ if test "${with_mac_arch+set}" = set; th
   MACARCH="$withval"; echo "$as_me:$LINENO: result: $MACARCH" >&5
 echo "${ECHO_T}$MACARCH" >&6
 else
-  MACARCH="both"; echo "$as_me:$LINENO: result: Defaulting to $MACARCH" >&5
-echo "${ECHO_T}Defaulting to $MACARCH" >&6
+  MACARCH="both"; echo "$as_me:$LINENO: result: defaulting to $MACARCH" >&5
+echo "${ECHO_T}defaulting to $MACARCH" >&6
 fi;
 
   if test "x$MACARCH" = "xboth"; then
-    echo "$as_me:$LINENO: checking if both architectures are supported" >&5
-echo $ECHO_N "checking if both architectures are supported... $ECHO_C" >&6
-    save_cppflags="$CPPFLAGS"
+    echo "$as_me:$LINENO: checking for 10.4 universal SDK" >&5
+echo $ECHO_N "checking for 10.4 universal SDK... $ECHO_C" >&6
+                            save_cppflags="$CPPFLAGS"
+    save_cflags="$CFLAGS"
     save_ldflags="$LDFLAGS"
-    CPPFLAGS="$CPPFLAGS -arch i386 -arch ppc"
-    LDFLAGS="$LDFLAGS -arch i386 -arch ppc"
+    CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
     cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -2922,19 +2922,20 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-	    echo "$as_me:$LINENO: checking if Intel architecture is supported" >&5
+  echo "$as_me:$LINENO: result: found" >&5
+echo "${ECHO_T}found" >&6
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+	CFLAGS="save_cflags"
+	echo "$as_me:$LINENO: checking if Intel architecture is supported" >&5
 echo $ECHO_N "checking if Intel architecture is supported... $ECHO_C" >&6
-	    CPPFLAGS="$save_cppflags -arch i386"
-	    LDFLAGS="$save_ldflags -arch i386"
-	    cat >conftest.$ac_ext <<_ACEOF
+	CPPFLAGS="$CPPFLAGS -arch i386"
+	LDFLAGS="$save_ldflags -arch i386"
+	cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -2978,36 +2979,34 @@ else
 sed 's/^/| /' conftest.$ac_ext >&5
 
 echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; MACARCH="ppc"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-    CPPFLAGS="$save_cppflags"
-    LDFLAGS="$save_ldflags"
-  fi
-
-  case "$MACARCH" in
-    intel)	MAC_OSX_ARCH="-arch i386";;
-    both)	MAC_OSX_ARCH="-arch i386 -arch ppc";;
-    ppc)	MAC_OSX_ARCH="-arch ppc";;
-    *)		MAC_OSX_ARCH="";;
-  esac
-
-    if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
-    CFLAGS=`echo "$CFLAGS" | sed 's/-O[23456789]/-O/'`
-  fi
-
-  CPPFLAGS="$CPPFLAGS $MAC_OSX_ARCH"
-  LDFLAGS="$LDFLAGS $MAC_OSX_ARCH"
+echo "${ECHO_T}no" >&6
+	        MACARCH="ppc"
+		CPPFLAGS="$save_cppflags -arch ppc"
+		LDFLAGS="$save_ldflags -arch ppc"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  elif test "x$MACARCH" = "xintel"; then
+    CPPFLAGS="$CPPFLAGS -arch intel"
+    LDFLAGS="$LDFLAGS -arch intel"
+  else
+    CPPFLAGS="$CPPFLAGS -arch ppc"
+    LDFLAGS="$LDFLAGS -arch ppc"
+  fi
 
   if test "$enable_darwin" = "yes"; then
     MACOSX=yes
     OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
-        CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -I/Developer/Headers/FlatCarbon -no-cpp-precomp"
+        CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+    if test "x$MACARCH" = "xboth"; then
+      CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+    else
+      CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
+    fi
 
                 echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
@@ -3396,6 +3395,13 @@ fi
     fi
   fi
 
+    if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
+    CFLAGS=`echo "$CFLAGS" | sed 's/-O[23456789]/-Oz/'`
+  fi
+
+  CPPFLAGS="$CPPFLAGS $MAC_OSX_ARCH"
+  LDFLAGS="$LDFLAGS $MAC_OSX_ARCH"
+
 else
   echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
@@ -15222,6 +15228,9 @@ echo "${ECHO_T}yes" >&6
 echo "${ECHO_T}no" >&6
   fi
 fi
+if test "x$MACARCH" = "xboth"; then
+  LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+fi
 
 echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
 echo $ECHO_N "checking for GCC 3 or later... $ECHO_C" >&6
--- a/src/configure.in
+++ b/src/configure.in
@@ -32,7 +32,7 @@ if test "$GCC" = yes; then
   gccversion=`"$CC" --version | sed -e '2,$d;s/^[[^0-9]]*\(darwin.[[^0-9]]*\)*\([[0-9]]\.[[0-9.]]*\).*$/\2/g'`
   dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
   if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
-    echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"'
+    echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
   else
     if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
@@ -105,48 +105,53 @@ if test "`(uname) 2>/dev/null`" = Darwin
   AC_MSG_CHECKING(--with-mac-arch argument)
   AC_ARG_WITH(mac-arch, [  --with-mac-arch=ARCH    intel, ppc or both],
 	MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
-	MACARCH="both"; AC_MSG_RESULT(Defaulting to $MACARCH))
+	MACARCH="both"; AC_MSG_RESULT(defaulting to $MACARCH))
 
   if test "x$MACARCH" = "xboth"; then
-    AC_MSG_CHECKING(if both architectures are supported)
+    AC_MSG_CHECKING(for 10.4 universal SDK)
+    dnl There is a terrible inconsistency (but we appear to get away with it):
+    dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
+    dnl doesn't, because "gcc -E" doesn't grok it.  That means the configure
+    dnl tests using the preprocessor are actually done with the wrong header
+    dnl files. $LDFLAGS is set at the end, because configure uses it together
+    dnl with $CFLAGS and we can only have one -sysroot argument.
     save_cppflags="$CPPFLAGS"
+    save_cflags="$CFLAGS"
     save_ldflags="$LDFLAGS"
-    CPPFLAGS="$CPPFLAGS -arch i386 -arch ppc"
-    LDFLAGS="$LDFLAGS -arch i386 -arch ppc"
+    CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
     AC_TRY_LINK([ ], [ ],
-	AC_MSG_RESULT(yes),
-	AC_MSG_RESULT(no)
-	    AC_MSG_CHECKING(if Intel architecture is supported)
-	    CPPFLAGS="$save_cppflags -arch i386"
-	    LDFLAGS="$save_ldflags -arch i386"
-	    AC_TRY_LINK([ ], [ ],
-		AC_MSG_RESULT(yes); MACARCH="intel",
-		AC_MSG_RESULT(no); MACARCH="ppc"))
-    CPPFLAGS="$save_cppflags"
-    LDFLAGS="$save_ldflags"
-  fi
+	AC_MSG_RESULT(found, will make universal binary),
 
-  case "$MACARCH" in
-    intel)	MAC_OSX_ARCH="-arch i386";;
-    both)	MAC_OSX_ARCH="-arch i386 -arch ppc";;
-    ppc)	MAC_OSX_ARCH="-arch ppc";;
-    *)		MAC_OSX_ARCH="";;
-  esac
-
-  dnl avoid a bug with -O2 for intel
-  if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
-    CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
+	AC_MSG_RESULT(not found)
+	CFLAGS="save_cflags"
+	AC_MSG_CHECKING(if Intel architecture is supported)
+	CPPFLAGS="$CPPFLAGS -arch i386"
+	LDFLAGS="$save_ldflags -arch i386"
+	AC_TRY_LINK([ ], [ ],
+	    AC_MSG_RESULT(yes); MACARCH="intel",
+	    AC_MSG_RESULT(no, using PowerPC)
+	        MACARCH="ppc"
+		CPPFLAGS="$save_cppflags -arch ppc"
+		LDFLAGS="$save_ldflags -arch ppc"))
+  elif test "x$MACARCH" = "xintel"; then
+    CPPFLAGS="$CPPFLAGS -arch intel"
+    LDFLAGS="$LDFLAGS -arch intel"
+  else
+    CPPFLAGS="$CPPFLAGS -arch ppc"
+    LDFLAGS="$LDFLAGS -arch ppc"
   fi
 
-  CPPFLAGS="$CPPFLAGS $MAC_OSX_ARCH"
-  LDFLAGS="$LDFLAGS $MAC_OSX_ARCH"
-
   if test "$enable_darwin" = "yes"; then
     MACOSX=yes
     OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
     dnl TODO: use -arch i386 on Intel machines
-    CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -I/Developer/Headers/FlatCarbon -no-cpp-precomp"
+    CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
+    if test "x$MACARCH" = "xboth"; then
+      CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
+    else
+      CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
+    fi
 
     dnl If Carbon is found, assume we don't want X11
     dnl unless it was specifically asked for (--with-x)
@@ -159,6 +164,14 @@ if test "`(uname) 2>/dev/null`" = Darwin
     fi
   fi
 
+  dnl avoid a bug with -O2 for intel
+  if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
+    CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
+  fi
+
+  CPPFLAGS="$CPPFLAGS $MAC_OSX_ARCH"
+  LDFLAGS="$LDFLAGS $MAC_OSX_ARCH"
+
 else
   AC_MSG_RESULT(no)
 fi
@@ -2794,6 +2807,9 @@ if test "x$MACOSX" = "xyes" && test "x$C
     AC_MSG_RESULT(no)
   fi
 fi
+if test "x$MACARCH" = "xboth"; then
+  LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+fi
 
 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
--- a/src/edit.c
+++ b/src/edit.c
@@ -3253,14 +3253,13 @@ expand_by_function(type, base)
     /* Go through the List with matches and add each of them. */
     for (li = matchlist->lv_first; li != NULL; li = li->li_next)
     {
+	icase = p_ic;
 	if (li->li_tv.v_type == VAR_DICT && li->li_tv.vval.v_dict != NULL)
 	{
 	    p = get_dict_string(li->li_tv.vval.v_dict, (char_u *)"word", FALSE);
 	    x = get_dict_string(li->li_tv.vval.v_dict, (char_u *)"menu", FALSE);
 	    if (get_dict_string(li->li_tv.vval.v_dict, (char_u *)"icase",
-							       FALSE) == NULL)
-		icase = p_ic;
-	    else
+							       FALSE) != NULL)
 		icase = get_dict_number(li->li_tv.vval.v_dict,
 							   (char_u *)"icase");
 	}
--- a/src/eval.c
+++ b/src/eval.c
@@ -15612,7 +15612,7 @@ var2fpos(varp, lnum)
 	pos.col = get_tv_number(&li->li_tv);
 	len = (long)STRLEN(ml_get(pos.lnum));
 	if (pos.col <= 0 || ((len == 0 && pos.col > 1)
-					       || (len > 0 && pos.col > len)))
+					  || (len > 0 && (int)pos.col > len)))
 	    return NULL;	/* invalid column number */
 
 	pos.col--;
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -941,6 +941,8 @@ EX(CMD_tunmenu,		"tunmenu",	ex_menu,
 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
 EX(CMD_undo,		"undo",		ex_undo,
 			TRLBAR|CMDWIN),
+EX(CMD_undojoin,	"undojoin",	ex_undojoin,
+			TRLBAR|CMDWIN),
 EX(CMD_unabbreviate,	"unabbreviate",	ex_abbreviate,
 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
 EX(CMD_unhide,		"unhide",	ex_buffer_all,
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -19,6 +19,7 @@ long mch_getperm __ARGS((char_u *name));
 int mch_setperm __ARGS((char_u *name, long perm));
 void mch_hide __ARGS((char_u *name));
 int mch_isdir __ARGS((char_u *name));
+int mch_is_linked __ARGS((char_u *fname));
 int mch_writable __ARGS((char_u *name));
 int mch_can_exe __ARGS((char_u *name));
 int mch_nodetype __ARGS((char_u *name));
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6128,7 +6128,7 @@ static char *(highlight_init_dark[]) =
 	"SpellRare term=reverse ctermbg=Magenta guisp=Magenta gui=undercurl",
 	"SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl",
 	"Pmenu ctermbg=Magenta guibg=Magenta",
-	"PmenuSel ctermbg=Grey guibg=Grey",
+	"PmenuSel ctermbg=DarkGrey guibg=DarkGrey",
 	"Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta",
 	"WarningMsg term=standout ctermfg=LightRed guifg=Red",
 	"WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black",
--- a/src/testdir/test49.vim
+++ b/src/testdir/test49.vim
@@ -1,6 +1,6 @@
 " Vim script language tests
 " Author:	Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change:	2005 Jun 18
+" Last Change:	2006 Feb 28
 
 "-------------------------------------------------------------------------------
 " Test environment							    {{{1
@@ -382,11 +382,6 @@ function! ExtraVim(...)
 	    let func_start = line(".")
 	    let func_name = substitute(theline,
 		\ '^\s*fu\%[nction]!\=\s*\(\%(\u\|s:\)\w*\).*', '\1', "")
-	    let func_conts = 0
-	elseif theline =~ '^\s*\\'
-	    if in_func
-		let func_conts = func_conts + 1
-	    endif
 	elseif theline =~ '^\s*endf'
 	    " End of function definition.
 	    let in_func = 0
@@ -411,7 +406,7 @@ function! ExtraVim(...)
 		    " Add the function breakpoint and note the number of quits
 		    " to be used, if specified, or one for every call else.
 		    let breakpoints = breakpoints . " -c 'breakadd func " .
-			\ (line(".") - func_start - func_conts) . " " .
+			\ (line(".") - func_start) . " " .
 			\ func_name . "'"
 		    if quits != ""
 			let debug_quits = debug_quits . quits
--- a/src/undo.c
+++ b/src/undo.c
@@ -845,6 +845,28 @@ u_sync()
 }
 
 /*
+ * ":undojoin": continue adding to the last entry list
+ */
+/*ARGSUSED*/
+    void
+ex_undojoin(eap)
+    exarg_T *eap;
+{
+    if (!curbuf->b_u_synced)
+	return;		    /* already unsynced */
+    if (curbuf->b_u_newhead == NULL)
+	return;		    /* nothing changed before */
+    if (p_ul < 0)
+	return;		    /* no entries, nothing to do */
+    else
+    {
+	/* Go back to the last entry */
+	curbuf->b_u_curhead = curbuf->b_u_newhead;
+	curbuf->b_u_synced = FALSE;  /* no entries, nothing to do */
+    }
+}
+
+/*
  * Called after writing the file and setting b_changed to FALSE.
  * Now an undo means that the buffer is modified.
  */
--- 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 Feb 27)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 27, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 28)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 28, compiled "