1 /* vi:set ts=8 sts=4 sw=4 noet: 2 * 3 * VIM - Vi IMproved by Bram Moolenaar 4 * 5 * Do ":help uganda" in Vim to read copying and usage conditions. 6 * Do ":help credits" in Vim to see a list of people who contributed. 7 */ 8 9 // Before Including the MacOS specific files, 10 // lets set the OPAQUE_TOOLBOX_STRUCTS to 0 so we 11 // can access the internal structures. 12 // (Until fully Carbon compliant) 13 // TODO: Can we remove this? (Dany) 14 #if 0 15 # define OPAQUE_TOOLBOX_STRUCTS 0 16 #endif 17 18 // Include MAC_OS_X_VERSION_* macros 19 #ifdef HAVE_AVAILABILITYMACROS_H 20 # include <AvailabilityMacros.h> 21 #endif 22 23 /* 24 * Macintosh machine-dependent things. 25 * 26 * Include the Mac header files, unless also compiling with X11 (the header 27 * files have many conflicts). 28 */ 29 #ifdef FEAT_GUI_MAC 30 # include <Quickdraw.h> // Apple calls it QuickDraw.h... 31 # include <ToolUtils.h> 32 # include <LowMem.h> 33 # include <Scrap.h> 34 # include <Sound.h> 35 # include <TextUtils.h> 36 # include <Memory.h> 37 # include <OSUtils.h> 38 # include <Files.h> 39 # include <Script.h> 40 #endif 41 42 /* 43 * Unix interface 44 */ 45 #if defined(__APPLE_CC__) // for Project Builder and ... 46 # include <unistd.h> 47 // Get stat.h or something similar. Comment: How come some OS get in in vim.h 48 # include <sys/stat.h> 49 // && defined(HAVE_CURSE) 50 // The curses.h from MacOS X provides by default some BACKWARD compatibility 51 // definition which can cause us problem later on. So we undefine a few of them. 52 # include <curses.h> 53 # undef reg 54 # undef ospeed 55 // OK defined to 0 in MacOS X 10.2 curses! Remove it, we define it to be 1. 56 # undef OK 57 #endif 58 #include <signal.h> 59 #include <errno.h> 60 #include <stdio.h> 61 #include <stdlib.h> 62 #include <time.h> 63 #include <dirent.h> 64 65 /* 66 * MacOS specific #define 67 */ 68 69 // This will go away when CMD_KEY fully tested 70 #define USE_CMD_KEY 71 // On MacOS X use the / not the : 72 // TODO: Should file such as ~/.vimrc reside instead in 73 // ~/Library/Vim or ~/Library/Preferences/org.vim.vim/ ? (Dany) 74 // When compiled under MacOS X (including CARBON version) 75 // we use the Unix File path style. Also when UNIX is defined. 76 #define USE_UNIXFILENAME 77 78 79 /* 80 * Generic Vim #define for Mac 81 */ 82 83 #define FEAT_SOURCE_FFS 84 #define FEAT_SOURCE_FF_MAC 85 86 #define USE_EXE_NAME // to find $VIM 87 #define CASE_INSENSITIVE_FILENAME // ignore case when comparing file names 88 #define SPACE_IN_FILENAME 89 90 #define USE_FNAME_CASE // make ":e os_Mac.c" open the file in its 91 // original case, as "os_mac.c" 92 #define BINARY_FILE_IO 93 #define EOL_DEFAULT EOL_MAC 94 #define HAVE_AVAIL_MEM 95 96 #ifndef HAVE_CONFIG_H 97 # define HAVE_STRING_H 98 # define HAVE_STRCSPN 99 # define HAVE_MEMSET 100 # define USE_TMPNAM // use tmpnam() instead of mktemp() 101 # define HAVE_FCNTL_H 102 # define HAVE_QSORT 103 # define HAVE_ST_MODE // have stat.st_mode 104 # define HAVE_MATH_H 105 106 # if defined(__DATE__) && defined(__TIME__) 107 # define HAVE_DATE_TIME 108 # endif 109 # define HAVE_STRFTIME 110 #endif 111 112 /* 113 * Names for the EXRC, HELP and temporary files. 114 * Some of these may have been defined in the makefile. 115 */ 116 117 #ifndef SYS_VIMRC_FILE 118 # define SYS_VIMRC_FILE "$VIM/vimrc" 119 #endif 120 #ifndef SYS_GVIMRC_FILE 121 # define SYS_GVIMRC_FILE "$VIM/gvimrc" 122 #endif 123 #ifndef SYS_MENU_FILE 124 # define SYS_MENU_FILE "$VIMRUNTIME/menu.vim" 125 #endif 126 #ifndef SYS_OPTWIN_FILE 127 # define SYS_OPTWIN_FILE "$VIMRUNTIME/optwin.vim" 128 #endif 129 #ifndef VIM_DEFAULTS_FILE 130 # define VIM_DEFAULTS_FILE "$VIMRUNTIME/defaults.vim" 131 #endif 132 #ifndef EVIM_FILE 133 # define EVIM_FILE "$VIMRUNTIME/evim.vim" 134 #endif 135 136 #ifdef FEAT_GUI 137 # ifndef USR_GVIMRC_FILE 138 # define USR_GVIMRC_FILE "~/.gvimrc" 139 # endif 140 # ifndef GVIMRC_FILE 141 # define GVIMRC_FILE "_gvimrc" 142 # endif 143 #endif 144 #ifndef USR_VIMRC_FILE 145 # define USR_VIMRC_FILE "~/.vimrc" 146 #endif 147 148 #ifndef USR_EXRC_FILE 149 # define USR_EXRC_FILE "~/.exrc" 150 #endif 151 152 #ifndef VIMRC_FILE 153 # define VIMRC_FILE "_vimrc" 154 #endif 155 156 #ifndef EXRC_FILE 157 # define EXRC_FILE "_exrc" 158 #endif 159 160 #ifndef DFLT_HELPFILE 161 # define DFLT_HELPFILE "$VIMRUNTIME/doc/help.txt" 162 #endif 163 164 #ifndef FILETYPE_FILE 165 # define FILETYPE_FILE "filetype.vim" 166 #endif 167 #ifndef FTPLUGIN_FILE 168 # define FTPLUGIN_FILE "ftplugin.vim" 169 #endif 170 #ifndef INDENT_FILE 171 # define INDENT_FILE "indent.vim" 172 #endif 173 #ifndef FTOFF_FILE 174 # define FTOFF_FILE "ftoff.vim" 175 #endif 176 #ifndef FTPLUGOF_FILE 177 # define FTPLUGOF_FILE "ftplugof.vim" 178 #endif 179 #ifndef INDOFF_FILE 180 # define INDOFF_FILE "indoff.vim" 181 #endif 182 183 #ifndef SYNTAX_FNAME 184 # define SYNTAX_FNAME "$VIMRUNTIME/syntax/%s.vim" 185 #endif 186 187 #ifdef FEAT_VIMINFO 188 # ifndef VIMINFO_FILE 189 # define VIMINFO_FILE "~/.viminfo" 190 # endif 191 #endif // FEAT_VIMINFO 192 193 #ifndef DFLT_BDIR 194 # define DFLT_BDIR "." // default for 'backupdir' 195 #endif 196 197 #ifndef DFLT_DIR 198 # define DFLT_DIR "." // default for 'directory' 199 #endif 200 201 #ifndef DFLT_VDIR 202 # define DFLT_VDIR "$VIM/vimfiles/view" // default for 'viewdir' 203 #endif 204 205 #define DFLT_ERRORFILE "errors.err" 206 207 #ifndef DFLT_RUNTIMEPATH 208 # define DFLT_RUNTIMEPATH "~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after" 209 #endif 210 #ifndef CLEAN_RUNTIMEPATH 211 # define CLEAN_RUNTIMEPATH "$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after" 212 #endif 213 214 /* 215 * Macintosh has plenty of memory, use large buffers 216 */ 217 #define CMDBUFFSIZE 1024 // size of the command processing buffer 218 219 #ifndef DFLT_MAXMEM 220 # define DFLT_MAXMEM 512 // use up to 512 Kbyte for buffer 221 #endif 222 223 #ifndef DFLT_MAXMEMTOT 224 # define DFLT_MAXMEMTOT 2048 // use up to 2048 Kbyte for Vim 225 #endif 226 227 #define WILDCHAR_LIST "*?[{`$" 228 229 /**************/ 230 #define mch_rename(src, dst) rename(src, dst) 231 #define mch_remove(x) unlink((char *)(x)) 232 #ifndef mch_getenv 233 # if defined(__APPLE_CC__) 234 # define mch_getenv(name) ((char_u *)getenv((char *)(name))) 235 # define mch_setenv(name, val, x) setenv(name, val, x) 236 # else 237 // vim_getenv() is in pty.c 238 # define USE_VIMPTY_GETENV 239 # define mch_getenv(x) vimpty_getenv(x) 240 # define mch_setenv(name, val, x) setenv(name, val, x) 241 # endif 242 #endif 243 244 #ifndef HAVE_CONFIG_H 245 # ifdef __APPLE_CC__ 246 // Assuming compiling for MacOS X 247 // Trying to take advantage of the prebinding 248 # define HAVE_TGETENT 249 # define OSPEED_EXTERN 250 # define UP_BC_PC_EXTERN 251 # endif 252 #endif 253 254 // Some "prep work" definition to be able to compile the MacOS X 255 // version with os_unix.c instead of os_mac.c. Based on the result 256 // of ./configure for console MacOS X. 257 258 #ifndef SIGPROTOARG 259 # define SIGPROTOARG (int) 260 #endif 261 #ifndef SIGDEFARG 262 # define SIGDEFARG(s) (s) int s UNUSED; 263 #endif 264 #ifndef SIGDUMMYARG 265 # define SIGDUMMYARG 0 266 #endif 267 #undef HAVE_AVAIL_MEM 268 #ifndef HAVE_CONFIG_H 269 # define RETSIGTYPE void 270 # define SIGRETURN return 271 //# define USE_SYSTEM // Output ship do debugger :(, but not compile 272 # define HAVE_SYS_WAIT_H 1 // Attempt 273 # define HAVE_TERMIOS_H 1 274 # define SYS_SELECT_WITH_SYS_TIME 1 275 # define HAVE_SELECT 1 276 # define HAVE_SYS_SELECT_H 1 277 # define HAVE_PUTENV 278 # define HAVE_SETENV 279 # define HAVE_RENAME 280 #endif 281 282 #if !defined(HAVE_CONFIG_H) 283 # define HAVE_PUTENV 284 #endif 285 286 // A Mac constant causing big problem to syntax highlighting 287 #define UNKNOWN_CREATOR '\?\?\?\?' 288