updated for version 7.0010
diff --git a/Filelist b/Filelist
index 627837c..889b8e8 100644
--- a/Filelist
+++ b/Filelist
@@ -358,7 +358,14 @@
 		src/gui_mac.c \
 		src/gui_mac.icns \
 		src/gui_mac.r \
-		src/os_mac* \
+		src/os_mac.build \
+		src/os_mac.c \
+		src/os_mac.h \
+		src/os_mac.rsr.hqx \
+		src/os_mac.sit.hqx \
+		src/os_mac_conv.c \
+		src/os_macosx.c \
+		src/os_mac.pbproj/project.pbxproj
 		src/proto/gui_mac.pro \
 		src/proto/os_mac.pro \
 
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index e51d372..400eb76 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 05
+*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -814,6 +814,7 @@
 bufnr( {expr})			Number	Number of the buffer {expr}
 bufwinnr( {expr})		Number	window number of buffer {expr}
 byte2line( {byte})		Number	line number at byte count {byte}
+byteidx( {expr}, {nr})		Number  byte index of {nr}'th char in {expr}
 char2nr( {expr})		Number	ASCII value of first char in {expr}
 cindent( {lnum})		Number  C indent for line {lnum}
 col( {expr})			Number	column nr of cursor or mark
@@ -897,6 +898,7 @@
 remote_send( {server}, {string} [, {idvar}])
 				String	send key sequence
 rename( {from}, {to})		Number  rename (move) file from {from} to {to}
+repeat( {expr}, {count})	String  repeat {expr} {count} times
 resolve( {filename})		String  get filename a shortcut points to
 search( {pattern} [, {flags}])	Number  search for {pattern}
 searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]])
@@ -1072,6 +1074,22 @@
 		{not available when compiled without the |+byte_offset|
 		feature}
 
+byteidx({expr}, {nr})					*byteidx()*
+		Return byte index of the {nr}'th character in the string
+		{expr}.  Use zero for the first character, it returns zero.
+		This function is only useful when there are multibyte
+		characters, otherwise the returned value is equal to {nr}.
+		Composing characters are counted as a separate character.
+		Example : >
+			echo matchstr(str, ".", byteidx(str, 3))
+<		will display the fourth character.  Another way to do the
+		same: >
+			let s = strpart(str, byteidx(str, 3))
+			echo strpart(s, 0, byteidx(s, 1))
+<		If there are less than {nr} characters -1 is returned.
+		If there are exactly {nr} characters the length of the string
+		is returned.
+
 char2nr({expr})						*char2nr()*
 		Return number value of the first char in {expr}.  Examples: >
 			char2nr(" ")		returns 32
@@ -2179,6 +2197,12 @@
 		successfully, and non-zero when the renaming failed.
 		This function is not available in the |sandbox|.
 
