Mercurial > emacs
comparison mac/inc/s-mac.h @ 32752:923b8d6d8277
Initial check-in: changes for building Emacs under Mac OS.
2000-10-23 Andrew Choi <akochoi@i-cable.com>
* dispextern.h [macintosh]: Include macgui.h instead of macterm.h.
* dispnew.c [macintosh]: Include macterm.h.
(init_display) [macintosh]: initialization for window system.
* emacs.c (main) [macintosh]: Call syms_of_textprop,
syms_of_macfns, syms_of_ccl, syms_of_fontset, syms_of_xterm,
syms_of_search, x_term_init, and init_keyboard before calling
init_window_once. Also, call syms_of_xmenu.
* fontset.c (syms_of_fontset) [macintosh]: Set ASCII font of
default fontset to Monaco.
* frame.c [macintosh]: Include macterm.h. Remove declarations of
NewMacWindow and DisposeMacWindow.
(make_terminal_frame) [macintosh]: Call make_mac_terminal_frame
instead of calling NewMacWindow and setting fields of
f->output_data.mac directly. Call init_frame_faces.
(Fdelete_frame) [macintosh]: Remove unused code.
(Fmodify_frame_parameters) [macintosh]: Call
x_set_frame_parameters instead of mac_set_frame_parameters.
* frame.h [macintosh]: Define menu_bar_lines field in struct
frame. Define FRAME_EXTERNAL_MENU_BAR macro.
* keyboard.c [macintosh]: Include macterm.h.
(kbd_buffer_get_event) [macintosh]: Generate delete_window_event
and menu_bar_activate_event type events as for X and NT.
(make_lispy_event) [macintosh]: Construct lisp events of type
MENU_BAR_EVENT as for X and NT.
* sysdep.c [macintosh]: Remove declaration for sys_signal.
Include stdlib.h. Remove definition of Vx_bitmap_file_path.
(sys_subshell) [macintosh]: Remove definition entirely.
(init_sys_modes) [macintosh]: Do not initialize Vwindow_system and
Vwindow_system_version here. Remove initialization of
Vx_bitmap_file_path.
(read_input_waiting): Correct the number of parameters passed to
read_socket_hook.
Move all Macintosh functions to mac/mac.c.
* term.c [macintosh]: Include macterm.h.
* window.c [macintosh]: Include macterm.h.
* xdisp.c [macintosh]: Include macterm.h. Declare
set_frame_menubar and pending_menu_activation.
(echo_area_display) [macintosh]: Do not return if terminal frame
is the selected frame.
(update_menu_bar) [macintosh]: Check FRAME_EXTERNAL_MENU_BAR (f).
Allow only the selected frame to set menu bar.
(redisplay_window) [macintosh]: Obtain menu bar to redisplay by
calling FRAME_EXTERNAL_MENU_BAR (f).
(display_menu_bar) [macintosh]: Check FRAME_MAC_P (f).
* xfaces.c [macintosh]: Include macterm.h. Define x_display_info
and check_x. Declare XCreateGC. Define x_create_gc and
x_free_gc. Initialize font_sort_order.
(x_face_list_fonts) [macintosh]: Use the same code as WINDOWSNT,
but call x_list_fonts instead of w32_list_fonts.
(Finternal_face_x_get_resource) [macintosh]: Do not call
display_x_get_resource.
(prepare_face_for_display) [macintosh]: Set xgcv.font.
(realize_x_face) [macintosh]: Load the font if it is specified in
ATTRS.
(syms_of_xfaces) [macintosh]: Initialize Vscalable_fonts_allowed
to Qt.
* cus-edit.el (custom-button-face): Use 3D look for mac.
(custom-button-pressed-face): Likewise.
* faces.el (set-face-attributes-from-resources): Handle mac frames
in the same way as x and w32 frames.
(face-valid-attribute-values): Likewise.
(read-face-attribute): Likewise.
(defined-colors): Likewise.
(color-defined-p): Likewise.
(color-values): Likewise.
(display-grayscale-p): Likewise.
(face-set-after-frame-default): Likewise.
(mode-line): Same default face as for x and w32.
(tool-bar): Likewise.
* frame.el: Remove call to frame-notice-user-settings at end of
the file.
* info.el (Info-fontify-node): make underlines invisible for mac
as for x, pc, and w32 frame types.
* term/mac-win.el: New file.
author | Andrew Choi <akochoi@shaw.ca> |
---|---|
date | Sun, 22 Oct 2000 16:50:16 +0000 |
parents | |
children | 01b93e5e53a7 |
comparison
equal
deleted
inserted
replaced
32751:2a657a9fae69 | 32752:923b8d6d8277 |
---|---|
1 /* Handcrafted s-mac.h file for building GNU Emacs on the Macintosh. | |
2 Copyright (C) 1999, 2000 Free Software Foundation, Inc. | |
3 | |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 2, or (at your option) | |
9 any later version. | |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */ | |
22 | |
23 /* | |
24 * Define symbols to identify the version of Unix this is. | |
25 * Define all the symbols that apply correctly. | |
26 */ | |
27 | |
28 /* #define UNIPLUS */ | |
29 /* #define USG5 */ | |
30 /* #define USG */ | |
31 /* #define HPUX */ | |
32 /* #define UMAX */ | |
33 /* #define BSD4_1 */ | |
34 /* #define BSD4_2 */ | |
35 /* #define BSD4_3 */ | |
36 /* #define BSD_SYSTEM */ | |
37 /* #define VMS */ | |
38 | |
39 /* SYSTEM_TYPE should indicate the kind of system you are using. | |
40 It sets the Lisp variable system-type. */ | |
41 | |
42 #define SYSTEM_TYPE "macos" | |
43 | |
44 /* NOMULTIPLEJOBS should be defined if your system's shell | |
45 does not have "job control" (the ability to stop a program, | |
46 run some other program, then continue the first one). */ | |
47 | |
48 #define NOMULTIPLEJOBS | |
49 | |
50 /* Emacs can read input using SIGIO and buffering characters itself, | |
51 or using CBREAK mode and making C-g cause SIGINT. | |
52 The choice is controlled by the variable interrupt_input. | |
53 | |
54 Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO) | |
55 | |
56 Emacs uses the presence or absence of the SIGIO macro to indicate | |
57 whether or not signal-driven I/O is possible. It uses | |
58 INTERRUPT_INPUT to decide whether to use it by default. | |
59 | |
60 SIGIO can be used only on systems that implement it (4.2 and 4.3). | |
61 CBREAK mode has two disadvantages | |
62 1) At least in 4.2, it is impossible to handle the Meta key properly. | |
63 I hear that in system V this problem does not exist. | |
64 2) Control-G causes output to be discarded. | |
65 I do not know whether this can be fixed in system V. | |
66 | |
67 Another method of doing input is planned but not implemented. | |
68 It would have Emacs fork off a separate process | |
69 to read the input and send it to the true Emacs process | |
70 through a pipe. */ | |
71 | |
72 /* #define INTERRUPT_INPUT */ | |
73 | |
74 /* Letter to use in finding device name of first pty, | |
75 if system supports pty's. 'a' means it is /dev/ptya0 */ | |
76 | |
77 /* #define FIRST_PTY_LETTER 'a' */ | |
78 | |
79 /* | |
80 * Define HAVE_TERMIOS if the system provides POSIX-style | |
81 * functions and macros for terminal control. | |
82 * | |
83 * Define HAVE_TERMIO if the system provides sysV-style ioctls | |
84 * for terminal control. | |
85 * | |
86 * Do not define both. HAVE_TERMIOS is preferred, if it is | |
87 * supported on your system. | |
88 */ | |
89 | |
90 /* #define HAVE_TERMIOS */ | |
91 #define HAVE_TERMIO | |
92 | |
93 /* | |
94 * Define HAVE_PTYS if the system supports pty devices. | |
95 */ | |
96 | |
97 /* #define HAVE_PTYS */ | |
98 | |
99 /* | |
100 * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate | |
101 * The 4.2 opendir, etc., library functions. | |
102 */ | |
103 | |
104 /* #define NONSYSTEM_DIR_LIBRARY */ | |
105 | |
106 /* Define this symbol if your system has the functions bcopy, etc. */ | |
107 | |
108 /* #define BSTRING */ | |
109 | |
110 /* subprocesses should be defined if you want to | |
111 have code for asynchronous subprocesses | |
112 (as used in M-x compile and M-x shell). | |
113 This is generally OS dependent, and not supported | |
114 under most USG systems. */ | |
115 | |
116 /* #define subprocesses */ | |
117 | |
118 /* If your system uses COFF (Common Object File Format) then define the | |
119 preprocessor symbol "COFF". */ | |
120 | |
121 /* #define COFF */ | |
122 | |
123 /* define MAIL_USE_FLOCK if the mailer uses flock | |
124 to interlock access to /usr/spool/mail/$USER. | |
125 The alternative is that a lock file named | |
126 /usr/spool/mail/$USER.lock. */ | |
127 | |
128 /* #define MAIL_USE_FLOCK */ | |
129 | |
130 /* Define CLASH_DETECTION if you want lock files to be written | |
131 so that Emacs can tell instantly when you try to modify | |
132 a file that someone else has modified in his Emacs. */ | |
133 | |
134 /* #define CLASH_DETECTION */ | |
135 | |
136 /* Define this if your operating system declares signal handlers to | |
137 have a type other than the usual. `The usual' is `void' for ANSI C | |
138 systems (i.e. when the __STDC__ macro is defined), and `int' for | |
139 pre-ANSI systems. If you're using GCC on an older system, __STDC__ | |
140 will be defined, but the system's include files will still say that | |
141 signal returns int or whatever; in situations like that, define | |
142 this to be what the system's include files want. */ | |
143 /* #define SIGTYPE int */ | |
144 | |
145 /* If the character used to separate elements of the executable path | |
146 is not ':', #define this to be the appropriate character constant. */ | |
147 /* #define SEPCHAR ':' */ | |
148 | |
149 /* ============================================================ */ | |
150 | |
151 /* Here, add any special hacks needed | |
152 to make Emacs work on this system. For example, | |
153 you might define certain system call names that don't | |
154 exist on your system, or that do different things on | |
155 your system and must be used only through an encapsulation | |
156 (Which you should place, by convention, in sysdep.c). */ | |
157 | |
158 /* Some compilers tend to put everything declared static | |
159 into the initialized data area, which becomes pure after dumping Emacs. | |
160 On these systems, you must #define static as nothing to foil this. | |
161 Note that emacs carefully avoids static vars inside functions. */ | |
162 | |
163 /* #define static */ | |
164 | |
165 /* ============================================================ */ | |
166 | |
167 /* After adding support for a new system, modify the large case | |
168 statement in the `configure' script to recognize reasonable | |
169 configuration names, and add a description of the system to | |
170 `etc/MACHINES'. | |
171 | |
172 If you've just fixed a problem in an existing configuration file, | |
173 you should also check `etc/MACHINES' to make sure its descriptions | |
174 of known problems in that configuration should be updated. */ | |
175 | |
176 #ifdef __MRC__ | |
177 #define __signal_max SIGTERM /* largest one in signal.h */ | |
178 #endif | |
179 | |
180 #define SIGHUP (__signal_max+1) | |
181 #define SIGQUIT (__signal_max+2) | |
182 #define SIGTRAP (__signal_max+3) | |
183 #define SIGKILL (__signal_max+4) | |
184 #define SIGALRM (__signal_max+5) | |
185 #define SIGPIPE (__signal_max+6) | |
186 #define NSIG (__signal_max+6) | |
187 | |
188 #ifdef __MRC__ | |
189 #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base) | |
190 #elif __MWERKS__ | |
191 #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->buffer_ptr - (FILE)->buffer) | |
192 #endif | |
193 | |
194 #ifdef __MWERKS__ | |
195 #include <errno.h> | |
196 #ifndef ENOENT | |
197 #define ENOENT 100 | |
198 #endif | |
199 #ifndef EXDEV | |
200 #define EXDEV 101 | |
201 #endif | |
202 #ifndef EEXIST | |
203 #define EEXIST 102 | |
204 #endif | |
205 #ifndef EINTR | |
206 #define EINTR 102 | |
207 #endif | |
208 #ifndef EACCES | |
209 #define EACCES 103 | |
210 #endif | |
211 #ifndef ENOTDIR | |
212 #define ENOTDIR 104 | |
213 #endif | |
214 #ifndef EIO | |
215 #define EIO 105 | |
216 #endif | |
217 #ifndef EBADF | |
218 #define EBADF 106 | |
219 #endif | |
220 #endif | |
221 | |
222 #define SYSTEM_PURESIZE_EXTRA (200*1024) | |
223 | |
224 /* don't know what this will do, but sysdep.c needs it */ | |
225 #define DATA_START 0 | |
226 | |
227 /* Limited by CW's 32K limit on local data! */ | |
228 #define READ_BUF_SIZE (8 << 10) | |
229 | |
230 #include <utsname.h> | |
231 void read_input_waiting (); | |
232 | |
233 /* #define GETTIMEOFDAY_ONE_ARGUMENT */ | |
234 | |
235 #define SYSV_SYSTEM_DIR | |
236 | |
237 #define SYSTEM_MALLOC | |
238 | |
239 /* Constants such as O_RDONLY are defined in fcntl.h. Best solution is | |
240 really to patch individual files to include it: callproc.c, doc.c, | |
241 fileio.c, getloadavg.c, lread.c, and termcap.c. */ | |
242 #include <fcntl.h> | |
243 | |
244 #define _setjmp setjmp | |
245 #define _longjmp longjmp | |
246 | |
247 #define _exit exit | |
248 | |
249 #define main emacs_main | |
250 | |
251 /* Include this here so it won't be include again when #include in emacs | |
252 sources. Then undefine the macro definitions in it for unlink, read, | |
253 write, access, and rmdir. */ | |
254 #ifdef __MWERKS__ | |
255 #include <unistd.h> | |
256 #endif | |
257 | |
258 #undef unlink | |
259 #define unlink sys_unlink | |
260 #undef read | |
261 #define read sys_read | |
262 #undef write | |
263 #define write sys_write | |
264 #undef access | |
265 #define access sys_access | |
266 #undef rmdir | |
267 #define rmdir sys_rmdir | |
268 | |
269 #define open sys_open | |
270 #define creat sys_creat | |
271 | |
272 #define rename sys_rename | |
273 #define fopen sys_fopen | |
274 #define signal sys_signal | |
275 | |
276 #define gmtime sys_gmtime | |
277 #define localtime sys_localtime | |
278 #define ctime sys_ctime | |
279 #define time sys_time | |
280 | |
281 #ifndef bcmp | |
282 #define bcmp(s1, s2, n) memcmp ((s1), (s2), (n)) | |
283 #endif | |
284 #ifndef bcopy | |
285 #define bcopy(s, d, n) memcpy ((d), (s), (n)) | |
286 #endif | |
287 #ifndef bzero | |
288 #define bzero(s, n) memset ((s), 0, (n)) | |
289 #endif | |
290 | |
291 extern char *index (const char *, int); | |
292 | |
293 /* MPW strftime broken for "%p" format */ | |
294 #ifdef __MRC__ | |
295 #define strftime sys_strftime | |
296 #endif | |
297 | |
298 #include <time.h> | |
299 /* Editfns.c includes types.h which indirectly includes time.h before config.h. | |
300 So gmtime (localtime) is defined and not sys_gmtime (sys_localtime). Define | |
301 here explicitly. */ | |
302 extern struct tm *sys_gmtime (const time_t *); | |
303 extern struct tm *sys_localtime (const time_t *); | |
304 extern char *sys_ctime (const time_t *); | |
305 extern time_t sys_time (time_t *); | |
306 | |
307 /* Emacs.c includes signal.h before config.h. Define this to make it happy. */ | |
308 #ifdef __MRC__ | |
309 #include <signal.h> | |
310 extern __sigfun sys_signal (int signal_num, __sigfun signal_func); | |
311 #elif __MWERKS__ | |
312 #include <signal.h> | |
313 extern __signal_func_ptr sys_signal (int signal_num, __signal_func_ptr signal_func); | |
314 #endif | |
315 | |
316 extern double atof (const char *); | |
317 | |
318 #define volatile | |
319 | |
320 #define SYMS_SYSTEM syms_of_mac() |