diff options
author | Bram Moolenaar <Bram@vim.org> | 2004-07-18 21:34:53 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2004-07-18 21:34:53 +0000 |
commit | ab79bcbac383aa26fec23f8610995122a9ff4be6 (patch) | |
tree | 87d08c555b6a806c4cfffde6b42886e5b4094f83 | |
parent | 21cf823a906f1f66391a145a976fdae8e98e0394 (diff) | |
download | vim-ab79bcbac383aa26fec23f8610995122a9ff4be6.zip |
updated for version 7.0010
-rw-r--r-- | Filelist | 9 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 26 | ||||
-rw-r--r-- | runtime/doc/tags | 3 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 42 | ||||
-rw-r--r-- | runtime/doc/version7.txt | 16 | ||||
-rw-r--r-- | src/Makefile | 30 | ||||
-rwxr-xr-x | src/auto/configure | 8 | ||||
-rw-r--r-- | src/config.mk.in | 2 | ||||
-rw-r--r-- | src/configure.in | 7 | ||||
-rw-r--r-- | src/eval.c | 79 | ||||
-rw-r--r-- | src/fileio.c | 78 | ||||
-rw-r--r-- | src/mbyte.c | 111 | ||||
-rw-r--r-- | src/mysign | 2 | ||||
-rw-r--r-- | src/option.c | 8 | ||||
-rw-r--r-- | src/os_mac.h | 38 | ||||
-rw-r--r-- | src/os_mac.pbproj/project.pbxproj | 1537 | ||||
-rw-r--r-- | src/os_mac_conv.c | 230 | ||||
-rw-r--r-- | src/os_macosx.c | 34 | ||||
-rw-r--r-- | src/testdir/test11.in | 5 | ||||
-rw-r--r-- | src/vim.h | 31 |
20 files changed, 2038 insertions, 258 deletions
@@ -358,7 +358,14 @@ SRC_MAC = \ 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 e51d37267..400eb76a5 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 @@ bufname( {expr}) String Name of the buffer {expr} 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_read( {serverid}) String read reply string 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 @@ byte2line({byte}) *byte2line()* {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 @@ rename({from}, {to}) *rename()* 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 fe79d84d1..e44ac444f 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -5789,6 +5789,7 @@ remove-filetype filetype.txt /*remove-filetype* 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 @@ s<CR> change.txt /*s<CR>* 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 fa1ddffd2..ba4af3ef0 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 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *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 @@ For version 7.0: - 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 @@ Built-in script language: 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 a1c902cf2..a7f7d1997 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 @@ Win32: The ":winpos" command now also works in the console. (Vipin Aravind) 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 @@ For lisp indenting and matching parenthesis: (Sergey Khorev) ============================================================================== 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 @@ When 'comments' includes multi-byte characters inserting the middle part and 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 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 @@ -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" |