+repeat({expr}, {count})					*repeat()*
+		Repeat {expr} {count} times and return the concatenated
+		result.  Example: >
+			:let seperator = repeat('-', 80)
+<		When {count} is zero or negative the result is empty.
+
 resolve({filename})					*resolve()* *E655*
 		On MS-Windows, when {filename} is a shortcut (a .lnk file),
 		returns the path the shortcut points to in a simplified form.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index fe79d84..e44ac44 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5789,6 +5789,7 @@
 remove-option-flags	options.txt	/*remove-option-flags*
 rename()	eval.txt	/*rename()*
 rename-files	tips.txt	/*rename-files*
+repeat()	eval.txt	/*repeat()*
 repeat.txt	repeat.txt	/*repeat.txt*
 repeating	repeat.txt	/*repeating*
 replacing	change.txt	/*replacing*
@@ -5866,6 +5867,8 @@
 sandbox	eval.txt	/*sandbox*
 save-file	editing.txt	/*save-file*
 save-settings	starting.txt	/*save-settings*
+scheme-syntax	syntax.txt	/*scheme-syntax*
+scheme.vim	syntax.txt	/*scheme.vim*
 scp	pi_netrw.txt	/*scp*
 script-here	if_perl.txt	/*script-here*
 script-local	map.txt	/*script-local*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index fa1ddff..ba4af3e 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 16
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 18
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,37 +30,12 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-When switching between Aap script and make Vim won't always run.
+Add fix for zh_cn to Vim 6.3?  (Liang)
 
-Mac: Compiling --enable-gui=athena doesn't work.  Try to fix without disabling
-Carbon.  Otherwise adjust configure to disable Darwin. (raf)
-
-Mac: "make install" doesn't install.  Patch from RAF.
-
-UTF-8 in 'comments' causes wrong indent.  Counting bytes instead of char
-width? (Nikolai Weibull)
 
 For version 7.0:
 -   Include many PATCHES:
     8   Add functions:
-	strrep()		Repeat a string (patch from Christophe Poucet,
-				2003 Sep 12, also contains XX)
-				Alt: repeat(expr, count) werkt ook voor lists.
-	mousex() mousey()	get position of mouse pointer (patch by Ross
-				Presser)
-				He will send a new patch.
-				Is this really useful?
-	multibyteidx(string, idx) Byte index in multi-byte character.
-				Patch by Ilya Sher, 2004 Feb 25
-				Update June 18 (third one).
-	menuprop({name}, {idx}, {what})
-				Get menu property of menu {name} item {idx}.
-				menuprop("", 1, "name") returns "File".
-				menuprop("File", 1, "n") returns "nmenu
-				File.Open..." argument.
-				Patch by Ilya Sher, 2004 Apr 22
-	mapname({idx}, mode)	return the name of the idx'th mapping.
-				Patch by Ilya Sher, 2004 Mar 4.
 	match({pat}, {string} [,start] [,count]) get index of count'th match
 				Patch by Ilya Sher, 2004 Jun 19
 	find()			find file in 'path' (patch from Johannes
@@ -287,6 +262,8 @@
 -   When using 'incsearch" CTRL-R CTRL-W gets the word under the cursor, but
     the part that already matched is doubled then.  Remove the part of the
     word that would be doubled.  Make it work line CTRL-N in Insert mode.
+-   Add Lua interface? (Wolfgang Oertl)
+
 
 Vi incompatibility:
 8   With undo/redo only marks in the changed lines should be changed.  Other
@@ -1486,6 +1463,17 @@
 7   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
     signs and/or 'number'.
 8   Add functions:
+	menuprop({name}, {idx}, {what})
+				Get menu property of menu {name} item {idx}.
+				menuprop("", 1, "name") returns "File".
+				menuprop("File", 1, "n") returns "nmenu
+				File.Open..." argument.
+				Patch by Ilya Sher, 2004 Apr 22
+				Return a list of menus and/or a dictionary
+				with properties instead.
+	mapname({idx}, mode)	return the name of the idx'th mapping.
+				Patch by Ilya Sher, 2004 Mar 4.
+				Return a list instead.
 	sprintf(format, arg, ..) How to prevent a crash???
 	attributes()		return file protection flags "drwxrwxrwx"
 	mkdir(dir)		Create directory
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index a1c902c..a7f7d19 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 16
+*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -123,7 +123,10 @@
 
 New functions: ~
 
-tr(expr, from, to)	|tr()| Translate characters. (Ron Aaron)
+repeat(expr, count)	|repeat()| 	Repeat "expr" "count" times.
+					(Christophe Poucet)
+tr(expr, from, to)	|tr()|		Translate characters. (Ron Aaron)
+byteidx(expr, nr)	|byteidx()| 	Index of a character. (Ilya Sher)
 
 
 New autocommand events: ~
@@ -182,6 +185,12 @@
 ==============================================================================
 COMPILE TIME CHANGES					*compile-changes-7*
 
+Mac: "make" now creates the Vim.app directory and "make install" copies it to
+its final destination. (Raf)
+
+Mac: Made it possible to compile with Motif, Athena or GTK without tricks and
+still being able to use the MacRoman conversion.  Added the os_mac_conv.c
+file.
 
 ==============================================================================
 BUG FIXES						*bug-fixes-7*
@@ -255,4 +264,7 @@
 alignment may go wrong.  'cindent' also suffers from this for right-aligned
 items.
 
+The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw".  Now use
+"cn" or "tw" as intended.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/Makefile b/src/Makefile
index bfdd769..e080477 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1196,7 +1196,9 @@
 CARBONGUI_INSTALL = install_macosx
 CARBONGUI_TARGETS =
 CARBONGUI_MAN_TARGETS =
-CARBONGUI_TESTTARGET =
+CARBONGUI_TESTTARGET = gui
+CARBONGUI_BUNDLE = $(VIMNAME).app
+CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
 
 # All GUI files
 ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_widget.cc gui_kde_x11.cc gui_kde_widget_moc.cc
@@ -1465,7 +1467,7 @@
 	os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO)
 
 # Default target is making the executable and tools
-all: $(VIMTARGET) $(TOOLS) languages
+all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE)
 
 tools: $(TOOLS)
 
@@ -1641,7 +1643,7 @@
 #
 test check:
 	$(MAKE) -f Makefile $(VIMTARGET)
-	cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET)
+	cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG)
 
 testclean:
 	cd testdir; $(MAKE) -f Makefile clean
@@ -2035,6 +2037,7 @@
 	-rm -f *.o objects/* core $(VIMTARGET).core $(VIMTARGET) xxd/*.o
 	-rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c
 	-rm -f conftest* *~ auto/link.sed
+	-rm -rf $(GUI_BUNDLE)
 	-rm -f gui_kde_widget_moc.cc kvim_iface_skel.cc *.kidl
 	if test -d $(PODIR); then \
 		cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) clean; \
@@ -2327,6 +2330,9 @@
 objects/os_macosx.o: os_macosx.c
 	$(CCC) -o $@ os_macosx.c
 
+objects/os_mac_conv.o: os_mac_conv.c
+	$(CCC) -o $@ os_mac_conv.c
+
 objects/os_unix.o: os_unix.c
 	$(CCC) -o $@ os_unix.c
 
@@ -2410,13 +2416,11 @@
 ###############################################################################
 ### MacOS X installation
 ###
-### This creates a runnable Vim.app in the src directory
+### This installs a runnable Vim.app in $(prefix)
 
 REZ    = /Developer/Tools/Rez
-APPDIR = $(VIMNAME).app
+APPDIR = $(GUI_BUNDLE)
 RESDIR = $(APPDIR)/Contents/Resources
-# FIXME: i'm sure someone else can do something clever with grep
-# sed and version.h here
 VERSION = $(VIMMAJOR).$(VIMMINOR)
 
 ### Common flags
@@ -2434,7 +2438,10 @@
 #ICON_DOCTXT = $(shell if [ -e doc-txt.icns ] ; then echo doc-txt.icns ; else echo ; fi)
 #ICONS = $(addprefix $(RESDIR)/, $(ICON_APP) $(ICON_DOC) $(ICON_DOCTXT))
 
-install_macosx: bundle-dir bundle-executable bundle-info bundle-resource \
+install_macosx: $(APPDIR)
+	$(INSTALL_DATA_R) $(APPDIR) $(DESTDIR)$(prefix)
+
+$(APPDIR): bundle-dir bundle-executable bundle-info bundle-resource \
 	bundle-language
 
 bundle-dir: $(APPDIR)/Contents $(VIMTARGET)
@@ -2473,11 +2480,8 @@
 bundle-language: bundle-dir
 
 $(APPDIR)/Contents:
-	mkdir $(APPDIR)
-	mkdir $(APPDIR)/Contents
-	mkdir $(APPDIR)/Contents/MacOS
-	mkdir $(RESDIR)
-	mkdir $(RESDIR)/English.lproj
+	-$(SHELL) ./mkinstalldirs $(APPDIR)/Contents/MacOS
+	-$(SHELL) ./mkinstalldirs $(RESDIR)/English.lproj
 
 $(RESDIR)/%.icns: %.icns
 	cp $< $@
diff --git a/src/auto/configure b/src/auto/configure
index 220a981..4b03c67 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -1239,11 +1239,11 @@
 
   if test "$enable_darwin" = "yes"; then
     MACOSX=yes
-    OS_EXTRA_SCR="os_macosx.c";
-    OS_EXTRA_OBJ="objects/os_macosx.o"
+    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"
 
-            ac_safe=`echo "Carbon/Carbon.h" | sed 'y%./+-%__p_%'`
+                ac_safe=`echo "Carbon/Carbon.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Carbon/Carbon.h""... $ac_c" 1>&6
 echo "configure:1249: checking for Carbon/Carbon.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
@@ -1277,7 +1277,7 @@
 fi
 
     if test "x$CARBON" = "xyes"; then
-      if test -z "$with_x"; then
+      if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
 	with_x=no
 	DEFAULT_VIMNAME=Vim
       fi
diff --git a/src/config.mk.in b/src/config.mk.in
index ed5f686..d5103ec 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -126,6 +126,8 @@
 GUI_TARGETS	= $(@GUITYPE@_TARGETS)
 GUI_MAN_TARGETS	= $(@GUITYPE@_MAN_TARGETS)
 GUI_TESTTARGET	= $(@GUITYPE@_TESTTARGET)
+GUI_TESTARG	= $(@GUITYPE@_TESTARG)
+GUI_BUNDLE	= $(@GUITYPE@_BUNDLE)
 NARROW_PROTO	= @NARROW_PROTO@
 GUI_X_LIBS	= @GUI_X_LIBS@
 MOTIF_LIBNAME	= @MOTIF_LIBNAME@
diff --git a/src/configure.in b/src/configure.in
index a71c20d..4b119f3 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -103,15 +103,16 @@
 
   if test "$enable_darwin" = "yes"; then
     MACOSX=yes
-    OS_EXTRA_SCR="os_macosx.c";
-    OS_EXTRA_OBJ="objects/os_macosx.o"
+    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"
 
     dnl If Carbon is found, assume we don't want X11
     dnl unless it was specifically asked for (--with-x)
+    dnl or Motif, Athena or GTK GUI is used.
     AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
     if test "x$CARBON" = "xyes"; then
-      if test -z "$with_x"; then
+      if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
 	with_x=no
 	DEFAULT_VIMNAME=Vim
       fi
diff --git a/src/eval.c b/src/eval.c
index fa3bad6..21c10fd 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -263,6 +263,7 @@
 static void f_bufnr __ARGS((VAR argvars, VAR retvar));
 static void f_bufwinnr __ARGS((VAR argvars, VAR retvar));
 static void f_byte2line __ARGS((VAR argvars, VAR retvar));
+static void f_byteidx __ARGS((VAR argvars, VAR retvar));
 static void f_char2nr __ARGS((VAR argvars, VAR retvar));
 static void f_cindent __ARGS((VAR argvars, VAR retvar));
 static void f_col __ARGS((VAR argvars, VAR retvar));
@@ -349,6 +350,7 @@
 static void f_remote_peek __ARGS((VAR argvars, VAR retvar));
 static void f_remote_read __ARGS((VAR argvars, VAR retvar));
 static void f_remote_send __ARGS((VAR argvars, VAR retvar));
+static void f_repeat __ARGS((VAR argvars, VAR retvar));
 static void f_server2client __ARGS((VAR argvars, VAR retvar));
 static void f_serverlist __ARGS((VAR argvars, VAR retvar));
 static void f_setline __ARGS((VAR argvars, VAR retvar));
@@ -2817,6 +2819,7 @@
     {"bufnr",		1, 1, f_bufnr},
     {"bufwinnr",	1, 1, f_bufwinnr},
     {"byte2line",	1, 1, f_byte2line},
+    {"byteidx",		2, 2, f_byteidx},
     {"char2nr",		1, 1, f_char2nr},
     {"cindent",		1, 1, f_cindent},
     {"col",		1, 1, f_col},
@@ -2896,6 +2899,7 @@
     {"remote_read",	1, 1, f_remote_read},
     {"remote_send",	2, 3, f_remote_send},
     {"rename",		2, 2, f_rename},
+    {"repeat",		2, 2, f_repeat},
     {"resolve",		1, 1, f_resolve},
     {"search",		1, 2, f_search},
     {"searchpair",	3, 5, f_searchpair},
@@ -3588,6 +3592,42 @@
 }
 
 /*
+ * "byteidx()" function
+ */
+/*ARGSUSED*/
+    static void
+f_byteidx(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+#ifdef FEAT_MBYTE
+    char_u	*t;
+#endif
+    char_u	*str;
+    long	idx;
+
+    str = get_var_string(&argvars[0]);
+    idx = get_var_number(&argvars[1]);
+    retvar->var_val.var_number = -1;
+    if (idx < 0)
+	return;
+
+#ifdef FEAT_MBYTE
+    t = str;
+    for ( ; idx > 0; idx--)
+    {
+	if (*t == NUL)		/* EOL reached */
+	    return;
+	t += mb_ptr2len_check(t);
+    }
+    retvar->var_val.var_number = t - str;
+#else
+    if (idx <= STRLEN(str))
+	retvar->var_val.var_number = idx;
+#endif
+}
+
+/*
  * "char2nr(string)" function
  */
     static void
@@ -6920,6 +6960,45 @@
 #endif
 }
 
+/*
+ * "repeat()" function
+ */
+/*ARGSUSED*/
+    static void
+f_repeat(argvars, retvar)
+    VAR		argvars;
+    VAR		retvar;
+{
+    char_u	*p;
+    int		n;
+    int		slen;
+    int		len;
+    char_u	*r;
+    int		i;
+
+    p = get_var_string(&argvars[0]);
+    n = get_var_number(&argvars[1]);
+
+    retvar->var_type = VAR_STRING;
+    retvar->var_val.var_string = NULL;
+
+    slen = (int)STRLEN(p);
+    len = slen * n;
+
+    if (len <= 0)
+        return;
+
+    r = alloc(len + 1);
+    if (r != NULL)
+    {
+        for (i = 0; i < n; i++)
+	    mch_memmove(r + i * slen, p, (size_t)slen);
+        r[len] = NUL;
+    }
+
+    retvar->var_val.var_string = r;
+}
+
 #ifdef HAVE_STRFTIME
 /*
  * "strftime({format}[, {time}])" function
diff --git a/src/fileio.c b/src/fileio.c
index 02e5ad1..d1c11a0 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1498,40 +1498,14 @@
 # ifdef MACOS_X
 	    if (fio_flags & FIO_MACROMAN)
 	    {
+		extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long
+			    real_size));
 		/*
 		 * Conversion from Apple MacRoman char encoding to UTF-8 or
-		 * latin1, using standard Carbon framework.
+		 * latin1.  This is in os_mac_conv.c.
 		 */
-		CFStringRef	cfstr;
-		CFRange		r;
-		CFIndex		len = size;
-
-		/* MacRoman is an 8-bit encoding, no need to move bytes to
-		 * conv_rest[]. */
-		cfstr = CFStringCreateWithBytes(NULL, ptr, len,
-						kCFStringEncodingMacRoman, 0);
-		/*
-		 * If there is a conversion error, try using another
-		 * conversion.
-		 */
-		if (cfstr == NULL)
+		if (macroman2enc(ptr, &size, real_size) == FAIL)
 		    goto rewind_retry;
