summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2004-07-18 21:34:53 +0000
committerBram Moolenaar <Bram@vim.org>2004-07-18 21:34:53 +0000
commitab79bcbac383aa26fec23f8610995122a9ff4be6 (patch)
tree87d08c555b6a806c4cfffde6b42886e5b4094f83 /src
parent21cf823a906f1f66391a145a976fdae8e98e0394 (diff)
downloadvim-git-ab79bcbac383aa26fec23f8610995122a9ff4be6.tar.gz
updated for version 7.0010v7.0010
Diffstat (limited to 'src')
-rw-r--r--src/Makefile30
-rwxr-xr-xsrc/auto/configure8
-rw-r--r--src/config.mk.in2
-rw-r--r--src/configure.in7
-rw-r--r--src/eval.c79
-rw-r--r--src/fileio.c78
-rw-r--r--src/mbyte.c111
-rw-r--r--src/mysign2
-rw-r--r--src/option.c8
-rw-r--r--src/os_mac.h38
-rw-r--r--src/os_mac.pbproj/project.pbxproj1537
-rw-r--r--src/os_mac_conv.c230
-rw-r--r--src/os_macosx.c34
-rw-r--r--src/testdir/test11.in5
-rw-r--r--src/vim.h31
15 files changed, 1973 insertions, 227 deletions
diff --git a/src/Makefile b/src/Makefile
index bfdd76939..e080477d6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1196,7 +1196,9 @@ CARBONGUI_LIBS2 =
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 @@ PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
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 @@ types.vim: $(TAGS_SRC) $(TAGS_INCL)
#
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 @@ clean celan: testclean
-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_qnx.o: os_qnx.c
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 @@ Makefile:
###############################################################################
### 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 @@ ICONS = $(RESDIR)/$(ICON_APP)
#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-rsrc: os_mac.rsr.hqx
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 220a981be..4b03c678b 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -1239,11 +1239,11 @@ echo "configure:1230: checking if Darwin files are there" >&5
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 @@ else
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 ed5f686ff..d5103ecd4 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -126,6 +126,8 @@ GUI_INSTALL = $(@GUITYPE@_INSTALL)
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 a71c20ddf..4b119f32e 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -103,15 +103,16 @@ if test "`(uname) 2>/dev/null`" = Darwin; then
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 fa3bad6ab..21c10fd67 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -263,6 +263,7 @@ static void f_bufname __ARGS((VAR argvars, VAR retvar));
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_foreground __ARGS((VAR argvars, VAR retvar));
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 @@ static struct fst
{"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 @@ static struct fst
{"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 @@ f_byte2line(argvars, retvar)
}
/*
+ * "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 @@ f_remote_foreground(argvars, retvar)
#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 02e5ad1e1..d1c11a046 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1498,40 +1498,14 @@ retry:
# 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 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit,
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 @@ buf_write_bytes(ip)
/*
* 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 @@ buf_write_bytes(ip)
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)
+ if (enc2macroman(from, fromlen,
+ ip->bw_conv_buf, &len, ip->bw_conv_buflen,
+ ip->bw_rest, &ip->bw_restlen) == FAIL)
{
- ip->bw_rest[ip->bw_restlen++] = from[--fromlen];
- cfstr = CFStringCreateWithBytes(NULL, from, fromlen,
- (enc_utf8) ?
- kCFStringEncodingUTF8 : kCFStringEncodingISOLatin1,
- 0);
- }
- if (cfstr == NULL)
- {
- 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 @@ static AutoPat *first_autopat[NUM_EVENTS] =
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 db7c6524d..407f6674b 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5553,99 +5553,8 @@ convert_input_safe(ptr, len, maxlen, restp, restlenp)
}
#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 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
# 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 dea18b49f..1581aa743 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 0dee50b97..bcf418378 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3237,7 +3237,15 @@ set_helplang_default(lang)
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 799176967..940e267b9 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 000000000..cacf9c9ff
--- /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 000000000..3dfacfe68
--- /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 871eb7e5c..d361958ad 100644
--- a/src/os_macosx.c
+++ b/src/os_macosx.c
@@ -338,8 +338,8 @@ ICONV_OPEN_ERR:
* 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 @@ null_conv(iconv_t cd, const char** inbuf, size_t *inbytesleft,
}
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 @@ iconv_close(iconv_t cd)
}
}
- int*
+ int *
iconv_errno()
{
return &last_errno;
@@ -549,8 +549,8 @@ iconv_errno()
#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 @@ MCH_GETTEXT_FINISH:
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 6b296fd4e..510ed7236 100644
--- a/src/testdir/test11.in
+++ b/src/testdir/test11.in
@@ -20,13 +20,12 @@ STARTTEST
: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 eb7d2a7f7..dadb17e2f 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"