-
-		r.location = 0;
-		r.length = CFStringGetLength(cfstr);
-		if (r.length != CFStringGetBytes(cfstr, r,
-			(enc_utf8) ? kCFStringEncodingUTF8
-						 : kCFStringEncodingISOLatin1,
-			0, /* no lossy conversion */
-			0, /* not external representation */
-			ptr + size, real_size - size, &len))
-		{
-		    CFRelease(cfstr);
-		    goto rewind_retry;
-		}
-		CFRelease(cfstr);
-		mch_memmove(ptr, ptr + size, len);
-		size = len;
 	    }
 	    else
 # endif
@@ -2744,7 +2718,7 @@
 	    if (!(did_cmd = apply_autocmds_exarg(EVENT_FILEAPPENDCMD,
 					 sfname, sfname, FALSE, curbuf, eap)))
 	    {
-		if (bt_nofile(curbuf))
+		if (overwriting && bt_nofile(curbuf))
 		    nofile_err = TRUE;
 		else
 		    apply_autocmds_exarg(EVENT_FILEAPPENDPRE,
@@ -4789,11 +4763,11 @@
 	    /*
 	     * Convert UTF-8 or latin1 to Apple MacRoman.
 	     */
-	    CFStringRef	cfstr;
-	    CFRange	r;
-	    CFIndex	l;
 	    char_u	*from;
 	    size_t	fromlen;
+	    extern int enc2macroman __ARGS((char_u *from, size_t fromlen,
+			char_u *to, int *tolenp, int maxtolen, char_u *rest,
+			int *restlenp));
 
 	    if (ip->bw_restlen > 0)
 	    {
@@ -4811,41 +4785,14 @@
 		fromlen = len;
 	    }
 
-	    ip->bw_restlen = 0;
-	    cfstr = CFStringCreateWithBytes(NULL, from, fromlen,
-		    (enc_utf8) ?
-		    kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
-		    0);
-	    while (cfstr == NULL && ip->bw_restlen < 3 && fromlen > 1)
-	    {
-		ip->bw_rest[ip->bw_restlen++] = from[--fromlen];
-		cfstr = CFStringCreateWithBytes(NULL, from, fromlen,
-		    (enc_utf8) ?
-		    kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
-		    0);
-	    }
-	    if (cfstr == NULL)
+	    if (enc2macroman(from, fromlen,
+			ip->bw_conv_buf, &len, ip->bw_conv_buflen,
+			ip->bw_rest, &ip->bw_restlen) == FAIL)
 	    {
 		ip->bw_conv_error = TRUE;
 		return FAIL;
 	    }
-
-	    r.location = 0;
-	    r.length = CFStringGetLength(cfstr);
-	    if (r.length != CFStringGetBytes(cfstr, r,
-			kCFStringEncodingMacRoman,
-			0, /* no lossy conversion */
-			0, /* not external representation (since vim
-			    * handles this internally */
-			ip->bw_conv_buf, ip->bw_conv_buflen, &l))
-	    {
-		CFRelease(cfstr);
-		ip->bw_conv_error = TRUE;
-		return FAIL;
-	    }
-	    CFRelease(cfstr);
 	    buf = ip->bw_conv_buf;
-	    len = l;
 	}
 # endif
 
@@ -6696,7 +6643,8 @@
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    NULL, NULL, NULL, NULL, NULL, NULL, NULL
+    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
 };
 
 /*
diff --git a/src/mbyte.c b/src/mbyte.c
index db7c652..407f667 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5553,99 +5553,8 @@
 }
 
 #if defined(MACOS_X)
-static char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, CFStringEncoding from, CFStringEncoding to, int *unconvlenp));
-
-/*
- * A Mac version of string_convert_ext() for special cases.
- */
-    static char_u *
-mac_string_convert(ptr, len, lenp, fail_on_error, from, to, unconvlenp)
-    char_u		*ptr;
-    int			len;
-    int			*lenp;
-    int			fail_on_error;
-    CFStringEncoding	from;
-    CFStringEncoding	to;
-    int			*unconvlenp;
-{
-    char_u		*retval, *d;
-    CFStringRef		cfstr;
-    int			buflen, in, out, l, i;
-
-    if (unconvlenp != NULL)
-	*unconvlenp = 0;
-    cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
-    /* When conversion failed, try excluding bytes from the end, helps when
-     * there is an incomplete byte sequence.  Only do up to 6 bytes to avoid
-     * looping a long time when there really is something unconvertable. */
-    while (cfstr == NULL && unconvlenp != NULL && len > 1 && *unconvlenp < 6)
-    {
-	--len;
-	++*unconvlenp;
-	cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
-    }
-    if (cfstr == NULL)
-	return NULL;
-    if (to == kCFStringEncodingUTF8)
-	buflen = len * 6 + 1;
-    else
-	buflen = len + 1;
-    retval = alloc(buflen);
-    if (retval == NULL)
-    {
-	CFRelease(cfstr);
-	return NULL;
-    }
-    if (!CFStringGetCString(cfstr, retval, buflen, to))
-    {
-	CFRelease(cfstr);
-	if (fail_on_error)
-	{
-	    vim_free(retval);
-	    return NULL;
-	}
-
-	/* conversion failed for the whole string, but maybe it will work
-	 * for each character */
-	for (d = retval, in = 0, out = 0; in < len && out < buflen - 1;)
-	{
-	    if (from == kCFStringEncodingUTF8)
-		l = utf_ptr2len_check(ptr + in);
-	    else
-		l = 1;
-	    cfstr = CFStringCreateWithBytes(NULL, ptr + in, l, from, 0);
-	    if (cfstr == NULL)
-	    {
-		*d++ = '?';
-		out++;
-	    }
-	    else
-	    {
-		if (!CFStringGetCString(cfstr, d, buflen - out, to))
-		{
-		    *d++ = '?';
-		    out++;
-		}
-		else
-		{
-		    i = strlen(d);
-		    d += i;
-		    out += i;
-		}
-		CFRelease(cfstr);
-	    }
-	    in += l;
-	}
-	*d = NUL;
-	if (lenp != NULL)
-	    *lenp = out;
-	return retval;
-    }
-    CFRelease(cfstr);
-    if (lenp != NULL)
-	*lenp = strlen(retval);
-    return retval;
-}
+/* This is in os_mac_conv.c. */
+extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
 #endif
 
 /*
@@ -5762,30 +5671,22 @@
 # ifdef MACOS_X
 	case CONV_MAC_LATIN1:
 	    retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
-					kCFStringEncodingMacRoman,
-					kCFStringEncodingISOLatin1,
-					unconvlenp);
+					'm', 'l', unconvlenp);
 	    break;
 
 	case CONV_LATIN1_MAC:
 	    retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
-					kCFStringEncodingISOLatin1,
-					kCFStringEncodingMacRoman,
-					unconvlenp);
+					'l', 'm', unconvlenp);
 	    break;
 
 	case CONV_MAC_UTF8:
 	    retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
-					kCFStringEncodingMacRoman,
-					kCFStringEncodingUTF8,
-					unconvlenp);
+					'm', 'u', unconvlenp);
 	    break;
 
 	case CONV_UTF8_MAC:
 	    retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
-					kCFStringEncodingUTF8,
-					kCFStringEncodingMacRoman,
-					unconvlenp);
+					'u', 'm', unconvlenp);
 	    break;
 # endif
 
diff --git a/src/mysign b/src/mysign
index dea18b4..1581aa7 100644
--- a/src/mysign
+++ b/src/mysign
@@ -1 +1 @@
-=auto/configure-lastupdate=1089626426.19-@buildcheck=2c92a9e4676b2304fab9af16f1664194=configure.in@md5=021fe2d41058c80f220721c96886b73b
+=auto/configure-lastupdate=1090067895.52-@buildcheck=2c92a9e4676b2304fab9af16f1664194=configure.in@md5=9058353ef67f4d224686695cb80f645e
diff --git a/src/option.c b/src/option.c
index 0dee50b..bcf4183 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3237,7 +3237,15 @@
 	if (p_hlg == NULL)
 	    p_hlg = empty_option;
 	else
+	{
+	    /* zh_CN becomes "cn", zh_TW becomes "tw". */
+	    if (STRNICMP(p_hlg, "zh_", 3) == 0 && STRLEN(p_hlg) >= 5)
+	    {
+		p_hlg[0] = TOLOWER_ASC(p_hlg[3]);
+		p_hlg[1] = TOLOWER_ASC(p_hlg[4]);
+	    }
 	    p_hlg[2] = NUL;
+	}
 	options[idx].flags |= P_ALLOCED;
     }
 }
diff --git a/src/os_mac.h b/src/os_mac.h
index 7991769..940e267 100644
--- a/src/os_mac.h
+++ b/src/os_mac.h
@@ -18,18 +18,23 @@
 
 /*
  * Macintosh machine-dependent things.
+ *
+ * Include the Mac header files, unless also compiling with X11 (the header
+ * files have many conflicts).
  */
-#include <QuickDraw.h>
-#include <ToolUtils.h>
-#include <LowMem.h>
-#include <Scrap.h>
-#include <Sound.h>
-#include <TextUtils.h>
-#include <Memory.h>
-#include <OSUtils.h>
-#include <Files.h>
-#ifdef FEAT_MBYTE
-# include <Script.h>
+#ifndef FEAT_X11
+# include <QuickDraw.h>
+# include <ToolUtils.h>
+# include <LowMem.h>
+# include <Scrap.h>
+# include <Sound.h>
+# include <TextUtils.h>
+# include <Memory.h>
+# include <OSUtils.h>
+# include <Files.h>
+# ifdef FEAT_MBYTE
+#  include <Script.h>
+# endif
 #endif
 
 /*
@@ -303,10 +308,13 @@
 #endif
 
 #define DFLT_ERRORFILE		"errors.err"
-#ifdef COLON_AS_PATHSEP
-# define DFLT_RUNTIMEPATH	"$VIM:vimfiles,$VIMRUNTIME,$VIM:vimfiles:after"
-#else
-# define DFLT_RUNTIMEPATH	"~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after"
+
+#ifndef DFLT_RUNTIMEPATH
+# ifdef COLON_AS_PATHSEP
+#  define DFLT_RUNTIMEPATH	"$VIM:vimfiles,$VIMRUNTIME,$VIM:vimfiles:after"
+# else
+#  define DFLT_RUNTIMEPATH	"~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after"
+# endif
 #endif
 
 /*
diff --git a/src/os_mac.pbproj/project.pbxproj b/src/os_mac.pbproj/project.pbxproj
new file mode 100644
index 0000000..cacf9c9
--- /dev/null
+++ b/src/os_mac.pbproj/project.pbxproj
@@ -0,0 +1,1537 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 34;
+	objects = {
+		00EF808200C49A857F000001 = {
+			isa = PBXFileReference;
+			path = gui_mac.rsrc;
+			refType = 2;
+		};
+		00EF808300C49A857F000001 = {
+			fileRef = 00EF808200C49A857F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//000
+//001
+//002
+//003
+//004
+//010
+//011
+//012
+//013
+//014
+		014D3B8900BB52A07F000001 = {
+			children = (
+				273798BE00B36B037F000001,
+				273798C600B36B037F000001,
+				273798CA00B36B037F000001,
+				273798CE00B36B037F000001,
+				273798D200B36B037F000001,
+				273798D400B36B037F000001,
+				273798D500B36B037F000001,
+				273798D600B36B037F000001,
+				273798E000B36B037F000001,
+				273798E100B36B037F000001,
+				273798E500B36B037F000001,
+				273798E800B36B037F000001,
+				273798EC00B36B047F000001,
+				273798F100B36B047F000001,
+				273798F200B36B047F000001,
+				2737992C00B36BA77F000001,
+			);
+			isa = PBXGroup;
+			name = Headers;
+			refType = 4;
+		};
+		014D3B8B00BB59CA7F000001 = {
+			children = (
+				273798E200B36B037F000001,
+				273798ED00B36B047F000001,
+				273798D300B36B037F000001,
+			);
+			isa = PBXGroup;
+			name = "Unused Source";
+			path = "";
+			refType = 4;
+		};
+//010
+//011
+//012
+//013
+//014
+//020
+//021
+//022
+//023
+//024
+		0249A665FF388DC511CA2CEA = {
+			isa = PBXApplicationReference;
+			path = Vim.app;
+			refType = 3;
+		};
+		0249A669FF388E3911CA2CEA = {
+			isa = PBXFileReference;
+			name = "libstdc++.a";
+			path = "/usr/lib/libstdc++.a";
+			refType = 0;
+		};
+		0249A66AFF388E3911CA2CEA = {
+			fileRef = 0249A669FF388E3911CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//020
+//021
+//022
+//023
+//024
+//040
+//041
+//042
+//043
+//044
+		04313892FE3035C9C02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+				2737992900B36B047F000001,
+				00EF808300C49A857F000001,
+			);
+			isa = PBXRezBuildPhase;
+			name = "ResourceManager Resources";
+		};
+//040
+//041
+//042
+//043
+//044
+//050
+//051
+//052
+//053
+//054
+		05952DFCFFF02D1B11CA0E50 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				OPTIMIZATION_CFLAGS = "-O0";
+			};
+			isa = PBXBuildStyle;
+			name = Development;
+		};
+		05952DFDFFF02D1B11CA0E50 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+			};
+			isa = PBXBuildStyle;
+			name = Deployment;
+		};
+//050
+//051
+//052
+//053
+//054
+//060
+//061
+//062
+//063
+//064
+		0640BAA4FFF0323A11CA0E50 = {
+			isa = PBXFrameworkReference;
+			name = ApplicationServices.framework;
+			path = /System/Library/Frameworks/ApplicationServices.framework;
+			refType = 0;
+		};
+		0640BAA5FFF0323A11CA0E50 = {
+			isa = PBXFrameworkReference;
+			name = CoreServices.framework;
+			path = /System/Library/Frameworks/CoreServices.framework;
+			refType = 0;
+		};
+		06B64A4A00BBD0257F000001 = {
+			isa = PBXFileReference;
+			path = move.c;
+			refType = 4;
+		};
+		06B64A4B00BBD0257F000001 = {
+			fileRef = 06B64A4A00BBD0257F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//060
+//061
+//062
+//063
+//064
+//0C0
+//0C1
+//0C2
+//0C3
+//0C4
+		0C11626000BD3A897F000001 = {
+			isa = PBXFileReference;
+			path = os_unix.c;
+			refType = 4;
+		};
+//0C0
+//0C1
+//0C2
+//0C3
+//0C4
+//0D0
+//0D1
+//0D2
+//0D3
+//0D4
+		0D29631B00C303B07F000001 = {
+			children = (
+				273798CF00B36B037F000001,
+				273798DF00B36B037F000001,
+				0C11626000BD3A897F000001,
+				F5E2C53F00FACD0901000001,
+			);
+			isa = PBXGroup;
+			name = "Mac Port Sources";
+			refType = 4;
+		};
+//0D0
+//0D1
+//0D2
+//0D3
+//0D4
+//120
+//121
+//122
+//123
+//124
+		12FD6A1900C500167F000001 = {
+			isa = PBXFileReference;
+			path = gui_mac.icns;
+			refType = 4;
+		};
+		12FD6A1A00C500167F000001 = {
+			fileRef = 12FD6A1900C500167F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//120
+//121
+//122
+//123
+//124
+//190
+//191
+//192
+//193
+//194
+		195DF8C9FE9D4F0611CA2CBB = {
+			children = (
+				0249A665FF388DC511CA2CEA,
+			);
+			isa = PBXGroup;
+			name = Products;
+			refType = 4;
+		};
+//190
+//191
+//192
+//193
+//194
+//200
+//201
+//202
+//203
+//204
+		20286C28FDCF999611CA2CEA = {
+			buildStyles = (
+				05952DFCFFF02D1B11CA0E50,
+				05952DFDFFF02D1B11CA0E50,
+			);
+			isa = PBXProject;
+			mainGroup = 20286C29FDCF999611CA2CEA;
+			projectDirPath = "";
+			targets = (
+				20286C34FDCF999611CA2CEA,
+			);
+		};
+		20286C29FDCF999611CA2CEA = {
+			children = (
+				2737993000B36BF77F000001,
+				014D3B8900BB52A07F000001,
+				014D3B8B00BB59CA7F000001,
+				F5D0FB2B00F8C29A01000001,
+				0D29631B00C303B07F000001,
+				20286C2AFDCF999611CA2CEA,
+				20286C2CFDCF999611CA2CEA,
+				20286C32FDCF999611CA2CEA,
+				195DF8C9FE9D4F0611CA2CBB,
+			);
+			isa = PBXGroup;
+			name = vim;
+			path = "";
+			refType = 4;
+		};
+		20286C2AFDCF999611CA2CEA = {
+			children = (
+				20286C2BFDCF999611CA2CEA,
+				273798BF00B36B037F000001,
+				273798C000B36B037F000001,
+				273798C100B36B037F000001,
+				273798C200B36B037F000001,
+				273798C300B36B037F000001,
+				273798C400B36B037F000001,
+				273798C500B36B037F000001,
+				273798C700B36B037F000001,
+				273798C800B36B037F000001,
+				7E3AAAD704841C0000EFC20E,
+				273798C900B36B037F000001,
+				273798CB00B36B037F000001,
+				273798CC00B36B037F000001,
+				273798CD00B36B037F000001,
+				273798D100B36B037F000001,
+				273798D700B36B037F000001,
+				273798D800B36B037F000001,
+				273798D900B36B037F000001,
+				273798DA00B36B037F000001,
+				273798DB00B36B037F000001,
+				273798DC00B36B037F000001,
+				273798DD00B36B037F000001,
+				06B64A4A00BBD0257F000001,
+				2737992A00B36BA77F000001,
+				2737992B00B36BA77F000001,
+				273798DE00B36B037F000001,
+				273798E300B36B037F000001,
+				273798E400B36B037F000001,
+				273798E600B36B037F000001,
+				273798E700B36B037F000001,
+				273798E900B36B037F000001,
+				273798EA00B36B037F000001,
+				273798EB00B36B047F000001,
+				273798EE00B36B047F000001,
+				273798EF00B36B047F000001,
+				273798F000B36B047F000001,
+				273798F300B36B047F000001,
+			);
+			isa = PBXGroup;
+			name = Sources;
+			path = "";
+			refType = 4;
+		};
+		20286C2BFDCF999611CA2CEA = {
+			isa = PBXFileReference;
+			path = main.c;
+			refType = 4;
+		};
+		20286C2CFDCF999611CA2CEA = {
+			children = (
+				12FD6A1900C500167F000001,
+				00EF808200C49A857F000001,
+				273798D000B36B037F000001,
+			);
+			isa = PBXGroup;
+			name = Resources;
+			path = "";
+			refType = 4;
+		};
+		20286C32FDCF999611CA2CEA = {
+			children = (
+				20286C33FDCF999611CA2CEA,
+				0249A669FF388E3911CA2CEA,
+				0640BAA4FFF0323A11CA0E50,
+				0640BAA5FFF0323A11CA0E50,
+			);
+			isa = PBXGroup;
+			name = "External Frameworks and Libraries";
+			path = "";
+			refType = 4;
+		};
+		20286C33FDCF999611CA2CEA = {
+			isa = PBXFrameworkReference;
+			name = Carbon.framework;
+			path = /System/Library/Frameworks/Carbon.framework;
+			refType = 0;
+		};
+		20286C34FDCF999611CA2CEA = {
+			buildPhases = (
+				20286C35FDCF999611CA2CEA,
+				20286C36FDCF999611CA2CEA,
+				20286C38FDCF999611CA2CEA,
+				20286C3BFDCF999611CA2CEA,
+				04313892FE3035C9C02AAC07,
+			);
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "";
+				HEADER_SEARCH_PATHS = "proto /Developer/Headers/FlatCarbon";
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = "";
+				OTHER_CFLAGS = "-DMACOS_X_UNIX";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = Vim;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = app;
+			};
+			dependencies = (
+			);
+			isa = PBXApplicationTarget;
+			name = vim;
+			productInstallPath = "$(HOME)/Applications";
+			productName = vim;
+			productReference = 0249A665FF388DC511CA2CEA;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">
+<plist version=\"0.9\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+	    <dict>
+		<key>CFBundleTypeExtensions</key>
+		<array>
+		    <string>*</string>
+		</array>
+		<key>CFBundleTypeIconFile</key>
+		<string>txt.icns</string>
+		<key>CFBundleTypeName</key>
+		<string>NSStringPboardType</string>
+		<key>CFBundleTypeOSTypes</key>
+		<array>
+		    <string>****</string>
+		</array>
+		<key>CFBundleTypeRole</key>
+		<string>Editor</string>
+	    </dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>Vim</string>
+	<key>CFBundleGetInfoString</key>
+	<string></string>
+	<key>CFBundleIconFile</key>
+	<string>gui_mac.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string></string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>7.0aa</string>
+	<key>CFBundleName</key>
+	<string>Vim</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>Vim 7.0aa</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>0.1</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
+";
+			shouldUseHeadermap = 1;
+		};
+		20286C35FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				273798F400B36B047F000001,
+				273798F500B36B047F000001,
+				273798F600B36B047F000001,
+				273798F700B36B047F000001,
+				273798F800B36B047F000001,
+				273798F900B36B047F000001,
+				273798FA00B36B047F000001,
+				273798FB00B36B047F000001,
+				273798FC00B36B047F000001,
+				273798FD00B36B047F000001,
+				273798FE00B36B047F000001,
+				273798FF00B36B047F000001,
+				2737990000B36B047F000001,
+				2737990100B36B047F000001,
+				2737990200B36B047F000001,
+				2737992D00B36BA77F000001,
+			);
+			isa = PBXHeadersBuildPhase;
+			name = Headers;
+		};
+		20286C36FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				12FD6A1A00C500167F000001,
+			);
+			isa = PBXResourcesBuildPhase;
+			name = "Bundle Resources";
+		};
+		20286C38FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				20286C39FDCF999611CA2CEA,
+				2737990300B36B047F000001,
+				2737990400B36B047F000001,
+				2737990500B36B047F000001,
+				2737990600B36B047F000001,
+				2737990700B36B047F000001,
+				2737990800B36B047F000001,
+				2737990900B36B047F000001,
+				2737990A00B36B047F000001,
+				2737990B00B36B047F000001,
+				2737990C00B36B047F000001,
+				2737990D00B36B047F000001,
+				2737990E00B36B047F000001,
+				2737990F00B36B047F000001,
+				2737991000B36B047F000001,
+				2737991100B36B047F000001,
+				2737991300B36B047F000001,
+				2737991400B36B047F000001,
+				2737991500B36B047F000001,
+				2737991600B36B047F000001,
+				2737991700B36B047F000001,
+				2737991800B36B047F000001,
+				2737991900B36B047F000001,
+				2737991A00B36B047F000001,
+				2737991D00B36B047F000001,
+				2737991E00B36B047F000001,
+				2737991F00B36B047F000001,
+				2737992000B36B047F000001,
+				2737992100B36B047F000001,
+				2737992200B36B047F000001,
+				2737992300B36B047F000001,
+				2737992500B36B047F000001,
+				2737992600B36B047F000001,
+				2737992700B36B047F000001,
+				2737992800B36B047F000001,
+				2737992E00B36BA77F000001,
+				2737992F00B36BA77F000001,
+				06B64A4B00BBD0257F000001,
+				F5D0FB2D00F8C2BF01000001,
+				F5E2C54000FACD0901000001,
+				F5CC3220018E3F6801891561,
+				7E3AAAD804841C0000EFC20E,
+				7E556E1404841F7900882585,
+			);
+			isa = PBXSourcesBuildPhase;
+			name = Sources;
+		};
+		20286C39FDCF999611CA2CEA = {
+			fileRef = 20286C2BFDCF999611CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+				);
+			};
+		};
+		20286C3BFDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				20286C3CFDCF999611CA2CEA,
+				0249A66AFF388E3911CA2CEA,
+			);
+			isa = PBXFrameworksBuildPhase;
+			name = "Frameworks & Libraries";
+		};
+		20286C3CFDCF999611CA2CEA = {
+			fileRef = 20286C33FDCF999611CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//200
+//201
+//202
+//203
+//204
+//270
+//271
+//272
+//273
+//274
+		273798BE00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ascii.h;
+			refType = 4;
+		};
+		273798BF00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = buffer.c;
+			refType = 4;
+		};
+		273798C000B36B037F000001 = {
+			isa = PBXFileReference;
+			path = charset.c;
+			refType = 4;
+		};
+		273798C100B36B037F000001 = {
+			isa = PBXFileReference;
+			path = diff.c;
+			refType = 4;
+		};
+		273798C200B36B037F000001 = {
+			isa = PBXFileReference;
+			path = digraph.c;
+			refType = 4;
+		};
+		273798C300B36B037F000001 = {
+			isa = PBXFileReference;
+			path = edit.c;
+			refType = 4;
+		};
+		273798C400B36B037F000001 = {
+			isa = PBXFileReference;
+			path = eval.c;
+			refType = 4;
+		};
+		273798C500B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ex_cmds.c;
+			refType = 4;
+		};
+		273798C600B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ex_cmds.h;
+			refType = 4;
+		};
+		273798C700B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ex_cmds2.c;
+			refType = 4;
+		};
+		273798C800B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ex_docmd.c;
+			refType = 4;
+		};
+		273798C900B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ex_getln.c;
+			refType = 4;
+		};
+		273798CA00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = feature.h;
+			refType = 4;
+		};
+		273798CB00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = fileio.c;
+			refType = 4;
+		};
+		273798CC00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = fold.c;
+			refType = 4;
+		};
+		273798CD00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = getchar.c;
+			refType = 4;
+		};
+		273798CE00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = globals.h;
+			refType = 4;
+		};
+		273798CF00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = gui_mac.c;
+			refType = 4;
+		};
+		273798D000B36B037F000001 = {
+			isa = PBXFileReference;
+			path = gui_mac.r;
+			refType = 4;
+		};
+		273798D100B36B037F000001 = {
+			isa = PBXFileReference;
+			path = gui.c;
+			refType = 4;
+		};
+		273798D200B36B037F000001 = {
+			isa = PBXFileReference;
+			path = gui.h;
+			refType = 4;
+		};
+		273798D300B36B037F000001 = {
+			isa = PBXFileReference;
+			path = integration.c;
+			refType = 4;
+		};
+		273798D400B36B037F000001 = {
+			isa = PBXFileReference;
+			path = integration.h;
+			refType = 4;
+		};
+		273798D500B36B037F000001 = {
+			isa = PBXFileReference;
+			path = keymap.h;
+			refType = 4;
+		};
+		273798D600B36B037F000001 = {
+			isa = PBXFileReference;
+			path = macros.h;
+			refType = 4;
+		};
+		273798D700B36B037F000001 = {
+			isa = PBXFileReference;
+			path = mark.c;
+			refType = 4;
+		};
+		273798D800B36B037F000001 = {
+			isa = PBXFileReference;
+			path = memfile.c;
+			refType = 4;
+		};
+		273798D900B36B037F000001 = {
+			isa = PBXFileReference;
+			path = memline.c;
+			refType = 4;
+		};
+		273798DA00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = menu.c;
+			refType = 4;
+		};
+		273798DB00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = message.c;
+			refType = 4;
+		};
+		273798DC00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = misc1.c;
+			refType = 4;
+		};
+		273798DD00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = misc2.c;
+			refType = 4;
+		};
+		273798DE00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = ops.c;
+			refType = 4;
+		};
+		273798DF00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = os_mac.c;
+			refType = 4;
+		};
+		273798E000B36B037F000001 = {
+			isa = PBXFileReference;
+			path = os_mac.h;
+			refType = 4;
+		};
+		273798E100B36B037F000001 = {
+			isa = PBXFileReference;
+			path = proto.h;
+			refType = 4;
+		};
+		273798E200B36B037F000001 = {
+			isa = PBXFileReference;
+			path = pty.c;
+			refType = 4;
+		};
+		273798E300B36B037F000001 = {
+			isa = PBXFileReference;
+			path = quickfix.c;
+			refType = 4;
+		};
+		273798E400B36B037F000001 = {
+			isa = PBXFileReference;
+			path = regexp.c;
+			refType = 4;
+		};
+		273798E500B36B037F000001 = {
+			isa = PBXFileReference;
+			path = regexp.h;
+			refType = 4;
+		};
+		273798E600B36B037F000001 = {
+			isa = PBXFileReference;
+			path = screen.c;
+			refType = 4;
+		};
+		273798E700B36B037F000001 = {
+			isa = PBXFileReference;
+			path = search.c;
+			refType = 4;
+		};
+		273798E800B36B037F000001 = {
+			isa = PBXFileReference;
+			path = structs.h;
+			refType = 4;
+		};
+		273798E900B36B037F000001 = {
+			isa = PBXFileReference;
+			path = syntax.c;
+			refType = 4;
+		};
+		273798EA00B36B037F000001 = {
+			isa = PBXFileReference;
+			path = tag.c;
+			refType = 4;
+		};
+		273798EB00B36B047F000001 = {
+			isa = PBXFileReference;
+			path = term.c;
+			refType = 4;
+		};
+		273798EC00B36B047F000001 = {
+			isa = PBXFileReference;
+			path = term.h;
+			refType = 4;
+		};
+		273798ED00B36B047F000001 = {
+			isa = PBXFileReference;
+			path = termlib.c;
+			refType = 4;
+		};
+		273798EE00B36B047F000001 = {
+			isa = PBXFileReference;
+			path = ui.c;
+			refType = 4;
+		};
+		273798EF00B36B047F000001 = {
+			isa = PBXFileReference;
+			path = undo.c;
+			refType = 4;
+		};
+		273798F000B36B047F000001 = {
+			isa = PBXFileReference;
+			path = version.c;
+			refType = 4;
+		};
+		273798F100B36B047F000001 = {
+			isa = PBXFileReference;
+			path = version.h;
+			refType = 4;
+		};
+		273798F200B36B047F000001 = {
+			isa = PBXFileReference;
+			path = vim.h;
+			refType = 4;
+		};
+		273798F300B36B047F000001 = {
+			isa = PBXFileReference;
+			path = window.c;
+			refType = 4;
+		};
+		273798F400B36B047F000001 = {
+			fileRef = 273798BE00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+				);
+			};
+		};
+		273798F500B36B047F000001 = {
+			fileRef = 273798C600B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798F600B36B047F000001 = {
+			fileRef = 273798CA00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+				);
+			};
+		};
+		273798F700B36B047F000001 = {
+			fileRef = 273798CE00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798F800B36B047F000001 = {
+			fileRef = 273798D200B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798F900B36B047F000001 = {
+			fileRef = 273798D400B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FA00B36B047F000001 = {
+			fileRef = 273798D500B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FB00B36B047F000001 = {
+			fileRef = 273798D600B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FC00B36B047F000001 = {
+			fileRef = 273798E000B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FD00B36B047F000001 = {
+			fileRef = 273798E100B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FE00B36B047F000001 = {
+			fileRef = 273798E500B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		273798FF00B36B047F000001 = {
+			fileRef = 273798E800B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990000B36B047F000001 = {
+			fileRef = 273798EC00B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990100B36B047F000001 = {
+			fileRef = 273798F100B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990200B36B047F000001 = {
+			fileRef = 273798F200B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990300B36B047F000001 = {
+			fileRef = 273798BF00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990400B36B047F000001 = {
+			fileRef = 273798C000B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990500B36B047F000001 = {
+			fileRef = 273798C100B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990600B36B047F000001 = {
+			fileRef = 273798C200B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990700B36B047F000001 = {
+			fileRef = 273798C300B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990800B36B047F000001 = {
+			fileRef = 273798C400B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990900B36B047F000001 = {
+			fileRef = 273798C500B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990A00B36B047F000001 = {
+			fileRef = 273798C700B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990B00B36B047F000001 = {
+			fileRef = 273798C800B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990C00B36B047F000001 = {
+			fileRef = 273798C900B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990D00B36B047F000001 = {
+			fileRef = 273798CB00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990E00B36B047F000001 = {
+			fileRef = 273798CC00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737990F00B36B047F000001 = {
+			fileRef = 273798CD00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991000B36B047F000001 = {
+			fileRef = 273798CF00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991100B36B047F000001 = {
+			fileRef = 273798D100B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991300B36B047F000001 = {
+			fileRef = 273798D700B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991400B36B047F000001 = {
+			fileRef = 273798D800B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991500B36B047F000001 = {
+			fileRef = 273798D900B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991600B36B047F000001 = {
+			fileRef = 273798DA00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991700B36B047F000001 = {
+			fileRef = 273798DB00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991800B36B047F000001 = {
+			fileRef = 273798DC00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991900B36B047F000001 = {
+			fileRef = 273798DD00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991A00B36B047F000001 = {
+			fileRef = 273798DE00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991D00B36B047F000001 = {
+			fileRef = 273798E300B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991E00B36B047F000001 = {
+			fileRef = 273798E400B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737991F00B36B047F000001 = {
+			fileRef = 273798E600B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992000B36B047F000001 = {
+			fileRef = 273798E700B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992100B36B047F000001 = {
+			fileRef = 273798E900B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992200B36B047F000001 = {
+			fileRef = 273798EA00B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992300B36B047F000001 = {
+			fileRef = 273798EB00B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992500B36B047F000001 = {
+			fileRef = 273798EE00B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992600B36B047F000001 = {
+			fileRef = 273798EF00B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992700B36B047F000001 = {
+			fileRef = 273798F000B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992800B36B047F000001 = {
+			fileRef = 273798F300B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992900B36B047F000001 = {
+			fileRef = 273798D000B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992A00B36BA77F000001 = {
+			isa = PBXFileReference;
+			path = normal.c;
+			refType = 4;
+		};
+		2737992B00B36BA77F000001 = {
+			isa = PBXFileReference;
+			path = option.c;
+			refType = 4;
+		};
+		2737992C00B36BA77F000001 = {
+			isa = PBXFileReference;
+			path = option.h;
+			refType = 4;
+		};
+		2737992D00B36BA77F000001 = {
+			fileRef = 2737992C00B36BA77F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992E00B36BA77F000001 = {
+			fileRef = 2737992A00B36BA77F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737992F00B36BA77F000001 = {
+			fileRef = 2737992B00B36BA77F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		2737993000B36BF77F000001 = {
+			children = (
+				2737993100B36C397F000001,
+				2737993200B36C397F000001,
+				2737993300B36C397F000001,
+				2737993400B36C397F000001,
+				2737993500B36C397F000001,
+				2737993600B36C397F000001,
+				2737993700B36C397F000001,
+				2737993800B36C397F000001,
+				2737993900B36C397F000001,
+				2737993A00B36C397F000001,
+				2737993B00B36C397F000001,
+				2737993C00B36C397F000001,
+				2737993D00B36C397F000001,
+				2737993E00B36C397F000001,
+				2737993F00B36C397F000001,
+				2737994000B36C397F000001,
+				2737994100B36C397F000001,
+				2737994200B36C397F000001,
+				2737994300B36C397F000001,
+				2737994400B36C397F000001,
+				2737994500B36C397F000001,
+				2737994600B36C397F000001,
+				2737994700B36C397F000001,
+				2737994800B36C397F000001,
+				2737994900B36C397F000001,
+				2737994A00B36C397F000001,
+				2737994B00B36C397F000001,
+				2737994C00B36C397F000001,
+				2737994D00B36C397F000001,
+				2737994E00B36C397F000001,
+				2737994F00B36C397F000001,
+				2737995000B36C397F000001,
+				2737995100B36C397F000001,
+				2737995200B36C397F000001,
+				2737995300B36C397F000001,
+				2737995400B36C397F000001,
+				2737995500B36C397F000001,
+				2737995600B36C397F000001,
+				2737995700B36C397F000001,
+				2737995800B36C397F000001,
+				2737995900B36C397F000001,
+			);
+			isa = PBXGroup;
+			name = Prototype;
+			path = proto;
+			refType = 4;
+		};
+		2737993100B36C397F000001 = {
+			isa = PBXFileReference;
+			name = buffer.pro;
+			path = proto/buffer.pro;
+			refType = 4;
+		};
+		2737993200B36C397F000001 = {
+			isa = PBXFileReference;
+			name = charset.pro;
+			path = proto/charset.pro;
+			refType = 4;
+		};
+		2737993300B36C397F000001 = {
+			isa = PBXFileReference;
+			name = diff.pro;
+			path = proto/diff.pro;
+			refType = 4;
+		};
+		2737993400B36C397F000001 = {
+			isa = PBXFileReference;
+			name = digraph.pro;
+			path = proto/digraph.pro;
+			refType = 4;
+		};
+		2737993500B36C397F000001 = {
+			isa = PBXFileReference;
+			name = edit.pro;
+			path = proto/edit.pro;
+			refType = 4;
+		};
+		2737993600B36C397F000001 = {
+			isa = PBXFileReference;
+			name = eval.pro;
+			path = proto/eval.pro;
+			refType = 4;
+		};
+		2737993700B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ex_cmds.pro;
+			path = proto/ex_cmds.pro;
+			refType = 4;
+		};
+		2737993800B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ex_cmds2.pro;
+			path = proto/ex_cmds2.pro;
+			refType = 4;
+		};
+		2737993900B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ex_docmd.pro;
+			path = proto/ex_docmd.pro;
+			refType = 4;
+		};
+		2737993A00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ex_getln.pro;
+			path = proto/ex_getln.pro;
+			refType = 4;
+		};
+		2737993B00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = fileio.pro;
+			path = proto/fileio.pro;
+			refType = 4;
+		};
+		2737993C00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = fold.pro;
+			path = proto/fold.pro;
+			refType = 4;
+		};
+		2737993D00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = getchar.pro;
+			path = proto/getchar.pro;
+			refType = 4;
+		};
+		2737993E00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = gui_mac.pro;
+			path = proto/gui_mac.pro;
+			refType = 4;
+		};
+		2737993F00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = gui.pro;
+			path = proto/gui.pro;
+			refType = 4;
+		};
+		2737994000B36C397F000001 = {
+			isa = PBXFileReference;
+			name = main.pro;
+			path = proto/main.pro;
+			refType = 4;
+		};
+		2737994100B36C397F000001 = {
+			isa = PBXFileReference;
+			name = mark.pro;
+			path = proto/mark.pro;
+			refType = 4;
+		};
+		2737994200B36C397F000001 = {
+			isa = PBXFileReference;
+			name = memfile.pro;
+			path = proto/memfile.pro;
+			refType = 4;
+		};
+		2737994300B36C397F000001 = {
+			isa = PBXFileReference;
+			name = memline.pro;
+			path = proto/memline.pro;
+			refType = 4;
+		};
+		2737994400B36C397F000001 = {
+			isa = PBXFileReference;
+			name = menu.pro;
+			path = proto/menu.pro;
+			refType = 4;
+		};
+		2737994500B36C397F000001 = {
+			isa = PBXFileReference;
+			name = message.pro;
+			path = proto/message.pro;
+			refType = 4;
+		};
+		2737994600B36C397F000001 = {
+			isa = PBXFileReference;
+			name = misc1.pro;
+			path = proto/misc1.pro;
+			refType = 4;
+		};
+		2737994700B36C397F000001 = {
+			isa = PBXFileReference;
+			name = misc2.pro;
+			path = proto/misc2.pro;
+			refType = 4;
+		};
+		2737994800B36C397F000001 = {
+			isa = PBXFileReference;
+			name = move.pro;
+			path = proto/move.pro;
+			refType = 4;
+		};
+		2737994900B36C397F000001 = {
+			isa = PBXFileReference;
+			name = normal.pro;
+			path = proto/normal.pro;
+			refType = 4;
+		};
+		2737994A00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ops.pro;
+			path = proto/ops.pro;
+			refType = 4;
+		};
+		2737994B00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = option.pro;
+			path = proto/option.pro;
+			refType = 4;
+		};
+		2737994C00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = os_mac.pro;
+			path = proto/os_mac.pro;
+			refType = 4;
+		};
+		2737994D00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = pty.pro;
+			path = proto/pty.pro;
+			refType = 4;
+		};
+		2737994E00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = quickfix.pro;
+			path = proto/quickfix.pro;
+			refType = 4;
+		};
+		2737994F00B36C397F000001 = {
+			isa = PBXFileReference;
+			name = regexp.pro;
+			path = proto/regexp.pro;
+			refType = 4;
+		};
+		2737995000B36C397F000001 = {
+			isa = PBXFileReference;
+			name = screen.pro;
+			path = proto/screen.pro;
+			refType = 4;
+		};
+		2737995100B36C397F000001 = {
+			isa = PBXFileReference;
+			name = search.pro;
+			path = proto/search.pro;
+			refType = 4;
+		};
+		2737995200B36C397F000001 = {
+			isa = PBXFileReference;
+			name = syntax.pro;
+			path = proto/syntax.pro;
+			refType = 4;
+		};
+		2737995300B36C397F000001 = {
+			isa = PBXFileReference;
+			name = tag.pro;
+			path = proto/tag.pro;
+			refType = 4;
+		};
+		2737995400B36C397F000001 = {
+			isa = PBXFileReference;
+			name = term.pro;
+			path = proto/term.pro;
+			refType = 4;
+		};
+		2737995500B36C397F000001 = {
+			isa = PBXFileReference;
+			name = termlib.pro;
+			path = proto/termlib.pro;
+			refType = 4;
+		};
+		2737995600B36C397F000001 = {
+			isa = PBXFileReference;
+			name = ui.pro;
+			path = proto/ui.pro;
+			refType = 4;
+		};
+		2737995700B36C397F000001 = {
+			isa = PBXFileReference;
+			name = undo.pro;
+			path = proto/undo.pro;
+			refType = 4;
+		};
+		2737995800B36C397F000001 = {
+			isa = PBXFileReference;
+			name = version.pro;
+			path = proto/version.pro;
+			refType = 4;
+		};
+		2737995900B36C397F000001 = {
+			isa = PBXFileReference;
+			name = window.pro;
+			path = proto/window.pro;
+			refType = 4;
+		};
+//270
+//271
+//272
+//273
+//274
+//7E0
+//7E1
+//7E2
+//7E3
+//7E4
+		7E3AAAD704841C0000EFC20E = {
+			isa = PBXFileReference;
+			path = ex_eval.c;
+			refType = 4;
+		};
+		7E3AAAD804841C0000EFC20E = {
+			fileRef = 7E3AAAD704841C0000EFC20E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		7E556E1404841F7900882585 = {
+			fileRef = 273798ED00B36B047F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//7E0
+//7E1
+//7E2
+//7E3
+//7E4
+//F50
+//F51
+//F52
+//F53
+//F54
+		F5CC3220018E3F6801891561 = {
+			fileRef = 273798E200B36B037F000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5D0FB2B00F8C29A01000001 = {
+			children = (
+				F5D0FB2C00F8C2BF01000001,
+			);
+			isa = PBXGroup;
+			name = "Optional Source";
+			path = "";
+			refType = 4;
+		};
+		F5D0FB2C00F8C2BF01000001 = {
+			isa = PBXFileReference;
+			path = mbyte.c;
+			refType = 4;
+		};
+		F5D0FB2D00F8C2BF01000001 = {
+			fileRef = F5D0FB2C00F8C2BF01000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5E2C53F00FACD0901000001 = {
+			isa = PBXFileReference;
+			path = os_macosx.c;
+			refType = 4;
+		};
+		F5E2C54000FACD0901000001 = {
+			fileRef = F5E2C53F00FACD0901000001;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+	};
+	rootObject = 20286C28FDCF999611CA2CEA;
+}
diff --git a/src/os_mac_conv.c b/src/os_mac_conv.c
new file mode 100644
index 0000000..3dfacfe
--- /dev/null
+++ b/src/os_mac_conv.c
@@ -0,0 +1,230 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+/*
+ * os_mac_conv.c: Code specifically for Mac string conversions.
+ *
+ * This code has been put in a separate file to avoid the conflicts that are
+ * caused by including both the X11 and Carbon header files.
+ */
+
+#define NO_X11_INCLUDES
+#include "vim.h"
+
+extern char_u *mac_string_convert __ARGS((char_u *ptr, int len, int *lenp, int fail_on_error, int from, int to, int *unconvlenp));
+extern int macroman2enc __ARGS((char_u *ptr, long *sizep, long real_size));
+extern int enc2macroman __ARGS((char_u *from, size_t fromlen, char_u *to, int *tolenp, int maxtolen, char_u *rest, int *restlenp));
+
+/*
+ * A Mac version of string_convert_ext() for special cases.
+ */
+    char_u *
+mac_string_convert(ptr, len, lenp, fail_on_error, from_enc, to_enc, unconvlenp)
+    char_u		*ptr;
+    int			len;
+    int			*lenp;
+    int			fail_on_error;
+    int			from_enc;
+    int			to_enc;
+    int			*unconvlenp;
+{
+    char_u		*retval, *d;
+    CFStringRef		cfstr;
+    int			buflen, in, out, l, i;
+    CFStringEncoding	from;
+    CFStringEncoding	to;
+
+    switch (from_enc)
+    {
+	case 'l':   from = kCFStringEncodingISOLatin1; break;
+	case 'm':   from = kCFStringEncodingMacRoman; break;
+	case 'u':   from = kCFStringEncodingUTF8; break;
+	default:    return NULL;
+    }
+    switch (to_enc)
+    {
+	case 'l':   to = kCFStringEncodingISOLatin1; break;
+	case 'm':   to = kCFStringEncodingMacRoman; break;
+	case 'u':   to = kCFStringEncodingUTF8; break;
+	default:    return NULL;
+    }
+
+    if (unconvlenp != NULL)
+	*unconvlenp = 0;
+    cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+
+    /* When conversion failed, try excluding bytes from the end, helps when
+     * there is an incomplete byte sequence.  Only do up to 6 bytes to avoid
+     * looping a long time when there really is something unconvertable. */
+    while (cfstr == NULL && unconvlenp != NULL && len > 1 && *unconvlenp < 6)
+    {
+	--len;
+	++*unconvlenp;
+	cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+    }
+    if (cfstr == NULL)
+	return NULL;
+    if (to == kCFStringEncodingUTF8)
+	buflen = len * 6 + 1;
+    else
+	buflen = len + 1;
+    retval = alloc(buflen);
+    if (retval == NULL)
+    {
+	CFRelease(cfstr);
+	return NULL;
+    }
+    if (!CFStringGetCString(cfstr, retval, buflen, to))
+    {
+	CFRelease(cfstr);
+	if (fail_on_error)
+	{
+	    vim_free(retval);
+	    return NULL;
+	}
+
+	/* conversion failed for the whole string, but maybe it will work
+	 * for each character */
+	for (d = retval, in = 0, out = 0; in < len && out < buflen - 1;)
+	{
+	    if (from == kCFStringEncodingUTF8)
+		l = utf_ptr2len_check(ptr + in);
+	    else
+		l = 1;
+	    cfstr = CFStringCreateWithBytes(NULL, ptr + in, l, from, 0);
+	    if (cfstr == NULL)
+	    {
+		*d++ = '?';
+		out++;
+	    }
+	    else
+	    {
+		if (!CFStringGetCString(cfstr, d, buflen - out, to))
+		{
+		    *d++ = '?';
+		    out++;
+		}
+		else
+		{
+		    i = strlen(d);
+		    d += i;
+		    out += i;
+		}
+		CFRelease(cfstr);
+	    }
+	    in += l;
+	}
+	*d = NUL;
+	if (lenp != NULL)
+	    *lenp = out;
+	return retval;
+    }
+    CFRelease(cfstr);
+    if (lenp != NULL)
+	*lenp = strlen(retval);
+    return retval;
+}
+
+/*
+ * Conversion from Apple MacRoman char encoding to UTF-8 or latin1, using
+ * standard Carbon framework.
+ * Input: "ptr[*sizep]".
+ * "real_size" is the size of the buffer that "ptr" points to.
+ * output is in-place, "sizep" is adjusted.
+ * Returns OK or FAIL.
+ */
+    int
+macroman2enc(ptr, sizep, real_size)
+    char_u	*ptr;
+    long	*sizep;
+    long	real_size;
+{
+    CFStringRef		cfstr;
+    CFRange		r;
+    CFIndex		len = *sizep;
+
+    /* MacRoman is an 8-bit encoding, no need to move bytes to
+     * conv_rest[]. */
+    cfstr = CFStringCreateWithBytes(NULL, ptr, len,
+						kCFStringEncodingMacRoman, 0);
+    /*
+     * If there is a conversion error, try using another
+     * conversion.
+     */
+    if (cfstr == NULL)
+	return FAIL;
+
+    r.location = 0;
+    r.length = CFStringGetLength(cfstr);
+    if (r.length != CFStringGetBytes(cfstr, r,
+	    (enc_utf8) ? kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
+	    0, /* no lossy conversion */
+	    0, /* not external representation */
+	    ptr + *sizep, real_size - *sizep, &len))
+    {
+	CFRelease(cfstr);
+	return FAIL;
+    }
+    CFRelease(cfstr);
+    mch_memmove(ptr, ptr + *sizep, len);
+    *sizep = len;
+
+    return OK;
+}
+
+/*
+ * Conversion from UTF-8 or latin1 to MacRoman.
+ * Input: "from[fromlen]"
+ * Output: "to[maxtolen]" length in "*tolenp"
+ * Unconverted rest in rest[*restlenp].
+ * Returns OK or FAIL.
+ */
+    int
+enc2macroman(from, fromlen, to, tolenp, maxtolen, rest, restlenp)
+    char_u	*from;
+    size_t	fromlen;
+    char_u	*to;
+    int		*tolenp;
+    int		maxtolen;
+    char_u	*rest;
+    int		*restlenp;
+{
+    CFStringRef	cfstr;
+    CFRange	r;
+    CFIndex	l;
+
+    *restlenp = 0;
+    cfstr = CFStringCreateWithBytes(NULL, from, fromlen,
+	    (enc_utf8) ? kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
+	    0);
+    while (cfstr == NULL && *restlenp < 3 && fromlen > 1)
+    {
+	rest[*restlenp++] = from[--fromlen];
+	cfstr = CFStringCreateWithBytes(NULL, from, fromlen,
+		(enc_utf8) ? kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
+		0);
+    }
+    if (cfstr == NULL)
+	return FAIL;
+
+    r.location = 0;
+    r.length = CFStringGetLength(cfstr);
+    if (r.length != CFStringGetBytes(cfstr, r,
+		kCFStringEncodingMacRoman,
+		0, /* no lossy conversion */
+		0, /* not external representation (since vim
+		    * handles this internally */
+		to, maxtolen, &l))
+    {
+	CFRelease(cfstr);
+	return FAIL;
+    }
+    CFRelease(cfstr);
+    *tolenp = l;
+    return OK;
+}
diff --git a/src/os_macosx.c b/src/os_macosx.c
index 871eb7e..d361958 100644
--- a/src/os_macosx.c
+++ b/src/os_macosx.c
@@ -338,8 +338,8 @@
  * TECCreateConverter() failed.
  */
     static size_t
-null_conv(iconv_t cd, const char** inbuf, size_t *inbytesleft,
-	char** outbuf, size_t *outbytesleft)
+null_conv(iconv_t cd, const char **inbuf, size_t *inbytesleft,
+	char **outbuf, size_t *outbytesleft)
 {
     const char* buf_in = inbuf && *inbuf ? *inbuf : NULL;
     char* buf_out = outbuf && *outbuf ? *outbuf : NULL;
@@ -375,14 +375,14 @@
 }
 
     size_t
-iconv(iconv_t cd, const char** inbuf, size_t *inbytesleft,
-	char** outbuf, size_t *outbytesleft)
+iconv(iconv_t cd, const char **inbuf, size_t *inbytesleft,
+	char **outbuf, size_t *outbytesleft)
 {
-    ConstTextPtr buf_in;
-    TextPtr buf_out;
-    ByteCount out_len, out_true;
-    ByteCount in_len, in_true;
-    OSStatus st;
+    ConstTextPtr    buf_in;
+    TextPtr	    buf_out;
+    ByteCount	    out_len, out_true;
+    ByteCount	    in_len, in_true;
+    OSStatus	    st;
 
     if (!cd)
     {
@@ -537,7 +537,7 @@
     }
 }
 
-    int*
+    int *
 iconv_errno()
 {
     return &last_errno;
@@ -549,8 +549,8 @@
 #define GETTEXT_BUFNUM		64
 #define GETTEXT_BUFSIZE		256
 
-    char*
-mch_gettext(const char* msgid)
+    char *
+mch_gettext(const char *msgid)
 {
     static char		buf[GETTEXT_BUFNUM][GETTEXT_BUFSIZE];
     static int		bufnum = 0;
@@ -593,18 +593,18 @@
 	CFRelease(strkey);
     if (strmsg)
 	CFRelease(strmsg);
-    return (char*)(msg ? msg : msgid);
+    return (char *)(msg ? msg : msgid);
 }
 
-    char*
-mch_bindtextdomain(const char* domain, const char* dirname)
+    char *
+mch_bindtextdomain(const char *domain, const char *dirname)
 {
     TRACE("mch_bindtextdomain(%s, %s)\n", domain, dirname);
     return (char*)dirname;
 }
 
-    char*
-mch_textdomain(const char* domain)
+    char *
+mch_textdomain(const char *domain)
 {
     TRACE("mch_textdomain(%s)\n", domain);
     return (char*)domain;
diff --git a/src/testdir/test11.in b/src/testdir/test11.in
index 6b296fd..510ed72 100644
--- a/src/testdir/test11.in
+++ b/src/testdir/test11.in
@@ -20,13 +20,12 @@
 :set bin
 :au FileWritePre    *.gz   '[,']!gzip
 :au FileWritePost   *.gz   undo
-:/start of testfile/,/end of testfile/w! Xtestfile.gz
+:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
 :au FileReadPost    *.gz   '[,']!gzip -d
 :$r Xtestfile.gz                " Read and decompress the testfile
 :?startstart?,$w! test.out      " Write contents of this file
 :au BufNewFile      *.c    read Xtest.c
-gg/^end of testfile
-:/start of test.c/+1,/end of test.c/-1w! Xtest.c
+:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
 :e! foo.c                       " Will load Xtest.c
 :au FileAppendPre   *.out  '[,']s/new/NEW/
 :au FileAppendPost  *.out  !cat Xtest.c >>test.out
diff --git a/src/vim.h b/src/vim.h
index eb7d2a7..dadb17e 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -91,7 +91,7 @@
     || defined(FEAT_GUI_AMIGA) \
     || defined(FEAT_GUI_PHOTON) \
     || defined(FEAT_GUI_KDE)
-# ifndef FEAT_GUI
+# if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES)
 #  define FEAT_GUI
 # endif
 #endif
@@ -160,6 +160,35 @@
 # define FEAT_X11
 #endif
 
+#ifdef NO_X11_INCLUDES
+    /* In os_mac_conv.c NO_X11_INCLUDES is defined to avoid X11 headers.
+     * Disable all X11 related things to avoid conflicts. */
+# ifdef FEAT_X11
+#  undef FEAT_X11
+# endif
+# ifdef FEAT_XCLIPBOARD
+#  undef FEAT_XCLIPBOARD
+# endif
+# ifdef FEAT_GUI_MOTIF
+#  undef FEAT_GUI_MOTIF
+# endif
+# ifdef FEAT_GUI_ATHENA
+#  undef FEAT_GUI_ATHENA
+# endif
+# ifdef FEAT_GUI_GTK
+#  undef FEAT_GUI_GTK
+# endif
+# ifdef FEAT_BEVAL_TIP
+#  undef FEAT_BEVAL_TIP
+# endif
+# ifdef FEAT_XIM
+#  undef FEAT_XIM
+# endif
+# ifdef FEAT_CLIENTSERVER
+#  undef FEAT_CLIENTSERVER
+# endif
+#endif
+
 /* Can't use "PACKAGE" here, conflicts with a Perl include file. */
 #ifndef VIMPACKAGE
 # define VIMPACKAGE	"vim"