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.
This commit is contained in:
Andrew Choi 2000-10-22 16:50:16 +00:00
parent d371949a0f
commit 1a578e9be2
53 changed files with 37472 additions and 1627 deletions

View file

@ -1,3 +1,28 @@
2000-10-23 Andrew Choi <akochoi@i-cable.com>
* 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.
2000-10-22 Dave Love <fx@gnu.org>
* textmodes/refill.el: New file.

View file

@ -1711,6 +1711,9 @@ and `face'."
(((type w32) (class color)) ; Like default modeline
(:box (:line-width 2 :style released-button)
:background "lightgrey" :foreground "black"))
(((type mac) (class color)) ; Like default modeline
(:box (:line-width 2 :style released-button)
:background "lightgrey" :foreground "black"))
(t
nil))
"Face used for buttons in customization buffers."
@ -1724,6 +1727,9 @@ and `face'."
(((type w32) (class color))
(:box (:line-width 2 :style pressed-button)
:background "lightgrey" :foreground "black"))
(((type mac) (class color))
(:box (:line-width 2 :style pressed-button)
:background "lightgrey" :foreground "black"))
(t
(:inverse-video t)))
"Face used for buttons in customization buffers."

View file

@ -300,7 +300,7 @@ specifies an invalid attribute."
(defun set-face-attributes-from-resources (face frame)
"Set attributes of FACE from X resources for FRAME."
(when (memq (framep frame) '(x w32))
(when (memq (framep frame) '(x w32 mac))
(dolist (definition face-x-resources)
(let ((attribute (car definition)))
(dolist (entry (cdr definition))
@ -777,7 +777,7 @@ an integer value."
((:height)
'integerp)
(:stipple
(and (memq window-system '(x w32))
(and (memq window-system '(x w32 mac))
(mapcar #'list
(apply #'nconc
(mapcar (lambda (dir)
@ -1231,7 +1231,7 @@ is used. If nil or omitted, use the selected frame."
The argument FRAME specifies which frame to try.
The value may be different for frames on different display types.
If FRAME doesn't support colors, the value is nil."
(if (memq (framep (or frame (selected-frame))) '(x w32))
(if (memq (framep (or frame (selected-frame))) '(x w32 mac))
(xw-defined-colors frame)
(mapcar 'car (tty-color-alist frame))))
(defalias 'x-defined-colors 'defined-colors)
@ -1243,7 +1243,7 @@ If COLOR is the symbol `unspecified' or one of the strings
\"unspecified-fg\" or \"unspecified-bg\", the value is nil."
(if (member color '(unspecified "unspecified-bg" "unspecified-fg"))
nil
(if (member (framep (or frame (selected-frame))) '(x w32))
(if (member (framep (or frame (selected-frame))) '(x w32 mac))
(xw-color-defined-p color frame)
(numberp (tty-color-translate color frame)))))
(defalias 'x-color-defined-p 'color-defined-p)
@ -1258,7 +1258,7 @@ If COLOR is the symbol `unspecified' or one of the strings
\"unspecified-fg\" or \"unspecified-bg\", the value is nil."
(if (member color '(unspecified "unspecified-fg" "unspecified-bg"))
nil
(if (memq (framep (or frame (selected-frame))) '(x w32))
(if (memq (framep (or frame (selected-frame))) '(x w32 mac))
(xw-color-values color frame)
(tty-color-values color frame))))
(defalias 'x-color-values 'color-values)
@ -1268,7 +1268,7 @@ If COLOR is the symbol `unspecified' or one of the strings
The optional argument DISPLAY specifies which display to ask about.
DISPLAY should be either a frame or a display name (a string).
If omitted or nil, that stands for the selected frame's display."
(if (memq (framep-on-display display) '(x w32))
(if (memq (framep-on-display display) '(x w32 mac))
(xw-display-color-p display)
(tty-display-color-p display)))
(defalias 'x-display-color-p 'display-color-p)
@ -1445,7 +1445,7 @@ Initialize colors of certain faces from frame parameters."
(when spec
(face-spec-set face spec frame))
(internal-merge-in-global-face face frame)
(when (memq window-system '(x w32))
(when (memq window-system '(x w32 mac))
(make-face-x-resource-internal face frame))))
;; Initialize attributes from frame parameters.
@ -1527,7 +1527,7 @@ created."
(defface mode-line
'((((type x w32) (class color))
'((((type x w32 mac) (class color))
(:box (:line-width 2 :style released-button)
:background "grey75" :foreground "black"))
(t
@ -1572,7 +1572,7 @@ created."
(defface tool-bar
'((((type x w32) (class color))
'((((type x w32 mac) (class color))
(:box (:line-width 1 :style released-button)
:background "grey75" :foreground "black"))
(((type x) (class mono))

View file

@ -1164,4 +1164,3 @@ If nil, don't show a cursor except in the selected window."
(provide 'frame)
;;; frame.el ends here
(frame-notice-user-settings):

View file

@ -2427,7 +2427,7 @@ the variable `Info-file-list-for-emacs'."
;; This is a serious problem for trying to handle multiple
;; frame types at once. We want this text to be invisible
;; on frames that can display the font above.
(if (memq (framep (selected-frame)) '(x pc w32))
(if (memq (framep (selected-frame)) '(x pc w32 mac))
(add-text-properties (match-end 1) (match-end 2)
'(invisible t intangible t))))
(goto-char (point-min))

1075
lisp/term/mac-win.el Normal file

File diff suppressed because it is too large Load diff

10
mac/.emacs Normal file
View file

@ -0,0 +1,10 @@
; MPW does not allow saving a file with name beginning with a period.
; Use Emacs or SimpleText to edit and save this file instead.
(cond ((fboundp 'global-font-lock-mode)
;; Turn on font-lock in all modes that support it
(global-font-lock-mode t)
;; Maximum colors
(setq font-lock-maximum-decoration t)))
(setq default-frame-alist '((font . "fontset-mac")))

67
mac/ChangeLog Normal file
View file

@ -0,0 +1,67 @@
2000-10-20 Andrew Choi <akochoi@users.sourceforge.net>
* INSTALL: New file.
* README: New file.
* TODO: New file.
* emacs-cw5.mcp.xml: New file.
* emacs-cw6.mcp.xml: New file.
* makefile.MPW: New file.
* inc/alloca.h: New file.
* inc/cmdline-defs-cw5.h: New file.
* inc/cmdline-defs-cw6.h: New file.
* inc/config.h: New file.
* inc/dirent.h: New file.
* inc/epaths.h: New file.
* inc/m-mac.h: New file.
* inc/macgui.h: New file.
* inc/macterm.h: New file.
* inc/pwd.h: New file.
* inc/s-mac.h: New file.
* inc/termio.h: New file.
* inc/utime.h: New file.
* inc/utsname.h: New file.
* inc/sys/file.h: New file.
* inc/sys/ioctl.h: New file.
* inc/sys/param.h: New file.
* inc/sys/stat.h: New file.
* inc/sys/time.h: New file.
* inc/sys/types.h: New file.
* src/Emacs.r: New file.
* src/EmacsMPW.r: New file.
* src/chdir.c: New file.
* src/mac.c: New file.
* src/macfns.c: New file.
* src/macmenu.c: New file.
* src/macterm.c: New file.

105
mac/INSTALL Normal file
View file

@ -0,0 +1,105 @@
* BUILDING EMACS ON THE MAC OS -*- outline -*-
You can use either Metrowerks CodeWarrior Pro 5 or 6 or MPW-GM
(Aug. 2000) to build Emacs. MPW-GM can be downloaded free of charge
from Apple at
http://developer.apple.com/tools/mpw-tools/
You will need MPW-GM to build the make-docfile utility and to generate
the doc string file DOC.
To decompress files, you can use MacGzip from
http://persephone.cps.unizar.es/~spd/gzip
and to untar them, you can use tar 4.0 from
http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/cmp/tar-40b.hqx
(Optional) If you wish to fetch files from the Emacs CVS repository
directly to your Mac, you can use the CVS client MacCVS, which can be
downloaded from
http://www.wincvs.org/
(Optional) A subset of the fonts from the GNU intlfonts-1.2
distribution converted to NFNT format can be obtained from
ftp://mac-emacs.sourceforge.net/pub/mac-emacs/GNU-fonts.smi.bin
* BUILDING EMACS
To build Emacs in the MPW Shell, simply set the directory to
...:emacs:mac: and build the target Emacs of the make file
makefile.mpw. I.e., execute the commands
make Emacs -f makefile.MPW > Emacs.MakeScript
Emacs.MakeScript
To build Emacs using CodeWarrior, start up the CodeWarrior IDE, choose
File->Import Project... and select the file emacs-cw5.mcp.xml or
emacs-cw6.mcp.xml, depending on which verison of CodeWarrior used.
When prompted to save the project, navigate to same directory as the
file emacs-cw[56].mcp.xml, name it emacs-cw5.mcp or emacs-cw6.mcp, and
save it there. Then choose Project->Make. Note that this does not
build the DOC file. To do so, use MPW and build the target "Doc" in
makefile.MPW.
Once built, the Emacs application (Emacs CW or Emacs MPW) can be
launched where it is created.
To build an optimized version of Emacs in CodeWarrior, change the
value in the Emacs Settings->Code Generation->Global Optimization
dialog. To build a version for profiling, check the Profiler
Information box in the Emacs Settings->Code Generation->PPC Processor
dialog and include the Profiler PPC.Lib library.
To build optimized or debugging version of Emacs in MPW, follow the
comment in makefile.MPW to enable the -opt speed or -sym on option
(see note below).
The Mac version requires compiled Lisp files to be present in the lisp
directory to run properly. It is cumbersome to bootstrap from only
the Lisp source files. One way of getting the compiled Lisp files is
to build Emacs once on, say, a Unix system and transfer that directory
to the Mac. Note that linefeed conversion must be disabled when
transferring compiled Lisp files.
An alternative is to unzip and untar the archive lisp-elc.tgz. An
older version of frame.elc in the archive may cause a problem when the
Mac version starts up. If this is the case, simply remove or rename
that file. Then once Emacs runs, you can invoke
byte-recompile-directory on the lisp directory to byte-compile all
out-of-date Lisp files.
You may also need to run update-autoloads-from-directories on the lisp
directory to bring loaddefs.el up-to-date.
* NOTES
Emacs should build and run on a PowerMac running Mac OS 8.1 - 9.0.
You will need around 100 MB of disk space for the source files and
intermediate files.
It will not run on machines with more than 256 MB of physical or
virtual memory.
Currently there is no support for building the LEIM directory on the
Mac. However, it can be built on another platform and transferred to
the Mac.
When Emacs is built with "-opt speed" enabled in makefile.MPW,
optimization causes the functions reset_buffer_local_variables in
buffer.c and syms_of_lread in lread.c to crash. Avoid this by
enclosing them in the following pragmas.
#pragma options opt off
<function definition...>
#pragma options opt reset
To use the same icon as when Emacs is built on Windows NT, define
GNU_ICON in mac/src/Emacs.r.

33
mac/README Normal file
View file

@ -0,0 +1,33 @@
GNU Emacs for Mac OS
This directory contains the files needed to build GNU Emacs on the Mac
OS (8.1-9.0). Many of the major features of the Unix version are
supported: multiple frames, colors, scroll bars, menu bars, use of the
mouse, fontsets, international characters, input methods, and coding
systems.
Mac OS specific support includes document drag-and-drop in the Finder,
transfer of text to and from other applications via the clipboard, and
sending AppleScript commands to other applications from Emacs.
The following are not yet supported: unexec (dump-emacs), asynchronous
subprocesses (start-process), and networking
(open-network-connection).
There is basic support for synchronous subprocesses (call-process)
although Unix commands that are used will need to be ported to the
Mac.
Metrowerks CodeWarrior Pro 5 or Pro 6 or MPW-GM (August 2000) can be
used to build Emacs on the Mac OS. See the INSTALL file in this
directory for instructions on building Emacs.
Binary distributions are available at
http://mac-emacs.sourceforge.net/index.html
At this site you can also find an FAQ, mailing lists, and dicussion
forums for discussing issues related to running GNU Emacs on Mac OS.
Andrew.
<akochoi@users.sourceforge.net>

2053
mac/emacs-cw5.mcp.xml Normal file

File diff suppressed because it is too large Load diff

2309
mac/emacs-cw6.mcp.xml Normal file

File diff suppressed because it is too large Load diff

8
mac/inc/alloca.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef _ALLOCA_H_
#define _ALLOCA_H_
#if __MRC__
void *__alloca(size_t size);
#endif
#endif

View file

@ -0,0 +1,2 @@
#define emacs 1
#define HAVE_CONFIG_H

View file

@ -0,0 +1,4 @@
#define emacs 1
#define HAVE_CONFIG_H
#define CODEWARRIOR_VERSION_6

570
mac/inc/config.h Normal file
View file

@ -0,0 +1,570 @@
/* Handcrafted Emacs site configuration file for Mac OS. -*- C -*- */
/* GNU Emacs site configuration template file. -*- C -*-
Copyright (C) 1988, 1993, 1994, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* No code in Emacs #includes config.h twice, but some of the code
intended to work with other packages as well (like gmalloc.c)
think they can include it as many times as they like. */
#ifndef EMACS_CONFIG_H
#define EMACS_CONFIG_H
/* These are all defined in the top-level Makefile by configure.
They're here only for reference. */
/* Define GNU_MALLOC if you want to use the GNU memory allocator. */
/* #undef GNU_MALLOC */
/* Define if you are using the GNU C Library. */
/* #undef DOUG_LEA_MALLOC */
/* Define REL_ALLOC if you want to use the relocating allocator for
buffer space. */
/* #undef REL_ALLOC */
/* Define HAVE_X_WINDOWS if you want to use the X window system. */
/* #undef HAVE_X_WINDOWS */
/* Define HAVE_X11 if you want to use version 11 of X windows.
Otherwise, Emacs expects to use version 10. */
/* #undef HAVE_X11 */
/* Define if using an X toolkit. */
/* #undef USE_X_TOOLKIT */
/* Define this if you're using XFree386. */
/* #undef HAVE_XFREE386 */
/* Define this if you have Motif 2.1 or newer. */
/* #undef HAVE_MOTIF_2_1 */
/* Define HAVE_MENUS if you have mouse menus.
(This is automatic if you use X, but the option to specify it remains.)
It is also defined with other window systems that support xmenu.c. */
#define HAVE_MENUS 1
/* Define if we have the X11R6 or newer version of Xt. */
/* #undef HAVE_X11XTR6 */
/* Define if we have the X11R6 or newer version of Xlib. */
/* #undef HAVE_X11R6 */
/* Define if we have the X11R5 or newer version of Xlib. */
/* #undef HAVE_X11R5 */
/* Define if we have the XPM libary. */
/* #undef HAVE_XPM */
/* Define if we have the PNG library. */
/* #undef HAVE_PNG */
/* Define if we have the JPEG library. */
/* #undef HAVE_JPEG */
/* Define if we have the TIFF library. */
/* #undef HAVE_TIFF */
/* Define if we have the GIF library. */
/* #undef HAVE_GIF */
/* Define if libXaw3d is available. */
/* #undef HAVE_XAW3D */
/* Define if we should use toolkit scroll bars. */
/* #undef USE_TOOLKIT_SCROLL_BARS */
/* Define if we should use XIM, if it is available. */
/* #undef USE_XIM */
/* Define if netdb.h declares h_errno. */
/* #undef HAVE_H_ERRNO */
/* If we're using any sort of window system, define some consequences. */
#ifdef HAVE_X_WINDOWS
#define HAVE_WINDOW_SYSTEM
#define MULTI_KBOARD
#define HAVE_MOUSE
#endif
/* Define for MacOS */
#define HAVE_WINDOW_SYSTEM 1
#define HAVE_MOUSE 1
/* Define USER_FULL_NAME to return a string
that is the user's full name.
It can assume that the variable `pw'
points to the password file entry for this user.
At some sites, the pw_gecos field contains
the user's full name. If neither this nor any other
field contains the right thing, use pw_name,
giving the user's login name, since that is better than nothing. */
#define USER_FULL_NAME pw->pw_name
/* Define AMPERSAND_FULL_NAME if you use the convention
that & in the full name stands for the login id. */
/* Turned on June 1996 supposing nobody will mind it. */
/* #undef AMPERSAND_FULL_NAME */
/* Things set by --with options in the configure script. */
/* Define to support POP mail retrieval. */
/* #undef MAIL_USE_POP 1 */
/* Define to support Kerberos-authenticated POP mail retrieval. */
/* #undef KERBEROS */
/* Define to use Kerberos 5 instead of Kerberos 4 */
/* #undef KERBEROS5 */
/* Define to support GSS-API in addition to (or instead of) Kerberos */
/* #undef GSSAPI */
/* Define to support using a Hesiod database to find the POP server. */
/* #undef HESIOD */
/* Header for Voxware or PCM sound card driver. */
/* #undef HAVE_MACHINE_SOUNDCARD_H */
/* #undef HAVE_SYS_SOUNDCARD_H */
/* #undef HAVE_SOUNDCARD_H */
/* Define HAVE_SOUND if we have sound support. We know it works
and compiles only on the specified platforms. For others,
it probably doesn't make sense to try. */
#if defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
#ifdef HAVE_MACHINE_SOUNDCARD_H
#define HAVE_SOUND 1
#endif
#ifdef HAVE_SYS_SOUNDCARD_H
#define HAVE_SOUND 1
#endif
#ifdef HAVE_SOUNDCARD_H
#define HAVE_SOUND 1
#endif
#endif /* __FreeBSD__ || __NetBSD__ || __linux__ */
/* Some things figured out by the configure script, grouped as they are in
configure.in. */
#ifndef _ALL_SOURCE /* suppress warning if this is pre-defined */
/* #undef _ALL_SOURCE */
#endif
/* #undef HAVE_SYS_SELECT_H */
/* #undef HAVE_SYS_TIMEB_H */
#define HAVE_SYS_TIME_H 1
#ifdef __MRC__
#undef HAVE_UNISTD_H
#else /* CodeWarrior */
#define HAVE_UNISTD_H 1
#endif
#define HAVE_UTIME_H 1
/* #undef HAVE_LINUX_VERSION_H */
/* #undef HAVE_SYS_SYSTEMINFO_H */
/* #undef HAVE_TERMIOS_H */
#define HAVE_LIMITS_H 1
#define HAVE_STRING_H 1
/* #undef HAVE_STDLIB_H */
/* #undef HAVE_TERMCAP_H */
/* #undef HAVE_TERM_H */
/* #undef HAVE_STDIO_EXT_H */
/* #undef STDC_HEADERS */
/* #undef TIME_WITH_SYS_TIME */
/* #undef HAVE_VFORK_H */
#define HAVE_FCNTL_H 1
/* #undef HAVE_SETITIMER */
/* #undef HAVE_UALARM */
/* #undef HAVE_SYS_WAIT_H */
/* #undef HAVE_LIBDNET */
/* #undef HAVE_LIBPTHREADS */
/* #undef HAVE_LIBRESOLV */
/* #undef HAVE_LIBXMU */
/* #undef HAVE_LIBNCURSES */
/* #undef HAVE_LIBINTL */
/* #undef HAVE_LIBXP */
/* movemail Kerberos support */
/* libraries */
/* #undef HAVE_LIBKRB */
/* #undef HAVE_LIBKRB4 */
/* #undef HAVE_LIBDES */
/* #undef HAVE_LIBDES425 */
/* #undef HAVE_LIBKRB5 */
/* #undef HAVE_LIBCRYPTO */
/* #undef HAVE_LIBCOM_ERR */
/* header files */
/* #undef HAVE_KRB5_H */
/* #undef HAVE_DES_H */
/* #undef HAVE_KRB_H */
/* #undef HAVE_KERBEROSIV_DES_H */
/* #undef HAVE_KERBEROSIV_KRB_H */
/* #undef HAVE_KERBEROS_DES_H */
/* #undef HAVE_KERBEROS_KRB_H */
/* #undef HAVE_COM_ERR_H */
/* GSS-API libraries and headers */
/* #undef HAVE_LIBGSSAPI_KRB5 */
/* #undef HAVE_LIBGSSAPI */
/* #undef HAVE_GSSAPI_H */
/* Mail-file locking */
/* #undef HAVE_LIBMAIL */
/* #undef HAVE_MAILLOCK_H */
/* #undef HAVE_TOUCHLOCK */
/* #undef HAVE_ALLOCA_H */
/* #undef HAVE_DEV_PTMX */
#define HAVE_GETTIMEOFDAY 1
/* If we don't have gettimeofday,
the test for GETTIMEOFDAY_ONE_ARGUMENT may succeed,
but we should ignore it. */
#ifdef HAVE_GETTIMEOFDAY
#define GETTIMEOFDAY_ONE_ARGUMENT 1
#endif
/* #undef HAVE_GETHOSTNAME */
/* #undef HAVE_GETDOMAINNAME */
/* #undef HAVE_DUP2 */
#define HAVE_RENAME 1
#define HAVE_CLOSEDIR 1
/* #undef TM_IN_SYS_TIME */
/* #undef HAVE_TM_ZONE */
/* #undef HAVE_TZNAME */
/* #undef HAVE_TM_GMTOFF */
/* #undef const */
/* #undef HAVE_LONG_FILE_NAMES */
/* #undef CRAY_STACKSEG_END */
/* #undef UNEXEC_SRC unexelf.c
/* #undef HAVE_LIBXBSD */
/* #undef HAVE_XRMSETDATABASE */
/* #undef HAVE_XSCREENRESOURCESTRING */
/* #undef HAVE_XSCREENNUMBEROFSCREEN */
/* #undef HAVE_XSETWMPROTOCOLS */
#define HAVE_MKDIR 1
#define HAVE_RMDIR 1
/* #undef HAVE_SYSINFO */
/* #undef HAVE_RANDOM */
/* #undef HAVE_LRAND48 */
/* #undef HAVE_BCOPY */
/* #undef HAVE_BCMP */
#define HAVE_LOGB 1
#define HAVE_FREXP 1
#define HAVE_FMOD 1
#ifdef __MRC__
#undef HAVE_RINT
#else /* CodeWarrior */
#define HAVE_RINT
#endif
/* #undef HAVE_CBRT */
/* #undef HAVE_FTIME */
/* #undef HAVE_RES_INIT */ /* For -lresolv on Suns. */
/* #undef HAVE_SETSID */
/* #undef HAVE_FPATHCONF */
#define HAVE_SELECT 1
/* #undef HAVE_MKTIME */
/* #undef BROKEN_MKTIME */ /* have mktime but it's broken */
/* #undef HAVE_EUIDACCESS */
/* #undef HAVE_GETPAGESIZE */
/* #undef HAVE_TZSET */
#define HAVE_SETLOCALE 1
/* #undef HAVE_UTIMES */
/* #undef HAVE_SETRLIMIT */
/* #undef HAVE_SETPGID */
/* #undef HAVE_GETCWD */
#define HAVE_GETWD 1
/* #undef HAVE_SHUTDOWN */
#define HAVE_STRFTIME 1
/* #undef HAVE_GETADDRINFO */
/* #undef HAVE___FPENDING */
/* #undef HAVE_FTELLO */
/* #undef HAVE_GETLOADAVG */
/* #undef NLIST_STRUCT */
/* #undef NLIST_NAME_UNION */
/* #undef HAVE_MBLEN */
/* #undef HAVE_MBRLEN */
/* #undef HAVE_STRSIGNAL */
/* #undef HAVE_GRANTPT */
/* #undef HAVE_GETPT */
/* #undef HAVE_SPEED_T */ /* speed_t typedef in termios.h */
/* #undef HAVE_STRUCT_TIMEZONE */
/* #undef LOCALTIME_CACHE */
/* #undef HAVE_INET_SOCKETS */
/* #undef HAVE_AIX_SMT_EXP */
/* #undef vfork */
/* Define if you have the ANSI `strerror' function.
Otherwise you must have the variable `char *sys_errlist[]'. */
#define HAVE_STRERROR 1
/* Define if `sys_siglist' is declared by <signal.h>. */
/* #undef SYS_SIGLIST_DECLARED */
/* Define if `struct utimbuf' is declared by <utime.h>. */
#define HAVE_STRUCT_UTIMBUF 1
/* Define if `struct timeval' is declared by <sys/time.h>. */
#define HAVE_TIMEVAL 1
/* If using GNU, then support inline function declarations. */
/* Don't try to switch on inline handling as detected by AC_C_INLINE
generally, because even if non-gcc compilers accept `inline', they
may reject `extern inline'. */
#ifdef __GNUC__
#define INLINE __inline__
#else
#define INLINE
#endif
/* Define this if you don't have struct exception in math.h. */
/* #undef NO_MATHERR */
/* Define as `void' if your compiler accepts `void *'; otherwise
define as `char'. */
#define POINTER_TYPE void
#define PTR POINTER_TYPE * /* For strftime.c. */
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
/* Define to make ftello visible on some hosts (e.g. HP-UX 10.20). */
/* #undef _LARGEFILE_SOURCE */
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* Define to make ftello visible on some hosts (e.g. glibc 2.1.3). */
/* #undef _XOPEN_SOURCE */
#ifdef __MRC__
#define EMACS_CONFIGURATION "macos-mpw"
#else /* Assume CodeWarrior */
#define EMACS_CONFIGURATION "macos-cw"
#endif
#define EMACS_CONFIG_OPTIONS ""
/* The configuration script defines opsysfile to be the name of the
s/SYSTEM.h file that describes the system type you are using. The file
is chosen based on the configuration name you give.
See the file ../etc/MACHINES for a list of systems and the
configuration names to use for them.
See s/template.h for documentation on writing s/SYSTEM.h files. */
#undef config_opsysfile
#include "s-mac.h"
/* The configuration script defines machfile to be the name of the
m/MACHINE.h file that describes the machine you are using. The file is
chosen based on the configuration name you give.
See the file ../etc/MACHINES for a list of machines and the
configuration names to use for them.
See m/template.h for documentation on writing m/MACHINE.h files. */
#undef config_machfile
#include "m-mac.h"
/* Load in the conversion definitions if this system
needs them and the source file being compiled has not
said to inhibit this. There should be no need for you
to alter these lines. */
#ifdef SHORTNAMES
#ifndef NO_SHORTNAMES
#include "../shortnames/remap.h"
#endif /* not NO_SHORTNAMES */
#endif /* SHORTNAMES */
/* If no remapping takes place, static variables cannot be dumped as
pure, so don't worry about the `static' keyword. */
#ifdef NO_REMAP
/* #undef static */
#endif
/* Define `subprocesses' should be defined if you want to
have code for asynchronous subprocesses
(as used in M-x compile and M-x shell).
These do not work for some USG systems yet;
for the ones where they work, the s/SYSTEM.h file defines this flag. */
#ifndef VMS
#ifndef USG
/* #define subprocesses */
#endif
#endif
/* Define LD_SWITCH_SITE to contain any special flags your loader may need. */
/* #undef LD_SWITCH_SITE */
/* Define C_SWITCH_SITE to contain any special flags your compiler needs. */
/* #undef C_SWITCH_SITE */
/* Define LD_SWITCH_X_SITE to contain any special flags your loader
may need to deal with X Windows. For instance, if you've defined
HAVE_X_WINDOWS above and your X libraries aren't in a place that
your loader can find on its own, you might want to add "-L/..." or
something similar. */
/* #undef LD_SWITCH_X_SITE */
/* Define LD_SWITCH_X_SITE_AUX with an -R option
in case it's needed (for Solaris, for example). */
/* #undef LD_SWITCH_X_SITE_AUX */
/* Define C_SWITCH_X_SITE to contain any special flags your compiler
may need to deal with X Windows. For instance, if you've defined
HAVE_X_WINDOWS above and your X include files aren't in a place
that your compiler can find on its own, you might want to add
"-I/..." or something similar. */
/* #undef C_SWITCH_X_SITE */
/* Define STACK_DIRECTION here, but not if m/foo.h did. */
#ifndef STACK_DIRECTION
/* #undef STACK_DIRECTION */
#endif
/* Define the return type of signal handlers if the s-xxx file
did not already do so. */
#define RETSIGTYPE void
/* SIGTYPE is the macro we actually use. */
#ifndef SIGTYPE
#define SIGTYPE RETSIGTYPE
#endif
#ifdef emacs /* Don't do this for lib-src. */
/* Tell regex.c to use a type compatible with Emacs. */
#define RE_TRANSLATE_TYPE Lisp_Object
#define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
#endif
/* Avoid link-time collision with system mktime if we will use our own. */
#if ! HAVE_MKTIME || BROKEN_MKTIME
#define mktime emacs_mktime
#endif
/* The rest of the code currently tests the CPP symbol BSTRING.
Override any claims made by the system-description files.
Note that on some SCO version it is possible to have bcopy and not bcmp. */
/* #undef BSTRING */
#if defined (HAVE_BCOPY) && defined (HAVE_BCMP)
#define BSTRING
#endif
/* Define to empty if the keyword `volatile' does not work. Warning:
valid code using `volatile' can become incorrect without. Disable
with care. */
/* #undef volatile */
/* Some of the files of Emacs which are intended for use with other
programs assume that if you have a config.h file, you must declare
the type of getenv.
This declaration shouldn't appear when alloca.s or Makefile.in
includes config.h. */
#ifndef NOT_C_CODE
extern char *getenv ();
#endif
#endif /* EMACS_CONFIG_H */
/* These default definitions are good for almost all machines.
The exceptions override them in m/MACHINE.h. */
#ifndef BITS_PER_CHAR
#define BITS_PER_CHAR 8
#endif
#ifndef BITS_PER_SHORT
#define BITS_PER_SHORT 16
#endif
/* Note that lisp.h uses this in a preprocessor conditional, so it
would not work to use sizeof. That being so, we do all of them
without sizeof, for uniformity's sake. */
#ifndef BITS_PER_INT
#define BITS_PER_INT 32
#endif
#ifndef BITS_PER_LONG
#ifdef _LP64
#define BITS_PER_LONG 64
#else
#define BITS_PER_LONG 32
#endif
#endif
/* Define if the compiler supports function prototypes. It may do so
but not define __STDC__ (e.g. DEC C by default) or may define it as
zero. */
/* #undef PROTOTYPES */
/* For mktime.c: */
#ifndef __P
# if defined PROTOTYPES
# define __P(args) args
# else
# define __P(args) ()
# endif /* GCC. */
#endif /* __P */
/* Don't include "string.h" or <stdlib.h> in non-C code. */
#ifndef NOT_C_CODE
#ifdef HAVE_STRING_H
#include "string.h"
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#endif
/* Define HAVE_X_I18N if we have usable i18n support. */
#ifdef HAVE_X11R6
#define HAVE_X_I18N
#elif defined HAVE_X11R5 && !defined X11R5_INHIBIT_I18N
#define HAVE_X_I18N
#endif
/* Define HAVE_X11R6_XIM if we have usable X11R6-style XIM support. */
#if defined HAVE_X11R6 && !defined INHIBIT_X11R6_XIM
#define HAVE_X11R6_XIM
#endif
/* Should we enable expensive run-time checking of data types? */
/* #undef ENABLE_CHECKING */
/* #define GLYPH_DEBUG 1 */
#define NO_RETURN /* nothing */

48
mac/inc/dirent.h Normal file
View file

@ -0,0 +1,48 @@
/* Replacement dirent.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _DIRENT_H
#define _DIRENT_H
/* for definition of FSSpec */
#include <Files.h>
/* for definition of ino_t */
#include <sys/types.h>
struct dirent {
ino_t d_ino;
char *d_name;
};
typedef struct DIR {
long dir_id;
short vol_ref_num;
long current_index;
int getting_volumes; /* true if this DIR struct refers to the root directory */
} DIR;
extern DIR *opendir(const char *);
extern int closedir(DIR *);
extern struct dirent *readdir(DIR *);
#endif /* _DIRENT_H */

61
mac/inc/epaths.h Normal file
View file

@ -0,0 +1,61 @@
/* Hey Emacs, this is -*- C -*- code! */
/* Handcrafted epaths.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
/* The default search path for Lisp function "load".
This sets load-path. */
#define PATH_LOADSEARCH "~emacs/lisp:~emacs/leim:~emacs/lisp/calendar:~emacs/lisp/emacs-lisp:~emacs/lisp/emulation:~emacs/lisp/progmodes:~emacs/lisp/textmodes:~emacs/lisp/international:~emacs/lisp/language:~emacs/lisp/play"
/* Like PATH_LOADSEARCH, but used only when Emacs is dumping. This
path is usually identical to PATH_LOADSEARCH except that the entry
for the directory containing the installed lisp files has been
replaced with ../lisp. */
#define PATH_DUMPLOADSEARCH "~emacs/lisp"
/* The extra search path for programs to invoke. This is appended to
whatever the PATH environment variable says to set the Lisp
variable exec-path and the first file name in it sets the Lisp
variable exec-directory. exec-directory is used for finding
executables and other architecture-dependent files. */
#define PATH_EXEC "~emacs/mac/bin"
/* Where Emacs should look for its architecture-independent data
files, like the NEWS file. The lisp variable data-directory
is set to this value. */
#define PATH_DATA "~emacs/data"
/* Where Emacs should look for X bitmap files.
The lisp variable x-bitmap-file-path is set based on this value. */
/* #define PATH_BITMAPS "/usr/include/X11/bitmaps" */
/* Where Emacs should look for its docstring file. The lisp variable
doc-directory is set to this value. */
#define PATH_DOC "../etc"
/* Where the configuration process believes the info tree lives. The
lisp variable configure-info-directory gets its value from this
macro, and is then used to set the Info-default-directory-list. */
#define PATH_INFO "~emacs/info"
/* Where Emacs should look for the application default file. */
/* #define PATH_X_DEFAULTS "/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S" */

140
mac/inc/m-mac.h Normal file
View file

@ -0,0 +1,140 @@
/* Handcrafted m-mac.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
/* The following line tells the configuration script what sort of
operating system this machine is likely to run.
USUAL-OPSYS="<name of system .h file here, without the s- or .h>" */
/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
is the most significant byte. */
#define WORDS_BIG_ENDIAN
/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
* group of arguments and treat it as an array of the arguments. */
#define NO_ARG_ARRAY
/* Define WORD_MACHINE if addresses and such have
* to be corrected before they can be used as byte counts. */
/* #define WORD_MACHINE */
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically:
Ones defined so far include vax, m68000, ns16000, pyramid,
orion, tahoe, APOLLO and many others */
/* Use type int rather than a union, to represent Lisp_Object */
/* This is desirable for most machines. */
#define NO_UNION_TYPE
/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
the 24-bit bit field into an int. In other words, if bit fields
are always unsigned.
If you use NO_UNION_TYPE, this flag does not matter. */
#define EXPLICIT_SIGN_EXTEND
/* Data type of load average, as read out of kmem. */
/* #define LOAD_AVE_TYPE long */
/* Convert that into an integer that is 100 for a load average of 1.0 */
/* #define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE) */
/* Define CANNOT_DUMP on machines where unexec does not work.
Then the function dump-emacs will not be defined
and temacs will do (load "loadup") automatically unless told otherwise. */
#define CANNOT_DUMP
/* Define VIRT_ADDR_VARIES if the virtual addresses of
pure and impure space as loaded can vary, and even their
relative order cannot be relied on.
Otherwise Emacs assumes that text space precedes data space,
numerically. */
#define VIRT_ADDR_VARIES
/* Define C_ALLOCA if this machine does not support a true alloca
and the one written in C should be used instead.
Define HAVE_ALLOCA to say that the system provides a properly
working alloca function and it should be used.
Define neither one if an assembler-language alloca
in the file alloca.s should be used. */
#define C_ALLOCA
/* #define HAVE_ALLOCA */
/* Define NO_REMAP if memory segmentation makes it not work well
to change the boundary between the text section and data section
when Emacs is dumped. If you define this, the preloaded Lisp
code will not be sharable; but that's better than failing completely. */
/* #define NO_REMAP */
/* Some really obscure 4.2-based systems (like Sequent DYNIX)
* do not support asynchronous I/O (using SIGIO) on sockets,
* even though it works fine on tty's. If you have one of
* these systems, define the following, and then use it in
* config.h (or elsewhere) to decide when (not) to use SIGIO.
*
* You'd think this would go in an operating-system description file,
* but since it only occurs on some, but not all, BSD systems, the
* reasonable place to select for it is in the machine description
* file.
*/
#define NO_SOCK_SIGIO
/* After adding support for a new system, modify the large case
statement in the `configure' script to recognize reasonable
configuration names, and add a description of the system to
`etc/MACHINES'.
If you've just fixed a problem in an existing configuration file,
you should also check `etc/MACHINES' to make sure its descriptions
of known problems in that configuration should be updated. */
/* MPW build crashes if this is not defined. */
#ifdef __MRC__
#define IEEE_FLOATING_POINT 1
#endif
#if 0
/* The usual definition of XINT, which involves shifting, does not
sign-extend properly on this machine. */
#define XINT(i) (((sign_extend_temp=(i)) & 0x00800000) \
? (sign_extend_temp | 0xFF000000) \
: (sign_extend_temp & 0x00FFFFFF))
#ifdef emacs /* Don't do this when making xmakefile! */
extern int sign_extend_temp;
#endif
#endif

155
mac/inc/macgui.h Normal file
View file

@ -0,0 +1,155 @@
/* Definitions and headers for communication on the Mac OS.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef EMACS_MACGUI_H
#define EMACS_MACGUI_H
#include <MacTypes.h>
#include <Quickdraw.h>
typedef int Pixmap;
typedef int Bitmap;
typedef int Display; /* fix later */
typedef unsigned long Time;
typedef RGBColor Color;
typedef WindowPtr Window;
#define FACE_DEFAULT (~0)
/* Emulate XCharStruct. */
typedef struct _XCharStruct
{
int rbearing;
int lbearing;
int width;
int ascent;
int descent;
} XCharStruct;
struct MacFontStruct {
char *fontname;
SInt16 mac_fontnum; /* font number of font used in this window */
int mac_fontsize; /* size of font */
Style mac_fontface; /* plain, bold, italics, etc. */
short mac_scriptcode; /* Mac OS script code for font used */
#if 0
SInt16 mFontNum; /* font number of font used in this window */
short mScriptCode; /* Mac OS script code for font used */
int mFontSize; /* size of font */
Style mFontFace; /* plain, bold, italics, etc. */
int mHeight; /* height of one line of text in pixels */
int mWidth; /* width of one character in pixels */
int mAscent;
int mDescent;
int mLeading;
char mTwoByte; /* true for two-byte font */
#endif
/* from Xlib.h */
#if 0
XExtData *ext_data; /* hook for extension to hang data */
Font fid; /* Font id for this font */
unsigned direction; /* hint about the direction font is painted */
#endif
unsigned min_char_or_byte2;/* first character */
unsigned max_char_or_byte2;/* last character */
unsigned min_byte1; /* first row that exists */
unsigned max_byte1; /* last row that exists */
#if 0
Bool all_chars_exist; /* flag if all characters have nonzero size */
unsigned default_char; /* char to print for undefined character */
int n_properties; /* how many properties there are */
XFontProp *properties; /* pointer to array of additional properties */
#endif
XCharStruct min_bounds; /* minimum bounds over all existing char */
XCharStruct max_bounds; /* maximum bounds over all existing char */
XCharStruct *per_char; /* first_char to last_char information */
int ascent; /* logical extent above baseline for spacing */
int descent; /* logical decent below baseline for spacing */
};
typedef struct MacFontStruct MacFontStruct;
typedef struct MacFontStruct XFontStruct;
/* Emulate X GC's by keeping color and font info in a structure. */
typedef struct _XGCValues
{
unsigned long foreground;
unsigned long background;
XFontStruct *font;
} XGCValues;
typedef XGCValues *GC;
extern XGCValues *
XCreateGC (void *, Window, unsigned long, XGCValues *);
#define GCForeground 0x01
#define GCBackground 0x02
#define GCFont 0x03
#define GCGraphicsExposures 0
/* Bit Gravity */
#define ForgetGravity 0
#define NorthWestGravity 1
#define NorthGravity 2
#define NorthEastGravity 3
#define WestGravity 4
#define CenterGravity 5
#define EastGravity 6
#define SouthWestGravity 7
#define SouthGravity 8
#define SouthEastGravity 9
#define StaticGravity 10
#define NoValue 0x0000
#define XValue 0x0001
#define YValue 0x0002
#define WidthValue 0x0004
#define HeightValue 0x0008
#define AllValues 0x000F
#define XNegative 0x0010
#define YNegative 0x0020
#define USPosition (1L << 0) /* user specified x, y */
#define USSize (1L << 1) /* user specified width, height */
#define PPosition (1L << 2) /* program specified position */
#define PSize (1L << 3) /* program specified size */
#define PMinSize (1L << 4) /* program specified minimum size */
#define PMaxSize (1L << 5) /* program specified maximum size */
#define PResizeInc (1L << 6) /* program specified resize increments */
#define PAspect (1L << 7) /* program specified min and max aspect ratios */
#define PBaseSize (1L << 8) /* program specified base for incrementing */
#define PWinGravity (1L << 9) /* program specified window gravity */
extern int XParseGeometry ();
#endif /* EMACS_MACGUI_H */

665
mac/inc/macterm.h Normal file
View file

@ -0,0 +1,665 @@
/* Display module for Mac OS.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#include "macgui.h"
#include "frame.h"
/* The class of this X application. */
#define EMACS_CLASS "Emacs"
#define RGB_TO_ULONG(r, g, b) (((r) << 16) | ((g) << 8) | (b))
#define RED_FROM_ULONG(color) ((color) >> 16)
#define GREEN_FROM_ULONG(color) (((color) >> 8) & 0xff)
#define BLUE_FROM_ULONG(color) ((color) & 0xff)
#define BLACK_PIX_DEFAULT(f) RGB_TO_ULONG(0,0,0)
#define WHITE_PIX_DEFAULT(f) RGB_TO_ULONG(255,255,255)
#define FONT_WIDTH(f) ((f)->max_bounds.width)
#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
#define FONT_BASE(f) ((f)->ascent)
#define FONT_DESCENT(f) ((f)->descent)
#define FONT_MAX_WIDTH(f) FONT_WIDTH(f) /* fix later */
enum text_cursor_kinds {
NO_CURSOR = -1,
FILLED_BOX_CURSOR,
HOLLOW_BOX_CURSOR,
BAR_CURSOR
};
/* Structure recording bitmaps and reference count.
If REFCOUNT is 0 then this record is free to be reused. */
struct mac_bitmap_record
{
char *bitmap_data;
int refcount;
int height, width;
};
/* For each display (currently only one on mac), we have a structure that
records information about it. */
struct mac_display_info
{
/* Chain of all mac_display_info structures. */
struct mac_display_info *next;
/* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
The same cons cell also appears in x_display_name_list. */
Lisp_Object name_list_element;
/* Number of frames that are on this display. */
int reference_count;
/* Dots per inch of the screen. */
double resx, resy;
/* Number of planes on this screen. */
int n_planes;
/* Number of bits per pixel on this screen. */
int n_cbits;
/* Dimensions of this screen. */
int height, width;
#if 0
int height_in,width_in;
#endif
/* Mask of things that cause the mouse to be grabbed. */
int grabbed;
#if 0
/* Emacs bitmap-id of the default icon bitmap for this frame.
Or -1 if none has been allocated yet. */
int icon_bitmap_id;
#endif
/* The root window of this screen. */
Window root_window;
/* The cursor to use for vertical scroll bars. */
Cursor vertical_scroll_bar_cursor;
#if 0
/* color palette information. */
int has_palette;
struct w32_palette_entry * color_list;
unsigned num_colors;
HPALETTE palette;
/* deferred action flags checked when starting frame update. */
int regen_palette;
/* Keystroke that has been faked by Emacs and will be ignored when
received; value is reset after key is received. */
int faked_key;
#endif
/* A table of all the fonts we have already loaded. */
struct font_info *font_table;
/* The current capacity of font_table. */
int font_table_size;
/* The number of fonts actually stored in the font table.
font_table[n] is used and valid iff 0 <= n < n_fonts. 0 <=
n_fonts <= font_table_size. and font_table[i].name != 0. */
int n_fonts;
/* Minimum width over all characters in all fonts in font_table. */
int smallest_char_width;
/* Minimum font height over all fonts in font_table. */
int smallest_font_height;
/* Reusable Graphics Context for drawing a cursor in a non-default face. */
XGCValues *scratch_cursor_gc;
/* These variables describe the range of text currently shown in its
mouse-face, together with the window they apply to. As long as
the mouse stays within this range, we need not redraw anything on
its account. Rows and columns are glyph matrix positions in
MOUSE_FACE_WINDOW. */
int mouse_face_beg_row, mouse_face_beg_col;
int mouse_face_beg_x, mouse_face_beg_y;
int mouse_face_end_row, mouse_face_end_col;
int mouse_face_end_x, mouse_face_end_y;
int mouse_face_past_end;
Lisp_Object mouse_face_window;
int mouse_face_face_id;
/* 1 if a mouse motion event came and we didn't handle it right away because
gc was in progress. */
int mouse_face_deferred_gc;
/* FRAME and X, Y position of mouse when last checked for
highlighting. X and Y can be negative or out of range for the frame. */
struct frame *mouse_face_mouse_frame;
int mouse_face_mouse_x, mouse_face_mouse_y;
/* Nonzero means defer mouse-motion highlighting. */
int mouse_face_defer;
int mouse_face_image_state;
char *mac_id_name;
/* Pointer to bitmap records. */
struct mac_bitmap_record *bitmaps;
/* Allocated size of bitmaps field. */
int bitmaps_size;
/* Last used bitmap index. */
int bitmaps_last;
/* The frame (if any) which has the window that has keyboard focus.
Zero if none. This is examined by Ffocus_frame in w32fns.c. Note
that a mere EnterNotify event can set this; if you need to know the
last frame specified in a FocusIn or FocusOut event, use
w32_focus_event_frame. */
struct frame *x_focus_frame;
/* The last frame mentioned in a FocusIn or FocusOut event. This is
separate from w32_focus_frame, because whether or not LeaveNotify
events cause us to lose focus depends on whether or not we have
received a FocusIn event for it. */
struct frame *x_focus_event_frame;
/* The frame which currently has the visual highlight, and should get
keyboard input (other sorts of input have the frame encoded in the
event). It points to the focus frame's selected window's
frame. It differs from w32_focus_frame when we're using a global
minibuffer. */
struct frame *x_highlight_frame;
/* Cache of images. */
struct image_cache *image_cache;
};
#define x_display_info mac_display_info
/* This is a chain of structures for all the displays currently in use. */
extern struct mac_display_info one_mac_display_info;
/* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE),
one for each element of w32_display_list and in the same order.
NAME is the name of the frame.
FONT-LIST-CACHE records previous values returned by x-list-fonts. */
extern Lisp_Object x_display_name_list;
/* A flag to control how to display unibyte 8-bit character. */
extern int unibyte_display_via_language_environment;
extern struct x_display_info *x_display_info_for_display P_ ((Display *));
extern struct x_display_info *x_display_info_for_name P_ ((Lisp_Object));
extern struct mac_display_info *mac_term_init ();
/* The collection of data describing a window on the Mac. Functions
defined in macterm.c */
struct mac_output {
WindowPtr mWP; /* pointer to QuickDraw window */
FRAME_PTR mFP; /* points back to the frame struct */
#if 0
int mNumCols; /* number of characters per column */
int mNumRows; /* number of characters per row */
int mLineHeight; /* height of one line of text in pixels */
int mCharWidth; /* width of one character in pixels */
int mHomeX; /* X pixel coordinate of lower left corner of character at (0, 0) */
int mHomeY; /* Y pixel coordinate of lower left corner of character at (0, 0) */
int mHighlight; /* current highlight state (0 = off). */
int mTermWinSize; /* num of lines from top of window affected by ins_del_lines; set by set_terminal_window. */
#endif
#if 0
/* stuffs used by xfaces.c */
struct face **param_faces;
int n_param_faces;
struct face **computed_faces;
int n_computed_faces;
int size_computed_faces;
#endif
unsigned long background_pixel;
unsigned long foreground_pixel;
/* Position of the Mac window (x and y offsets in global coordinates). */
int left_pos;
int top_pos;
/* Border width of the W32 window as known by the window system. */
int border_width;
/* Size of the W32 window in pixels. */
int pixel_height, pixel_width;
/* Height of a line, in pixels. */
int line_height;
/* Here are the Graphics Contexts for the default font. */
GC normal_gc; /* Normal video */
GC reverse_gc; /* Reverse video */
GC cursor_gc; /* cursor drawing */
/* Width of the internal border. This is a line of background color
just inside the window's border. When the frame is selected,
a highlighting is displayed inside the internal border. */
int internal_border_width;
/* The window used for this frame.
May be zero while the frame object is being created
and the window has not yet been created. */
Window window_desc;
/* The window that is the parent of this window.
Usually this is a window that was made by the window manager,
but it can be the root window, and it can be explicitly specified
(see the explicit_parent field, below). */
Window parent_desc;
/* Default ASCII font of this frame. */
XFontStruct *font;
/* The baseline offset of the default ASCII font. */
int baseline_offset;
/* If a fontset is specified for this frame instead of font, this
value contains an ID of the fontset, else -1. */
int fontset;
/* Pixel values used for various purposes.
border_pixel may be -1 meaning use a gray tile. */
unsigned long cursor_pixel;
unsigned long border_pixel;
unsigned long mouse_pixel;
unsigned long cursor_foreground_pixel;
/* Foreground color for scroll bars. A value of -1 means use the
default (black for non-toolkit scroll bars). */
unsigned long scroll_bar_foreground_pixel;
/* Background color for scroll bars. A value of -1 means use the
default (background color of the frame for non-toolkit scroll
bars). */
unsigned long scroll_bar_background_pixel;
/* Descriptor for the cursor in use for this window. */
Cursor text_cursor;
Cursor nontext_cursor;
Cursor modeline_cursor;
Cursor cross_cursor;
Cursor busy_cursor;
#if 0
/* Window whose cursor is busy_cursor. This window is temporarily
mapped to display a busy-cursor. */
Window busy_window;
/* Non-zero means busy cursor is currently displayed. */
unsigned busy_p : 1;
/* Flag to set when the window needs to be completely repainted. */
int needs_exposure;
#endif
/* What kind of text cursor is drawn in this window right now?
(If there is no cursor (phys_cursor_x < 0), then this means nothing.) */
enum text_cursor_kinds current_cursor;
/* What kind of text cursor should we draw in the future?
This should always be filled_box_cursor or bar_cursor. */
enum text_cursor_kinds desired_cursor;
/* Width of bar cursor (if we are using that). */
int cursor_width;
#if 0
DWORD dwStyle;
#endif
/* The size of the extra width currently allotted for vertical
scroll bars, in pixels. */
int vertical_scroll_bar_extra;
/* The extra width currently allotted for the areas in which
truncation marks, continuation marks, and overlay arrows are
displayed. */
int flags_areas_extra;
/* This is the gravity value for the specified window position. */
int win_gravity;
/* The geometry flags for this window. */
int size_hint_flags;
/* This is the Emacs structure for the display this frame is on. */
/* struct w32_display_info *display_info; */
/* Nonzero means our parent is another application's window
and was explicitly specified. */
char explicit_parent;
/* Nonzero means tried already to make this frame visible. */
char asked_for_visible;
/* Nonzero means menubar is currently active. */
char menubar_active;
/* Always contains NULL on the Mac OS because the menu bar is shared. */
int menubar_widget;
#if 0
/* Nonzero means menubar is about to become active, but should be
brought up to date first. */
volatile char pending_menu_activation;
#endif
/* Relief GCs, colors etc. */
struct relief
{
XGCValues *gc;
unsigned long pixel;
int allocated_p;
}
black_relief, white_relief;
/* The background for which the above relief GCs were set up.
They are changed only when a different background is involved. */
unsigned long relief_background;
};
typedef struct mac_output mac_output;
/* Return the Mac window used for displaying data in frame F. */
#define FRAME_MAC_WINDOW(f) ((f)->output_data.mac->mWP)
#define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.mac->foreground_pixel)
#define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.mac->background_pixel)
#define FRAME_FONT(f) ((f)->output_data.mac->font)
#define FRAME_FONTSET(f) ((f)->output_data.mac->fontset)
#define FRAME_INTERNAL_BORDER_WIDTH(f) ((f)->output_data.mac->internal_border_width)
#define FRAME_LINE_HEIGHT(f) ((f)->output_data.mac->line_height)
/* Width of the default font of frame F. Must be defined by each
terminal specific header. */
#define FRAME_DEFAULT_FONT_WIDTH(F) FONT_WIDTH (FRAME_FONT (F))
#define FRAME_BASELINE_OFFSET(f) ((f)->output_data.mac->baseline_offset)
/* This gives the w32_display_info structure for the display F is on. */
#define FRAME_MAC_DISPLAY_INFO(f) (&one_mac_display_info)
#define FRAME_X_DISPLAY_INFO(f) (&one_mac_display_info)
/* This is the `Display *' which frame F is on. */
#define FRAME_MAC_DISPLAY(f) (0)
/* This is the 'font_info *' which frame F has. */
#define FRAME_MAC_FONT_TABLE(f) (FRAME_MAC_DISPLAY_INFO (f)->font_table)
/* These two really ought to be called FRAME_PIXEL_{WIDTH,HEIGHT}. */
#define PIXEL_WIDTH(f) ((f)->output_data.mac->pixel_width)
#define PIXEL_HEIGHT(f) ((f)->output_data.mac->pixel_height)
#define FRAME_DESIRED_CURSOR(f) ((f)->output_data.mac->desired_cursor)
/* Value is the smallest width of any character in any font on frame F. */
#define FRAME_SMALLEST_CHAR_WIDTH(F) \
FRAME_MAC_DISPLAY_INFO(F)->smallest_char_width
/* Value is the smallest height of any font on frame F. */
#define FRAME_SMALLEST_FONT_HEIGHT(F) \
FRAME_MAC_DISPLAY_INFO(F)->smallest_font_height
/* Return a pointer to the image cache of frame F. */
#define FRAME_X_IMAGE_CACHE(F) FRAME_MAC_DISPLAY_INFO ((F))->image_cache
/* Pixel width of the bitmaps drawn to indicate truncation,
continuation etc. */
#define FRAME_FLAGS_BITMAP_WIDTH(f) 8
#define FRAME_FLAGS_BITMAP_HEIGHT(f) 8
/* Total width of areas reserved for drawing truncation bitmaps,
continuation bitmaps and alike. The width is in canonical char
units of the frame. This must currently be the case because window
sizes aren't pixel values. If it weren't the case, we wouldn't be
able to split windows horizontally nicely. */
#define FRAME_X_FLAGS_AREA_COLS(F) \
((2 * FRAME_FLAGS_BITMAP_WIDTH ((F)) + CANON_X_UNIT ((F)) - 1) \
/ CANON_X_UNIT ((F)))
/* Total width of flags areas in pixels. */
#define FRAME_X_FLAGS_AREA_WIDTH(F) \
(FRAME_X_FLAGS_AREA_COLS ((F)) * CANON_X_UNIT ((F)))
/* Pixel-width of the left flags area. */
#define FRAME_X_LEFT_FLAGS_AREA_WIDTH(F) \
(FRAME_X_FLAGS_AREA_WIDTH (F) / 2)
/* Pixel-width of the right flags area. Note that we are doing
integer arithmetic here, so don't loose a pixel if the total
width is an odd number. */
#define FRAME_X_RIGHT_FLAGS_AREA_WIDTH(F) \
(FRAME_X_FLAGS_AREA_WIDTH (F) - FRAME_X_FLAGS_AREA_WIDTH (F) / 2)
/* Mac-specific scroll bar stuff. */
/* We represent scroll bars as lisp vectors. This allows us to place
references to them in windows without worrying about whether we'll
end up with windows referring to dead scroll bars; the garbage
collector will free it when its time comes.
We use struct scroll_bar as a template for accessing fields of the
vector. */
struct scroll_bar {
/* These fields are shared by all vectors. */
EMACS_INT size_from_Lisp_Vector_struct;
struct Lisp_Vector *next_from_Lisp_Vector_struct;
/* The window we're a scroll bar for. */
Lisp_Object window;
/* The next and previous in the chain of scroll bars in this frame. */
Lisp_Object next, prev;
/* The Mac control handle of this scroll bar. Since this is a full
32-bit quantity, we store it split into two 32-bit values. */
Lisp_Object control_handle_low, control_handle_high;
/* The position and size of the scroll bar in pixels, relative to the
frame. */
Lisp_Object top, left, width, height;
/* The starting and ending positions of the handle, relative to the
handle area (i.e. zero is the top position, not
SCROLL_BAR_TOP_BORDER). If they're equal, that means the handle
hasn't been drawn yet.
These are not actually the locations where the beginning and end
are drawn; in order to keep handles from becoming invisible when
editing large files, we establish a minimum height by always
drawing handle bottoms VERTICAL_SCROLL_BAR_MIN_HANDLE pixels below
where they would be normally; the bottom and top are in a
different co-ordinate system. */
Lisp_Object start, end;
/* If the scroll bar handle is currently being dragged by the user,
this is the number of pixels from the top of the handle to the
place where the user grabbed it. If the handle isn't currently
being dragged, this is Qnil. */
Lisp_Object dragging;
};
/* The number of elements a vector holding a struct scroll_bar needs. */
#define SCROLL_BAR_VEC_SIZE \
((sizeof (struct scroll_bar) \
- sizeof (EMACS_INT) - sizeof (struct Lisp_Vector *)) \
/ sizeof (Lisp_Object))
/* Turning a lisp vector value into a pointer to a struct scroll_bar. */
#define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec))
/* Building a 32-bit C integer from two 16-bit lisp integers. */
#define SCROLL_BAR_PACK(low, high) (XINT (high) << 16 | XINT (low))
/* Setting two lisp integers to the low and high words of a 32-bit C int. */
#define SCROLL_BAR_UNPACK(low, high, int32) \
(XSETINT ((low), (int32) & 0xffff), \
XSETINT ((high), ((int32) >> 16) & 0xffff))
/* Extract the Mac control handle of the scroll bar from a struct scroll_bar. */
#define SCROLL_BAR_CONTROL_HANDLE(ptr) \
((ControlHandle) SCROLL_BAR_PACK ((ptr)->control_handle_low, (ptr)->control_handle_high))
/* Store a Mac control handle in a struct scroll_bar. */
#define SET_SCROLL_BAR_CONTROL_HANDLE(ptr, id) \
(SCROLL_BAR_UNPACK ((ptr)->control_handle_low, (ptr)->control_handle_high, (int) id))
/* Return the inside width of a vertical scroll bar, given the outside
width. */
#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f,width) \
((width) \
- VERTICAL_SCROLL_BAR_LEFT_BORDER \
- VERTICAL_SCROLL_BAR_RIGHT_BORDER \
- VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2)
/* Return the length of the rectangle within which the top of the
handle must stay. This isn't equivalent to the inside height,
because the scroll bar handle has a minimum height.
This is the real range of motion for the scroll bar, so when we're
scaling buffer positions to scroll bar positions, we use this, not
VERTICAL_SCROLL_BAR_INSIDE_HEIGHT. */
#define VERTICAL_SCROLL_BAR_TOP_RANGE(f,height) \
(VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, height) - VERTICAL_SCROLL_BAR_MIN_HANDLE - UP_AND_DOWN_ARROWS)
/* Return the inside height of vertical scroll bar, given the outside
height. See VERTICAL_SCROLL_BAR_TOP_RANGE too. */
#define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(f,height) \
((height) - VERTICAL_SCROLL_BAR_TOP_BORDER - VERTICAL_SCROLL_BAR_BOTTOM_BORDER)
/* Border widths for scroll bars.
Scroll bar windows don't have any borders; their border width is
set to zero, and we redraw borders ourselves. This makes the code
a bit cleaner, since we don't have to convert between outside width
(used when relating to the rest of the screen) and inside width
(used when sizing and drawing the scroll bar window itself).
The handle moves up and down/back and forth in a rectangle inset
from the edges of the scroll bar. These are widths by which we
inset the handle boundaries from the scroll bar edges. */
#define VERTICAL_SCROLL_BAR_LEFT_BORDER (0)
#define VERTICAL_SCROLL_BAR_RIGHT_BORDER (0)
#define VERTICAL_SCROLL_BAR_TOP_BORDER (0)
#define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (0)
/* Minimum lengths for scroll bar handles, in pixels. */
#define VERTICAL_SCROLL_BAR_MIN_HANDLE (16)
/* Combined length of up and down arrow boxes in scroll bars, in pixels. */
#define UP_AND_DOWN_ARROWS (32)
/* Trimming off a few pixels from each side prevents
text from glomming up against the scroll bar */
#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
/* Manipulating pixel sizes and character sizes.
Knowledge of which factors affect the overall size of the window should
be hidden in these macros, if that's possible.
Return the upper/left pixel position of the character cell on frame F
at ROW/COL. */
#define CHAR_TO_PIXEL_ROW(f, row) \
((f)->output_data.mac->internal_border_width \
+ (row) * (f)->output_data.mac->line_height)
#define CHAR_TO_PIXEL_COL(f, col) \
((f)->output_data.mac->internal_border_width \
+ (col) * FONT_WIDTH ((f)->output_data.mac->font))
/* Return the pixel width/height of frame F if it has
WIDTH columns/HEIGHT rows. */
#define CHAR_TO_PIXEL_WIDTH(f, width) \
(CHAR_TO_PIXEL_COL (f, width) \
+ (f)->output_data.mac->vertical_scroll_bar_extra \
+ (f)->output_data.mac->flags_areas_extra \
+ (f)->output_data.mac->internal_border_width)
#define CHAR_TO_PIXEL_HEIGHT(f, height) \
(CHAR_TO_PIXEL_ROW (f, height) \
+ (f)->output_data.mac->internal_border_width)
/* Return the row/column (zero-based) of the character cell containing
the pixel on FRAME at ROW/COL. */
#define PIXEL_TO_CHAR_ROW(f, row) \
(((row) - (f)->output_data.mac->internal_border_width) \
/ (f)->output_data.mac->line_height)
#define PIXEL_TO_CHAR_COL(f, col) \
(((col) - (f)->output_data.mac->internal_border_width) \
/ FONT_WIDTH ((f)->output_data.mac->font))
/* How many columns/rows of text can we fit in WIDTH/HEIGHT pixels on
frame F? */
#define PIXEL_TO_CHAR_WIDTH(f, width) \
(PIXEL_TO_CHAR_COL (f, ((width) \
- (f)->output_data.mac->internal_border_width \
- (f)->output_data.mac->flags_areas_extra \
- (f)->output_data.mac->vertical_scroll_bar_extra)))
#define PIXEL_TO_CHAR_HEIGHT(f, height) \
(PIXEL_TO_CHAR_ROW (f, ((height) \
- (f)->output_data.mac->internal_border_width)))
struct frame * check_x_frame (Lisp_Object);
/* Dummy entry for defining tty_display in frame.c. */
struct x_output
{
char _dummy;
};

37
mac/inc/pwd.h Normal file
View file

@ -0,0 +1,37 @@
/* Replacement pwd.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _PWD_H
#define _PWD_H
#include <sys/types.h>
/* Emacs uses only pw_name and pw_dir: let's just simulate these */
struct passwd {
char *pw_name; /* user name */
char *pw_dir; /* home directory */
};
struct passwd *getpwuid(uid_t);
struct passwd *getpwnam(const char *);
#endif /* _PWD_H */

320
mac/inc/s-mac.h Normal file
View file

@ -0,0 +1,320 @@
/* Handcrafted s-mac.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
/*
* Define symbols to identify the version of Unix this is.
* Define all the symbols that apply correctly.
*/
/* #define UNIPLUS */
/* #define USG5 */
/* #define USG */
/* #define HPUX */
/* #define UMAX */
/* #define BSD4_1 */
/* #define BSD4_2 */
/* #define BSD4_3 */
/* #define BSD_SYSTEM */
/* #define VMS */
/* SYSTEM_TYPE should indicate the kind of system you are using.
It sets the Lisp variable system-type. */
#define SYSTEM_TYPE "macos"
/* NOMULTIPLEJOBS should be defined if your system's shell
does not have "job control" (the ability to stop a program,
run some other program, then continue the first one). */
#define NOMULTIPLEJOBS
/* Emacs can read input using SIGIO and buffering characters itself,
or using CBREAK mode and making C-g cause SIGINT.
The choice is controlled by the variable interrupt_input.
Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
Emacs uses the presence or absence of the SIGIO macro to indicate
whether or not signal-driven I/O is possible. It uses
INTERRUPT_INPUT to decide whether to use it by default.
SIGIO can be used only on systems that implement it (4.2 and 4.3).
CBREAK mode has two disadvantages
1) At least in 4.2, it is impossible to handle the Meta key properly.
I hear that in system V this problem does not exist.
2) Control-G causes output to be discarded.
I do not know whether this can be fixed in system V.
Another method of doing input is planned but not implemented.
It would have Emacs fork off a separate process
to read the input and send it to the true Emacs process
through a pipe. */
/* #define INTERRUPT_INPUT */
/* Letter to use in finding device name of first pty,
if system supports pty's. 'a' means it is /dev/ptya0 */
/* #define FIRST_PTY_LETTER 'a' */
/*
* Define HAVE_TERMIOS if the system provides POSIX-style
* functions and macros for terminal control.
*
* Define HAVE_TERMIO if the system provides sysV-style ioctls
* for terminal control.
*
* Do not define both. HAVE_TERMIOS is preferred, if it is
* supported on your system.
*/
/* #define HAVE_TERMIOS */
#define HAVE_TERMIO
/*
* Define HAVE_PTYS if the system supports pty devices.
*/
/* #define HAVE_PTYS */
/*
* Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
* The 4.2 opendir, etc., library functions.
*/
/* #define NONSYSTEM_DIR_LIBRARY */
/* Define this symbol if your system has the functions bcopy, etc. */
/* #define BSTRING */
/* subprocesses should be defined if you want to
have code for asynchronous subprocesses
(as used in M-x compile and M-x shell).
This is generally OS dependent, and not supported
under most USG systems. */
/* #define subprocesses */
/* If your system uses COFF (Common Object File Format) then define the
preprocessor symbol "COFF". */
/* #define COFF */
/* define MAIL_USE_FLOCK if the mailer uses flock
to interlock access to /usr/spool/mail/$USER.
The alternative is that a lock file named
/usr/spool/mail/$USER.lock. */
/* #define MAIL_USE_FLOCK */
/* Define CLASH_DETECTION if you want lock files to be written
so that Emacs can tell instantly when you try to modify
a file that someone else has modified in his Emacs. */
/* #define CLASH_DETECTION */
/* Define this if your operating system declares signal handlers to
have a type other than the usual. `The usual' is `void' for ANSI C
systems (i.e. when the __STDC__ macro is defined), and `int' for
pre-ANSI systems. If you're using GCC on an older system, __STDC__
will be defined, but the system's include files will still say that
signal returns int or whatever; in situations like that, define
this to be what the system's include files want. */
/* #define SIGTYPE int */
/* If the character used to separate elements of the executable path
is not ':', #define this to be the appropriate character constant. */
/* #define SEPCHAR ':' */
/* ============================================================ */
/* Here, add any special hacks needed
to make Emacs work on this system. For example,
you might define certain system call names that don't
exist on your system, or that do different things on
your system and must be used only through an encapsulation
(Which you should place, by convention, in sysdep.c). */
/* Some compilers tend to put everything declared static
into the initialized data area, which becomes pure after dumping Emacs.
On these systems, you must #define static as nothing to foil this.
Note that emacs carefully avoids static vars inside functions. */
/* #define static */
/* ============================================================ */
/* After adding support for a new system, modify the large case
statement in the `configure' script to recognize reasonable
configuration names, and add a description of the system to
`etc/MACHINES'.
If you've just fixed a problem in an existing configuration file,
you should also check `etc/MACHINES' to make sure its descriptions
of known problems in that configuration should be updated. */
#ifdef __MRC__
#define __signal_max SIGTERM /* largest one in signal.h */
#endif
#define SIGHUP (__signal_max+1)
#define SIGQUIT (__signal_max+2)
#define SIGTRAP (__signal_max+3)
#define SIGKILL (__signal_max+4)
#define SIGALRM (__signal_max+5)
#define SIGPIPE (__signal_max+6)
#define NSIG (__signal_max+6)
#ifdef __MRC__
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)
#elif __MWERKS__
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->buffer_ptr - (FILE)->buffer)
#endif
#ifdef __MWERKS__
#include <errno.h>
#ifndef ENOENT
#define ENOENT 100
#endif
#ifndef EXDEV
#define EXDEV 101
#endif
#ifndef EEXIST
#define EEXIST 102
#endif
#ifndef EINTR
#define EINTR 102
#endif
#ifndef EACCES
#define EACCES 103
#endif
#ifndef ENOTDIR
#define ENOTDIR 104
#endif
#ifndef EIO
#define EIO 105
#endif
#ifndef EBADF
#define EBADF 106
#endif
#endif
#define SYSTEM_PURESIZE_EXTRA (200*1024)
/* don't know what this will do, but sysdep.c needs it */
#define DATA_START 0
/* Limited by CW's 32K limit on local data! */
#define READ_BUF_SIZE (8 << 10)
#include <utsname.h>
void read_input_waiting ();
/* #define GETTIMEOFDAY_ONE_ARGUMENT */
#define SYSV_SYSTEM_DIR
#define SYSTEM_MALLOC
/* Constants such as O_RDONLY are defined in fcntl.h. Best solution is
really to patch individual files to include it: callproc.c, doc.c,
fileio.c, getloadavg.c, lread.c, and termcap.c. */
#include <fcntl.h>
#define _setjmp setjmp
#define _longjmp longjmp
#define _exit exit
#define main emacs_main
/* Include this here so it won't be include again when #include in emacs
sources. Then undefine the macro definitions in it for unlink, read,
write, access, and rmdir. */
#ifdef __MWERKS__
#include <unistd.h>
#endif
#undef unlink
#define unlink sys_unlink
#undef read
#define read sys_read
#undef write
#define write sys_write
#undef access
#define access sys_access
#undef rmdir
#define rmdir sys_rmdir
#define open sys_open
#define creat sys_creat
#define rename sys_rename
#define fopen sys_fopen
#define signal sys_signal
#define gmtime sys_gmtime
#define localtime sys_localtime
#define ctime sys_ctime
#define time sys_time
#ifndef bcmp
#define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
#endif
#ifndef bcopy
#define bcopy(s, d, n) memcpy ((d), (s), (n))
#endif
#ifndef bzero
#define bzero(s, n) memset ((s), 0, (n))
#endif
extern char *index (const char *, int);
/* MPW strftime broken for "%p" format */
#ifdef __MRC__
#define strftime sys_strftime
#endif
#include <time.h>
/* Editfns.c includes types.h which indirectly includes time.h before config.h.
So gmtime (localtime) is defined and not sys_gmtime (sys_localtime). Define
here explicitly. */
extern struct tm *sys_gmtime (const time_t *);
extern struct tm *sys_localtime (const time_t *);
extern char *sys_ctime (const time_t *);
extern time_t sys_time (time_t *);
/* Emacs.c includes signal.h before config.h. Define this to make it happy. */
#ifdef __MRC__
#include <signal.h>
extern __sigfun sys_signal (int signal_num, __sigfun signal_func);
#elif __MWERKS__
#include <signal.h>
extern __signal_func_ptr sys_signal (int signal_num, __signal_func_ptr signal_func);
#endif
extern double atof (const char *);
#define volatile
#define SYMS_SYSTEM syms_of_mac()

59
mac/inc/sys/file.h Normal file
View file

@ -0,0 +1,59 @@
/* Replacement sys/file.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_FILE_H
#define _SYS_FILE_H
#include <Files.h>
#include <sys/types.h>
#include <sys/stat.h>
#ifdef __MRC__
#undef open
#undef creat
#define open mpw_open
#define creat mpw_creat
#include <fcntl.h>
#undef open
#undef creat
#define open sys_open
#define creat sys_creat
#endif
#ifdef __MWERKS__
#include <unix.h>
#endif
mode_t umask(mode_t);
void abort(void);
void _exit(int);
int kill(int,int);
int alarm(int);
int pause(void);
char *getwd(char *);
#endif /* _SYS_FILE_H */

31
mac/inc/sys/ioctl.h Normal file
View file

@ -0,0 +1,31 @@
/* Replacement sys/ioctl.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_IOCTL_H
#define _SYS_IOCTL_H
int ioctl(int, int, void *);
#define FIONREAD 1
#define TCGETA 2
#endif /* _SYS_IOCTL_H */

28
mac/inc/sys/param.h Normal file
View file

@ -0,0 +1,28 @@
/* Replacement sys/param.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_PARAM_H
#define _SYS_PARAM_H
#define MAXPATHLEN 255
#endif /* _SYS_PARAM_H */

86
mac/inc/sys/stat.h Normal file
View file

@ -0,0 +1,86 @@
/* Replacement sys/stat.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_STAT_H
#define _SYS_STAT_H
#ifdef __MWERKS__
#include <stat.mac.h>
#ifdef CODEWARRIOR_VERSION_6
#define fstat _fstat
#endif
#undef S_IFMT
#undef S_IFBLK
#undef S_IFCHR
#undef S_IFIFO
#undef S_IFREG
#undef S_IFDIR
#undef S_IFLNK
#undef S_IRUSR
#undef S_IWUSR
#undef S_IXUSR
#endif /* __MWERKS__ */
/* Need to redefine these for CW, filemode.c assumes Unix definitions which are
inconsistent with CW definitions because CW uses bits 8-12 for S_IFMT info.
Bit 8 is used by S_IRUSR on Unix! */
#define S_IFMT 0170000 /* type of file */
#define S_IFBLK 0060000 /* block special */
#define S_IFCHR 0020000 /* character special */
#define S_IFIFO 0010000 /* FIFO special */
#define S_IFREG 0100000 /* regular */
#define S_IFDIR 0040000 /* directory */
#define S_IFLNK 0030000 /* symbolic link */
#define S_IREAD 00400
#define S_IWRITE 00200
#define S_IEXEC 00100
/* Need to redefine these for because mode_string in filemode.c assumes Unix
values in the lower 9 bits which are different from CW values. */
#define S_IRUSR S_IREAD
#define S_IWUSR S_IWRITE
#define S_IXUSR S_IEXEC
#ifdef __MRC__
typedef unsigned long dev_t;
struct stat {
dev_t st_dev; /* ID of device containing file */
int st_ino; /* file serial number */
unsigned short st_mode; /* mode of file */
int st_nlink; /* number of links to the file */
int st_uid; /* user ID of file */
int st_gid; /* group ID of file */
int st_rdev; /* device ID (if file is character or block special) */
int st_size; /* file size in bytes (if file is a regular file) */
int st_atime; /* time of last access */
int st_mtime; /* time of last data modification */
int st_ctime; /* time of last status change */
};
#endif /* __MRC__ */
#endif /* _SYS_STAT_H */

31
mac/inc/sys/time.h Normal file
View file

@ -0,0 +1,31 @@
/* Replacement sys/time.h file for building GNU Emacs on the Macintosh.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_TIME_H
#define _SYS_TIME_H
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
#endif /* _SYS_TYPES_H */

40
mac/inc/sys/types.h Normal file
View file

@ -0,0 +1,40 @@
/* Replacement sys/types.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_TYPES_H
#define _SYS_TYPES_H
#ifdef __MWERKS__
/* Need definitions of uid_t from stat.h */
#include <stat.h>
#endif /* __MWERKS__ */
#ifdef __MRC__
typedef long uid_t;
typedef long gid_t;
typedef long off_t;
typedef long ino_t;
typedef unsigned long mode_t;
#endif /* __MRC__ */
#endif /* _SYS_TYPES_H */

68
mac/inc/termio.h Normal file
View file

@ -0,0 +1,68 @@
/* Replacement termio.h file for building GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _SYS_TERMIO_H
#define _SYS_TERMIO_H
typedef unsigned char cc_t;
typedef unsigned short tcflag_t;
#define NCCS 32
struct termio {
tcflag_t c_iflag; /* input modes */
tcflag_t c_oflag; /* output modes */
tcflag_t c_cflag; /* control modes */
tcflag_t c_lflag; /* local modes */
cc_t c_cc[NCCS]; /* control chars */
};
/* c_cc subscript names */
#define VINTR 1
#define VQUIT 2
#define VERASE 3
#define VTIME 4
#define VMIN 5
/* c_iflag fields */
#define IGNBRK 0x1 /* ignore break condition */
#define ICRNL 0x2 /* map CR to NL on input */
#define IXON 0x4 /* enable start/stop output control */
/* c_oflag fields */
#define ONLCR 0x1 /* map CR to NL on output */
#define TABDLY 0x2 /* horizontal tab delays */
#define TAB3 0x4 /* expand tab to spaces */
/* c_cflag fields */
#define CBAUD 0x1
#define B9600 0x2
/* c_lflag fields */
#define ISIG 0x1 /* enable signals */
#define ICANON 0x2 /* canonical input (erase and kill processing) */
#define ECHO 0x3 /* enable echo */
#define TCSETAW 4
#define TCSETAF 5
#endif /* _SYS_TERMIO_H */

37
mac/inc/utime.h Normal file
View file

@ -0,0 +1,37 @@
/* Replacement utime.h file for building GNU Emacs on the Macintosh.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _UTIME_H_
#define _UTIME_H_
#include <time.h>
#define _mac_unix_epoch_offset_ (365L * 4L) * 24L * 60L * 60L
struct utimbuf {
time_t actime; /* access time (ignored on the Mac) */
time_t modtime; /* modification time */
};
int utime(const char *path, const struct utimbuf *buf);
#endif

32
mac/inc/utsname.h Normal file
View file

@ -0,0 +1,32 @@
/* Replacement utsname.h file for building GNU Emacs on the Macintosh.
Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#ifndef _UTSNAME_H
#define _UTSNAME_H
struct utsname {
char nodename[255];
};
int uname(struct utsname *name);
#endif

1127
mac/makefile.MPW Normal file

File diff suppressed because it is too large Load diff

700
mac/src/Emacs.r Normal file
View file

@ -0,0 +1,700 @@
/* Resource definitions for GNU Emacs on the Macintosh.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#include "Types.r"
/* added for finder icon balloon help --ben */
#include "Balloons.r"
/* Define to use gnu icon */
/* #define GNU_ICON 1 */
resource 'STR#' (128) {
{
"TERM=macterm",
"TERMCAP=macterm:co#80:li#40:up=up:do=do:le=le:nd=nd:cm=cm:cs=cs:ce=ce:cd=cd:cl=cl:al=al:dl=dl:",
/* "HOME=/Ix/Data Files/Emacs Mac Port/emacs-20.4/mac/", */
/* "MAIL=/Ix/System Folder/Eudora Folder/In" */
}
};
resource 'STR#' (129) {
{
"emacs",
"-l",
"loadup"
}
};
/* added for finder icon balloon help --ben */
resource 'hfdr' (-5696) { /*help for emacs icon*/
/*header component*/
HelpMgrVersion, hmDefaultOptions, 0, 0,
{ /*icon component*/
HMSTRResItem { /*use 'STR ' resource 128*/
128
}
}
};
/* added for finder icon balloon help --ben */
resource 'STR ' (128) { /*help message for emacs icon*/
"GNU Emacs\0xd1the extensible, customizable, self-documenting real-time display editor."
};
resource 'MENU' (128, preload) {
128,
textMenuProc,
0x7FFFFFFD,
enabled,
apple,
{ /* array: 2 elements */
/* [1] */
"About Emacs\0xc9", noIcon, noKey, noMark, plain,
/* [2] */
"-", noIcon, noKey, noMark, plain
}
};
resource 'MBAR' (128, "MBAR for Menus1", preload) {
{ /* array MenuArray: 1 element */
/* [1] */
128
}
};
resource 'WIND' (128, "Window", purgeable) {
{68, 33, 554, 754},
kWindowFullZoomGrowDocumentProc,
invisible,
goAway,
0x0,
"Terminal",
kWindowStaggerMainScreen
};
resource 'WIND' (129, "Terminal window", purgeable) {
{32, 8, 76, 620},
kWindowModalDialogProc,
invisible,
goAway,
0x0,
"Terminal",
kWindowDefaultPosition
};
resource 'WIND' (130, "Dialog window", purgeable) {
{32, 8, 42, 18},
kWindowModalDialogProc,
invisible,
goAway,
0x0,
"Terminal",
kWindowDefaultPosition
};
resource 'ALRT' (128, "About Box", purgeable) {
{40, 20, 160, 297},
128,
{ /* array: 4 elements */
/* [1] */
OK, visible, silent,
/* [2] */
OK, visible, silent,
/* [3] */
OK, visible, silent,
/* [4] */
OK, visible, silent
},
centerMainScreen
};
resource 'DITL' (128, purgeable) {
{ /* array DITLarray: 2 elements */
/* [1] */
{88, 185, 108, 265},
Button {
enabled,
"OK"
},
/* [2] */
{10, 60, 72, 278},
StaticText {
disabled,
"GNU Emacs 21.0.90 for Mac OS\n"
"(11 October 2000 release)\n"
"Report bugs to akochoi@users.sourceforge.net"
}
}
};
resource 'BNDL' (128) {
'EMAx',
0,
{ /* array TypeArray: 2 elements */
/* [1] */
'FREF',
{ /* array IDArray: 2 elements */
/* [1] */
0, 128,
/* [2] */
1, 129
},
/* [2] */
'ICN#',
{ /* array IDArray: 2 elements */
/* [1] */
0, 128,
/* [2] */
1, 129
}
}
};
resource 'FREF' (128) {
'APPL',
0,
""
};
resource 'FREF' (129) {
'TEXT',
1,
""
};
resource 'vers' (1) {
0x1,
0x0,
development,
0x0,
0,
"d6",
"GNU Emacs 21.1 for Mac OS\n\0xa9 2"
"000 Free Software Foundation"
};
data 'EMAx' (0, "Owner resource") {
$"00" /* . */
};
#ifdef GNU_ICON
resource 'ICN#' (128) {
{ /* array: 2 elements */
/* [1] */
$"0000 0000 0000 0000 0000 0080 0000 0040"
$"0100 0030 0203 5808 0408 8400 0418 0220"
$"0420 0008 0464 9C80 04C1 0018 0000 0004"
$"118B 0120 000A 0000 0614 8180 0204 2080"
$"0468 0080 0480 4480 0000 0080 0148 08C0"
$"0120 00C0 0182 4020 0388 0120 0181 2040"
$"01E8 B040 00E0 70C0 0078 9880 003A 9880"
$"001E 4000 000F C0",
/* [2] */
$"0000 0000 0000 0100 0000 0180 0000 00E0"
$"0100 3030 0203 F818 063F FC18 0E3F FE38"
$"1C7F FF78 1CFF FFF8 1CFF FFF8 1E7F FFFC"
$"1FFF FF38 1FFF FF80 0FFF FF80 07FF FF80"
$"0FFF FF80 0FFF FFC0 01FF FFC0 03FF FFC0"
$"03FF FFC0 03FF FFE0 03FF FFE0 03FF FFE0"
$"01FF FFC0 01FF FFC0 00FF FFC0 007F FF80"
$"001F E700 000F C000 0004 80"
}
};
#else
resource 'ICN#' (128) {
{ /* array: 2 elements */
/* [1] */
$"0000 0000 0000 0000 0001 F000 07DE 0F60"
$"0860 0090 1200 0028 1200 0008 0800 0008"
$"0800 0008 1000 0004 1000 0004 2000 0004"
$"2000 0044 4018 12C2 4018 0002 4018 0082"
$"4002 0C42 2000 1E02 2004 1E42 2004 0C02"
$"2004 0042 2002 0082 5001 8F05 8800 7004"
$"0800 0008 0400 0010 0200 0060 01C0 0380"
$"003F FC00 2000 0000 4000 0000 80",
/* [2] */
$"0000 0000 0000 0000 0001 F000 07DF FF60"
$"0FFF FFF0 1FFF FFF8 1FFF FFF8 0FFF FFF8"
$"0FFF FFF8 1FFF FFFC 1FFF FFFC 3FFF FFFC"
$"3FFF FFFC 7FFF FFFE 7FFF FFFE 7FFF FFFE"
$"7FFF FFFE 3FFF FFFE 3FFF FFFE 3FFF FFFE"
$"3FFF FFFE 3FFF FFFE 7FFF FFFF FFFF FFFF"
$"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
$"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
}
};
#endif
#ifdef GNU_ICON
resource 'icl4' (128) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 000C 0000 0000"
$"0000 0000 0000 0000 0000 000C F000 0000"
$"0000 0000 0000 0000 0000 0000 CFD0 0000"
$"0000 000F 0000 0000 00CC 0000 00FF 0000"
$"0000 00F0 0000 00FF CFCF F000 000C F000"
$"0000 0FD0 00CD FD0C F000 CF00 000C D000"
$"0000 CFC0 00DF F000 C000 00F0 00FC C000"
$"000C DF00 0DFD 0CD0 0000 DCDD 0DC0 F000"
$"000D 0F00 DFFC 0F00 FDDF FFDD FC0D D000"
$"000C 0F00 FFC0 DCDF 0000 DC00 00CF F000"
$"000C 0CD0 0C0C CDC0 000C 0CCD CCCC CF00"
$"000F 00CF F0DC FCFF DDC0 CDDF 00FD C000"
$"000D D000 CDC0 FCFC 0CDC CCCD C000 0000"
$"0000 CFF0 D00F 0F0C F0CD CCCF F000 0000"
$"0000 0CFC 00CD 0F0D D0FD CCCD F000 0000"
$"0000 CFCC DFF0 FC0C DCCC CCCC F000 0000"
$"0000 DFC0 FDDC 0C0C DFC0 CEDC FC00 0000"
$"0000 000C DDCC CDC0 C00C CCCC FC00 0000"
$"0000 00CF CF0C FC0C 0000 F00D FF00 0000"
$"0000 00CF D0FC 0CCC C000 0CCC FF00 0000"
$"0000 00CF F0DC 0CFC CFCD DDDC DCF0 0000"
$"0000 00FF FCD0 FDCC DDC0 00DF 0DF0 0000"
$"0000 00CF FDCD 0DCF CDFC CC0D 0FC0 0000"
$"0000 000F FFFC FCD0 F0FF C000 DF00 0000"
$"0000 000C FFF0 CDCD DFFF DCCC FF00 0000"
$"0000 0000 CFFF FC0D F0CF F000 FC00 0000"
$"0000 0000 0CFF FDF0 F0DF FDDD F000 0000"
$"0000 0000 000F FFFC CFC0 0DDD 0000 0000"
$"0000 0000 0000 FFFF FF00 0000 0000 0000"
$"0000 0000 0000 0C00 C0"
};
#else
resource 'icl4' (128) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 000F FFFF 0000 0000 0000"
$"0000 0FFF FF0F FFF0 0000 FFFF 0FF0 0000"
$"0000 FCCC CFF0 0000 0000 0000 FCCF 0000"
$"000F 0DED CC00 0000 0000 0000 0DEC F000"
$"000F 0DED C000 0000 0000 0000 00DD F000"
$"0000 F0D0 0000 0000 0000 0000 0000 F000"
$"0000 FC00 0000 0000 0000 0000 0000 F000"
$"000F 0000 0000 0000 0000 0000 0000 0F00"
$"000F 0000 0000 0000 0000 0000 0000 0F00"
$"00F0 0000 0000 0000 0000 0000 0000 0F00"
$"00F0 0000 0000 0000 0000 0000 DEC0 0F00"
$"0F00 0000 00CE EC00 0CCC CCCC FFC0 00F0"
$"0F00 0000 0CDF FD0C C000 000D CDC0 00F0"
$"0F00 0000 00CE ECD0 0000 CC00 D000 00F0"
$"0F00 0000 0000 00D0 000C EEC0 0D00 00F0"
$"00F0 0000 0000 0D00 00CE AAEC 0D00 00F0"
$"00F0 0000 0000 0D00 00CE AAEC 0D00 00F0"
$"00F0 0000 0000 0D00 000C EEC0 0D00 00F0"
$"00F0 0000 0000 0D00 0000 CC00 0D00 00F0"
$"00F0 0000 0000 0CD0 0000 0000 E000 00F0"
$"0F0F 0000 0000 00CD D000 EEEE 0000 0F0F"
$"F000 F000 0000 0000 0EEE 0000 0000 0F00"
$"0000 F000 0000 0000 0000 0D00 0000 FC00"
$"0000 0F00 0000 0000 0000 0D00 000F C000"
$"0000 00F0 0000 0000 0000 0C00 0FFC C000"
$"0000 C00F FF00 0000 0000 00EE ECCC 0000"
$"000D 0000 0CFF FFFF FEEE EECC CCC0 0000"
$"0CF0 0000 0000 CCCC CCCC CC0C 0C00 0C00"
$"CEC0 0000 0000 0000 0000 0000 0000 0DC0"
$"FD00 0000 0000 0000 0000 0000 0000 00D0"
};
#endif
#ifdef GNU_ICON
resource 'icl8' (128) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 002B 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 002B FF00 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 2BFF F900 0000 0000"
$"0000 0000 0000 00FF 0000 0000 0000 0000"
$"0000 2B2B 0000 0000 0000 FFFF 0000 0000"
$"0000 0000 0000 FF00 0000 0000 0000 FFFF"
$"2BFF 2BFF FF00 0000 0000 002B FF00 0000"
$"0000 0000 00FF F900 0000 2BF9 FFF9 002B"
$"FF00 0000 2BFF 0000 0000 002B F900 0000"
$"0000 0000 2BFF 2B00 0000 F9FF FF00 0000"
$"2B00 0000 0000 FF00 0000 FF2B 2B00 0000"
$"0000 002B F9FF 0000 00F9 FFF9 002B F900"
$"0000 0000 F92B F9F9 00F9 2B00 FF00 0000"
$"0000 00F9 00FF 0000 F9FF FF2B 00FF 0000"
$"FFF9 F9FF FFFF F9F9 FF2B 00F9 F900 0000"
$"0000 002B 00FF 0000 FFFF 2B00 F92B F9FF"
$"0000 0000 F92B 0000 0000 2BFF FF00 0000"
$"0000 002B 002B F900 002B 002B 2BF9 2B00"
$"0000 002B 002B 2BF9 2B2B 2B2B 2BFF 0000"
$"0000 00FF 0000 2BFF FF00 F92B FF2B FFFF"
$"F9F9 2B00 2BF9 F9FF 0000 FFF9 2B00 0000"
$"0000 00F9 F900 0000 2BF9 2B00 FF2B FF2B"
$"002B F92B 2B2B 2BF9 2B00 0000 0000 0000"
$"0000 0000 2BFF FF00 F900 00FF 00FF 002B"
$"FF00 2BF9 2B2B 2BFF FF00 0000 0000 0000"
$"0000 0000 002B FF2B 0000 2BF9 00FF 00F9"
$"F900 FFF9 2B2B 2BF9 FF00 0000 0000 0000"
$"0000 0000 2BFF 2B2B F9FF FF00 FF2B 002B"
$"F92B 2B2B 2B2B 2B2B FF00 0000 0000 0000"
$"0000 0000 F9FF 2B00 FFF9 F92B 002B 002B"
$"F9FF 2B00 2BFC F92B FF2B 0000 0000 0000"
$"0000 0000 0000 002B F9F9 2B2B 2BF9 2B00"
$"2B00 002B 2B2B 2B2B FF2B 0000 0000 0000"
$"0000 0000 0000 2BFF 2BFF 002B FF2B 002B"
$"0000 0000 FF00 00F9 FFFF 0000 0000 0000"
$"0000 0000 0000 2BFF F900 FF2B 002B 2B2B"
$"2B00 0000 002B 2B2B FFFF 0000 0000 0000"
$"0000 0000 0000 2BFF FF00 F92B 002B FF2B"
$"2BFF 2BF9 F9F9 F92B F92B FF00 0000 0000"
$"0000 0000 0000 FFFF FF2B F900 FFF9 2B2B"
$"F9F9 2B00 0000 F9FF 00F9 FF00 0000 0000"
$"0000 0000 0000 2BFF FFF9 2BF9 00F9 2BFF"
$"2BF9 FF2B 2B2B 00F9 00FF 2B00 0000 0000"
$"0000 0000 0000 00FF FFFF FF2B FF2B F900"
$"FF00 FFFF 2B00 0000 F9FF 0000 0000 0000"
$"0000 0000 0000 002B FFFF FF00 2BF9 2BF9"
$"F9FF FFFF F92B 2B2B FFFF 0000 0000 0000"
$"0000 0000 0000 0000 2BFF FFFF FF2B 00F9"
$"FF00 2BFF FF00 0000 FF2B 0000 0000 0000"
$"0000 0000 0000 0000 002B FFFF FFF9 FF00"
$"FF00 F9FF FFF9 F9F9 FF00 0000 0000 0000"
$"0000 0000 0000 0000 0000 00FF FFFF FF2B"
$"2BFF 2B00 00F9 F9F9 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 FFFF FFFF"
$"FFFF 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 002B 0000"
$"2B"
};
#else
resource 'icl8' (128) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 00FF"
$"FFFF FFFF 0000 0000 0000 0000 0000 0000"
$"0000 0000 00FF FFFF FFFF F5FF FFFF FFF5"
$"F5F5 F5F5 FFFF FFFF 00FF FF00 0000 0000"
$"0000 0000 FFF6 F6F6 F6FF FFF5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 FFF7 F6FF 0000 0000"
$"0000 00FF F5F9 FBF9 F7F7 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F9 FCF6 FF00 0000"
$"0000 00FF F5F9 FBF9 F7F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F9F9 FF00 0000"
$"0000 0000 FFF5 F9F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000"
$"0000 0000 FFF7 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 FF00 0000"
$"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000"
$"0000 00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5FF 0000"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F9FC F6F5 F5FF 0000"
$"00FF F5F5 F5F5 F5F5 F5F5 F7FB FBF7 F5F5"
$"F5F6 F6F7 F7F7 F7F8 FFFF F7F5 F5F5 FF00"
$"00FF F5F5 F5F5 F5F5 F5F6 F9FF FFF9 F5F7"
$"F7F5 F5F5 F5F5 F5F9 F7F9 F6F5 F5F5 FF00"
$"00FF F5F5 F5F5 F5F5 F5F5 F7FB FCF7 F9F5"
$"F5F5 F5F5 F6F6 F5F5 F9F5 F5F5 F5F5 FF00"
$"00FF F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F9F5"
$"F5F5 F5F7 FBFB F7F5 F5F9 F5F5 F5F5 FF00"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5"
$"F5F5 F7FB FDFD ACF7 F5F9 F5F5 F5F5 FF00"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5"
$"F5F5 F7FB FDFD ACF7 F5F9 F5F5 F5F5 FE00"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5"
$"F5F5 F5F7 FBFB F7F5 F5F9 F5F5 F5F5 FE00"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5"
$"F5F5 F5F5 F7F7 F5F5 F5FA F5F5 F5F5 FE00"
$"0000 FFF5 F5F5 F5F5 F5F5 F5F5 F5F7 F9F5"
$"F5F5 F5F5 F5F5 F5F5 FBF5 F5F5 F5F5 FF00"
$"00FF F5FF F5F5 F5F5 F5F5 F5F5 F5F5 F7F9"
$"F9F5 F5F5 FBFB FBFB F5F5 F5F5 F5FE F5FF"
$"FFF5 F5F5 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5FB FBFB F5F5 F5F5 F5F5 F5F5 F5FF F5F5"
$"F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F9 F5F5 F5F5 F5F5 FFF6 F5F5"
$"F5F5 F5F5 F5FF F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F9 F5F5 F5F5 F5FF F6F5 F5F5"
$"F5F5 F5F5 F5F5 FFF5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F6 F5F5 F5FF FFF7 F6F5 F5F5"
$"F5F5 F5F5 F7F5 F5FF FFFF F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 ACAC ACF7 F6F6 F5F5 F5F5"
$"F5F5 F5F9 F5F5 F5F5 F5F7 FFFF FFFF FFFF"
$"FFFC FCAC ACAC F6F6 F7F6 F6F5 F5F5 F5F5"
$"F5F6 FFF5 F5F5 F5F5 F5F5 F5F5 F6F7 F6F7"
$"F6F7 F6F6 F6F6 F5F6 F5F6 F5F5 F5F7 F5F5"
$"F6FC F7F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F9 F7F5"
$"FFF9 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F9F5"
};
#endif
#ifdef GNU_ICON
resource 'ics#' (128) {
{ /* array: 2 elements */
/* [1] */
$"0000 0008 11E6 26B4 2EEA 2906 5B14 36D8"
$"2EA8 1A28 1D8C 1B5C 1EC8 0FE8 0780",
/* [2] */
$"0010 001C 11FE 37FE 7FFE 7FFE 7FFE 3FF8"
$"3FF8 1FF8 1FFC 1FFC 1FF8 0FF8 07F0 0280"
}
};
#else
resource 'ics#' (128) {
{ /* array: 2 elements */
/* [1] */
$"0000 0000 0001 604B 6000 6002 0831 0078"
$"1079 1030 1001 0802 063C 01C0",
/* [2] */
$"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
$"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF"
}
};
#endif
#ifdef GNU_ICON
resource 'ics4' (128) {
$"0000 0000 000C 0000 0000 0000 000C FD00"
$"000F 000F FFF0 0FF0 00FD 0FFC F0FF 0FD0"
$"0DF0 FFFD FFFD FDF0 0CFD FCDF 0CDD CFF0"
$"0FDF FDFF DDDF CFC0 00FF DFFD FFCF F000"
$"00FC FFFC FCED F000 000F FCFC CCFD F000"
$"000F FFCF FDDD FF00 000F FDFF DFCF FF00"
$"000F FFFD FFDC F000 0000 FFFF FFFD F000"
$"0000 0FFF FCDD 0000 0000 00C0 C0"
};
#else
resource 'ics4' (128) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 00DE CEEC 000C CCCC CCFF"
$"DFFD 0CC0 0000 0DCD CEEC D000 00CC 00D0"
$"0000 D000 0CEE C00D 000D 0000 CEAA EC0D"
$"000D 0000 CEAA EC0D 000D 0000 0CEE C00D"
$"000D 0000 00CC 000D 000C D000 0000 00E0"
$"0000 CDD0 00EE EE00 0000 000E EE00 0000"
$"0000 0000 000D 0000 0000 0000 000D"
};
#endif
#ifdef GNU_ICON
resource 'ics8' (128) {
$"0000 0000 0000 0000 0000 002B 0000 0000"
$"0000 0000 0000 0000 0000 002B FFF9 0000"
$"0000 00FF 0000 00FF FFFF FF00 00FF FF00"
$"0000 FFF9 00FF FF2B FF00 FFFF 00FF F900"
$"00F9 FF00 FFFF FFF9 FFFF FFF9 FFF9 FF00"
$"002B FFF9 FF2B F9FF 002B F9F9 2BFF FF00"
$"00FF F9FF FFF9 FFFF F9F9 F9FF 2BFF 2B00"
$"0000 FFFF F9FF FFF9 FFFF 2BFF FF00 0000"
$"0000 FF2B FFFF FF2B FF2B FCF9 FF00 0000"
$"0000 00FF FF2B FF2B 2B2B FFF9 FF00 0000"
$"0000 00FF FFFF 2BFF FFF9 F9F9 FFFF 0000"
$"0000 00FF FFF9 FFFF F9FF 2BFF FFFF 0000"
$"0000 00FF FFFF FFF9 FFFF F92B FF00 0000"
$"0000 0000 FFFF FFFF FFFF FFF9 FF00 0000"
$"0000 0000 00FF FFFF FF2B F9F9 0000 0000"
$"0000 0000 0000 2B00 2B"
};
#else
resource 'ics8' (128) {
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F9FC"
$"F7FB FBF7 F5F5 F5F6 F6F7 F7F7 F7F8 FFFF"
$"F9FF FFF9 F5F7 F7F5 F5F5 F5F5 F5F9 F7F9"
$"F7FB FCF7 F9F5 F5F5 F5F5 F6F6 F5F5 F9F5"
$"F5F5 F5F5 F9F5 F5F5 F5F7 FBFB F7F5 F5F9"
$"F5F5 F5F9 F5F5 F5F5 F7FB FDFD ACF7 F5F9"
$"F5F5 F5F9 F5F5 F5F5 F7FB FDFD ACF7 F5F9"
$"F5F5 F5F9 F5F5 F5F5 F5F7 FBFB F7F5 F5F9"
$"F5F5 F5F9 F5F5 F5F5 F5F5 F7F7 F5F5 F5FA"
$"F5F5 F5F7 F9F5 F5F5 F5F5 F5F5 F5F5 FBF5"
$"F5F5 F5F5 F7F9 F9F5 F5F5 FBFB FBFB F5F5"
$"F5F5 F5F5 F5F5 F5FB FBFB F5F5 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5 F5F5"
$"F5F5 F5F5 F5F5 F5F5 F5F5 F5F9 F5F5 F5F5"
};
#endif
resource 'ICN#' (129) {
{ /* array: 2 elements */
/* [1] */
$"0000 0300 0000 1C80 0000 E0B0 0007 00F0"
$"0038 0070 01C0 0038 0E00 8038 7008 4038"
$"8008 2038 8004 0038 8080 041C C086 301C"
$"C087 311C 4007 BB8C 6167 378C 6170 070E"
$"2130 6006 3031 FC06 3047 FE06 10E7 FF02"
$"1867 FF82 1847 FF03 080F FE07 0C1F E03C"
$"0C0F C1F0 0406 0F80 0400 7C00 0203 E000"
$"031F 0000 01F8 0000 00C0",
/* [2] */
$"0000 0300 0000 1F80 0000 FFB0 0007 FFF0"
$"003F FFF0 01FF FFF8 0FFF FFF8 7FFF FFF8"
$"FFFF FFF8 FFFF FFF8 FFFF FFFC FFFF FFFC"
$"FFFF FFFC 7FFF FFFC 7FFF FFFC 7FFF FFFE"
$"3FFF FFFE 3FFF FFFE 3FFF FFFE 1FFF FFFE"
$"1FFF FFFE 1FFF FFFF 0FFF FFFF 0FFF FFFC"
$"0FFF FFF0 07FF FF80 07FF FC00 03FF E000"
$"03FF 0000 01F8 0000 00C0"
}
};
resource 'icl4' (129) {
$"0000 0000 0000 0000 0000 00FF 0000 0000"
$"0000 0000 0000 0000 000F FF0C F000 0000"
$"0000 0000 0000 0000 FFF0 0000 F0FF 0000"
$"0000 0000 0000 0FFF 0000 0000 FFDF 0000"
$"0000 0000 00FF F000 0000 0000 CFEF 0000"
$"0000 000F FF00 0000 0000 0000 00ED F000"
$"0000 FFF0 0000 0000 DC00 0000 00AD F000"
$"0FFF 0000 0000 E000 0DC0 0000 00FE F000"
$"F000 0000 0000 DC00 0CD0 0000 00FE F000"
$"F000 0000 CC00 CC00 00C0 0C00 00FA F000"
$"F000 0000 D000 00C0 00C0 0DCC 00CF EF00"
$"EF00 0000 E000 0EED C0ED C0DD 000F EF00"
$"EFC0 0000 DC00 CEEF CCEF D0DD 000F AF00"
$"DFC0 000C 00C0 CEFE D0EF D0ED E00C FF00"
$"0EFC 00CD 0EDC 0DDE 00DF CDEE EC00 FF00"
$"0EFC 000E 0DEE 00CC 00CC CDFE D000 FFF0"
$"0DFC 000D CCFE C00C DEDD 0CDC 0000 CFF0"
$"00EF C00C 0CDE 00CE FFFF AE00 0000 0FF0"
$"00EF C000 DD0C 0DEE FFFF FEED C000 0FF0"
$"00DF C000 DFE0 CDFF FFFF FFAF C000 0CF0"
$"000E FC00 DEE0 CAFF FFFF FFFE D000 0CFD"
$"000E FC00 CED0 DEFF FFFF FFFE C000 0CFF"
$"000D FC00 0C0C EFFF FFFF AEDD 00CC CFFF"
$"0000 EF00 000D EFFF FADD C00C CCFF FED0"
$"0000 EF00 000C FAFF AED0 CCCF FFEE D000"
$"0000 DF00 000C DEED CCCC FFFE ED00 0000"
$"0000 0E00 0000 0CCC CFFF EED0 0000 0000"
$"0000 0DFD 0000 CCFF FEED 0000 0000 0000"
$"0000 00EF DDDF FFEE D000 0000 0000 0000"
$"0000 000E FFFE ED00 0000 0000 0000 0000"
$"0000 0000 DDD0"
};
resource 'icl8' (129) {
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 FFFF 0000 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 00FF FFFF 00F7 FF00 0000 0000 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"FFFF FF00 0000 0000 FF00 FFFF 0000 0000"
$"0000 0000 0000 0000 0000 0000 00FF FFFF"
$"0000 0000 0000 0000 FFFF FAFF 0000 0000"
$"0000 0000 0000 0000 0000 FFFF FF00 0000"
$"0000 0000 0000 0000 F7FF FCFF 0000 0000"
$"0000 0000 0000 00FF FFFF 0000 0000 0000"
$"F500 0000 0000 0000 0000 FCFA FF00 0000"
$"0000 0000 FFFF FF00 0000 0000 0000 0000"
$"812B 0000 0000 0000 0000 FDFA FF00 0000"
$"00FF FFFF 0000 0000 0000 0000 FBF5 0000"
$"0081 2B00 0000 0000 0000 FFFC FF00 0000"
$"FF00 0000 0000 0000 00F5 0000 F9F8 0000"
$"00F8 FA00 0000 0000 0000 FFFC FF00 0000"
$"FF00 0000 0000 0000 F8F8 0000 F7F8 0000"
$"00F5 2B00 002B 0000 0000 FFFD FF00 0000"
$"FF00 0000 0000 00F5 FA00 0000 00F5 F800"
$"0000 2B00 00FA F8F6 0000 F7FF FCFF 0000"
$"FCFF 0000 0000 0000 FB00 0000 00FB FCF9"
$"F600 FBFA F700 5656 0000 00FF FCFF 0000"
$"FCFF F700 0000 0000 81F6 0000 F8FC ACFE"
$"F72B ACFE 5600 F9FA 0000 00FF FDFF 0000"
$"F9FF F700 0000 F5F7 F500 F600 2BAC FEFC"
$"FA00 FCFF 81F5 FB81 FBF5 00F7 FFFF 0000"
$"00FC FFF6 0000 2B81 00FC 81F8 0081 81FC"
$"F500 FAFF 2B81 ACFC FCF6 0000 FFFF 0000"
$"00FC FFF6 0000 00FB 0081 FCAC F500 F82B"
$"0000 F8F8 2B81 FFAC F900 0000 FFFF FF00"
$"00F9 FFF6 0000 0081 F6F8 FFAC F700 00F8"
$"F9FC FA56 00F6 562B 0000 0000 F7FF FF00"
$"0000 FCFF F700 00F7 002B FAFB F500 F7FC"
$"FEFF FFFF FDFB F500 0000 0000 00FF FF00"
$"0000 FCFF F700 0000 F9FA F5F8 0081 FCAC"
$"FFFF FFFF FFFC AC56 2B00 0000 00FF FF00"
$"0000 F9FF F700 0000 81FF AC00 F781 FFFF"
$"FFFF FFFF FFFF FDFE F800 0000 00F7 FF00"
$"0000 00FC FFF7 0000 56FC FBF5 F7FD FFFF"
$"FFFF FFFF FFFF FFAC 8100 0000 00F6 FFF9"
$"0000 00FC FFF7 0000 2BAC 5600 F9FC FFFF"
$"FFFF FFFF FFFF FFFB F700 0000 00F7 FFFF"
$"0000 00F9 FFF7 0000 F5F6 002B FBFE FFFF"
$"FFFF FFFE FDFC FA56 0000 F7F7 F7FF FFFF"
$"0000 0000 FCFF 0000 0000 00FA ACFF FFFF"
$"FFFD 8156 2BF5 00F7 F7F7 FFFF FFFC F900"
$"0000 0000 FCFF 0000 0000 00F7 FEFD FFFE"
$"FDFC F900 F7F7 F7FF FFFF FCFC F900 0000"
$"0000 0000 F9FF 0000 0000 00F6 56AC FBF9"
$"F7F6 F7F7 FFFF FFFC FCF9 0000 0000 0000"
$"0000 0000 00FC 0000 0000 0000 002B F7F7"
$"F7FF FFFF FCFC F900 0000 0000 0000 0000"
$"0000 0000 00F9 FFF9 0000 0000 F7F7 FFFF"
$"FFFC FCF9 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 FCFF F9F9 F9FF FFFF FCFC"
$"F900 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 00FC FFFF FFFC FCF9 0000"
$"0000 0000 0000 0000 0000 0000 0000 0000"
$"0000 0000 0000 0000 FAFA F9"
};
resource 'ics#' (129) {
{ /* array: 2 elements */
/* [1] */
$"0030 01CC 0E04 7006 8006 8006 8352 4412"
$"44C3 49F1 2BF1 23C7 23B8 01C0 1E",
/* [2] */
$"0030 01FC 0FFC 7FFE FFFE FFFE FFFE 7FFE"
$"7FFF 7FFF 3FFF 3FFF 3FF8 3FC0 1E"
}
};
resource 'ics4' (129) {
$"0000 0000 0CFF C000 0000 0CCF FFC0 EE00"
$"00CC FFFC 0000 CEC0 CFFF C0C0 C000 0ED0"
$"F000 C0C0 CC00 0FD0 F000 C0CD 0CCC 0DA0"
$"FC0C C0DF CACD CCF0 DF0C DFCD 0DDA C0FC"
$"CF0C CD0C EEDC 00EF 0FC0 FCCF FFFE C0DF"
$"0DF0 DCDF FFFA C0CF 0CF0 0CAF FEDC CFFD"
$"00F0 0CEE DCFF FDC0 00CD 00CF FFDC 0000"
$"000D FFFD C000 0000 0000 CC"
};
resource 'ics8' (129) {
$"0000 0000 0000 0000 F5F7 FFFF 2BF5 0000"
$"0000 0000 00F6 F7FF FFFF F600 ACAC 0000"
$"0000 F6F7 FFFF FFF6 0000 0000 F8AC F700"
$"2BFF FFFF F600 F600 F8F5 0000 00AC FA00"
$"FFF5 0000 F6F5 F700 F6F6 F500 F5FE FA00"
$"FFF5 00F5 F700 F756 F5F8 2BF7 0081 FDF5"
$"FF2B 00F6 F700 FAFE F7FD F8FA 2BF7 FF00"
$"56FF 00F7 56FF 2B56 F556 56FD F800 FEF7"
$"2BFF F5F6 F7FA F5F8 ACFC F92B 0000 FBFF"
$"00FF F700 FFF8 F8FE FFFF FFFC F600 56FF"
$"0056 FF00 FAF7 81FF FFFF FFFD 2B00 F6FF"
$"002B FFF5 002B FDFF FFFC 56F7 F7FF FF81"
$"0000 FFF5 00F6 FCFB FAF7 FFFF FFF9 F600"
$"0000 F8F9 0000 F7FF FFFF F9F6 0000 0000"
$"0000 0081 FFFF FFF9 F600 0000 0000 0000"
$"0000 0000 F8F6"
};

47
mac/src/EmacsMPW.r Normal file
View file

@ -0,0 +1,47 @@
/* Resource definitions for GNU Emacs on the Macintosh when building
under MPW.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#include "Types.r"
#include "CodeFragmentTypes.r"
resource 'SIZE' (-1) {
reserved,
acceptSuspendResumeEvents,
reserved,
canBackground,
doesActivateOnFGSwitch,
backgroundAndForeground,
dontGetFrontClicks,
ignoreAppDiedEvents,
is32BitCompatible,
isHighLevelEventAware,
onlyLocalHLEvents,
notStationeryAware,
dontUseTextEditServices,
reserved,
reserved,
reserved,
16777216,
16777216
};

43
mac/src/chdir.c Normal file
View file

@ -0,0 +1,43 @@
/* Implementation of chdir on the Mac for use with make-docfile.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Contributed by Andrew Choi (akochoi@users.sourceforge.net). */
#include <string.h>
#include <Files.h>
#include <TextUtils.h>
int chdir(const char *path)
{
WDPBRec wdpb;
Str255 mypath;
OSErr error;
strcpy(mypath, path);
c2pstr(mypath);
wdpb.ioNamePtr = mypath;
wdpb.ioVRefNum = 0;
wdpb.ioWDDirID = 0;
error = PBHSetVolSync(&wdpb);
return error == noErr ? 0 : -1;
}

2637
mac/src/mac.c Normal file

File diff suppressed because it is too large Load diff

9913
mac/src/macfns.c Normal file

File diff suppressed because it is too large Load diff

2206
mac/src/macmenu.c Normal file

File diff suppressed because it is too large Load diff

12446
mac/src/macterm.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,73 @@
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.
2000-10-22 Stefan Monnier <monnier@cs.yale.edu>
* keymap.c (fix_submap_inheritance): Don't do anything if parent_entry

View file

@ -40,7 +40,7 @@ Boston, MA 02111-1307, USA. */
#endif
#ifdef macintosh
#include "macterm.h"
#include "macgui.h"
#endif
/* Structure forward declarations. Some are here because function

View file

@ -60,6 +60,10 @@ Boston, MA 02111-1307, USA. */
#include "w32term.h"
#endif /* HAVE_NTGUI */
#ifdef macintosh
#include "macterm.h"
#endif /* macintosh */
/* Include systime.h after xterm.h to avoid double inclusion of time.h. */
#include "systime.h"
@ -6087,6 +6091,16 @@ init_display ()
}
#endif /* HAVE_NTGUI */
#ifdef macintosh
if (!inhibit_window_system)
{
Vwindow_system = intern ("mac");
Vwindow_system_version = make_number (1);
adjust_frame_glyphs_initially ();
return;
}
#endif /* macintosh */
/* If no window system has been specified, try to use the terminal. */
if (! isatty (0))
{

View file

@ -1110,6 +1110,25 @@ main (argc, argv, envp)
CANNOT_DUMP is defined. */
syms_of_keyboard ();
#ifdef macintosh
/* init_window_once calls make_terminal_frame which on Mac OS creates
a full-fledge output_mac type frame. This does not work correctly
before syms_of_textprop, syms_of_macfns, syms_of_ccl,
syms_of_fontset, syms_of_xterm, syms_of_search, x_term_init, and
init_keyboard have already been called. */
syms_of_textprop ();
syms_of_macfns ();
syms_of_ccl ();
syms_of_fontset ();
syms_of_macterm ();
syms_of_macmenu ();
syms_of_data ();
syms_of_search ();
x_term_init ();
init_keyboard ();
#endif
init_window_once (); /* Init the window system */
init_fileio_once (); /* Must precede any path manipulation. */
}
@ -1306,7 +1325,10 @@ main (argc, argv, envp)
/* The basic levels of Lisp must come first */
/* And data must come first of all
for the sake of symbols like error-message */
#ifndef macintosh
/* Called before init_window_once for Mac OS. */
syms_of_data ();
#endif
syms_of_alloc ();
syms_of_lread ();
syms_of_print ();
@ -1322,7 +1344,10 @@ main (argc, argv, envp)
syms_of_casetab ();
syms_of_callproc ();
syms_of_category ();
#ifndef macintosh
/* Called before init_window_once for Mac OS. */
syms_of_ccl ();
#endif
syms_of_charset ();
syms_of_cmds ();
#ifndef NO_DIR_LIBRARY
@ -1345,7 +1370,10 @@ main (argc, argv, envp)
syms_of_minibuf ();
syms_of_mocklisp ();
syms_of_process ();
#ifndef macintosh
/* Called before init_window_once for Mac OS. */
syms_of_search ();
#endif
syms_of_frame ();
syms_of_syntax ();
syms_of_term ();
@ -1353,8 +1381,10 @@ main (argc, argv, envp)
#ifdef HAVE_SOUND
syms_of_sound ();
#endif
#ifndef macintosh
/* Called before init_window_once for Mac OS. */
syms_of_textprop ();
#endif
syms_of_composite ();
#ifdef VMS
syms_of_vmsproc ();
@ -1374,8 +1404,10 @@ main (argc, argv, envp)
#endif /* HAVE_X_WINDOWS */
#ifndef HAVE_NTGUI
#ifndef macintosh
syms_of_xmenu ();
#endif
#endif
#ifdef HAVE_NTGUI
syms_of_w32term ();
@ -1411,7 +1443,10 @@ main (argc, argv, envp)
#endif /* VMS */
init_display (); /* Determine terminal type. init_sys_modes uses results */
}
#ifndef macintosh
/* Called before init_window_once for Mac OS. */
init_keyboard (); /* This too must precede init_sys_modes */
#endif
#ifdef VMS
init_vmsproc (); /* And this too. */
#endif /* VMS */

View file

@ -1397,9 +1397,15 @@ syms_of_fontset ()
FONTSET_ID (Vdefault_fontset) = make_number (0);
FONTSET_NAME (Vdefault_fontset)
= build_string ("-*-*-*-*-*-*-*-*-*-*-*-*-fontset-default");
#ifdef macintosh
FONTSET_ASCII (Vdefault_fontset)
= Fcons (make_number (0),
build_string ("-apple-monaco-medium-r-*--*-120-*-*-*-*-mac-roman"));
#else
FONTSET_ASCII (Vdefault_fontset)
= Fcons (make_number (0),
build_string ("-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1"));
#endif
AREF (Vfontset_table, 0) = Vdefault_fontset;
next_fontset_id = 1;

View file

@ -29,6 +29,9 @@ Boston, MA 02111-1307, USA. */
#ifdef WINDOWSNT
#include "w32term.h"
#endif
#ifdef macintosh
#include "macterm.h"
#endif
#include "buffer.h"
/* These help us bind and responding to switch-frame events. */
#include "commands.h"
@ -45,11 +48,6 @@ Boston, MA 02111-1307, USA. */
#include "dosfns.h"
#endif
#ifdef macintosh
extern struct mac_output *NewMacWindow ();
extern void DisposeMacWindow (struct mac_output *);
#endif
/* Evaluate this expression to rebuild the section of syms_of_frame
that initializes and staticpros the symbols declared below. Note
that Emacs 18 has a bug that keeps C-x C-e from being able to
@ -582,25 +580,15 @@ make_terminal_frame ()
f->output_method = output_termcap;
#else
#ifdef macintosh
f->output_data.mac = NewMacWindow(f);
f->output_data.mac->background_pixel = 0xffffff;
f->output_data.mac->foreground_pixel = 0;
f->output_data.mac->n_param_faces = 0;
f->output_data.mac->n_computed_faces = 0;
f->output_data.mac->size_computed_faces = 0;
f->output_method = output_mac;
f->auto_raise = 1;
f->auto_lower = 1;
init_frame_faces (f);
#else /* !macintosh */
make_mac_terminal_frame (f);
#else
f->output_data.x = &tty_display;
#endif /* !macintosh */
#endif /* macintosh */
#endif /* MSDOS */
#ifndef macintosh
if (!noninteractive)
init_frame_faces (f);
#endif
return f;
}
@ -1288,14 +1276,6 @@ but if the second optional argument FORCE is non-nil, you may do so.")
x_destroy_window (f);
#endif
/* Done by x_destroy_window above already */
#if 0
#ifdef macintosh
if (FRAME_MAC_P (f))
DisposeMacWindow (f->output_data.mac);
#endif
#endif
f->output_data.nothing = 0;
/* If we've deleted the last_nonminibuf_frame, then try to find
@ -2229,11 +2209,6 @@ enabled such bindings for that variable with `make-variable-frame-local'.")
IT_set_frame_parameters (f, alist);
else
#endif
#ifdef macintosh
if (FRAME_MAC_P (f))
mac_set_frame_parameters (f, alist);
else
#endif
{
int length = XINT (Flength (alist));

View file

@ -259,7 +259,7 @@ struct frame
/* Number of lines of menu bar. */
int menu_bar_lines;
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
/* Nonzero means using a menu bar that comes from the X toolkit. */
int external_menu_bar;
#endif
@ -442,7 +442,7 @@ typedef struct frame *FRAME_PTR;
/* Nonzero if this frame should display a menu bar
in a way that does not use any text lines. */
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
#define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar
#else
#define FRAME_EXTERNAL_MENU_BAR(f) 0

View file

@ -70,6 +70,10 @@ Boston, MA 02111-1307, USA. */
#include "w32term.h"
#endif /* HAVE_NTGUI */
#ifdef macintosh
#include "macterm.h"
#endif
/* Include systime.h after xterm.h to avoid double inclusion of time.h. */
#include "systime.h"
@ -93,7 +97,7 @@ extern int input_fd;
#ifdef HAVE_WINDOW_SYSTEM
/* Make all keyboard buffers much bigger when using X windows. */
#ifdef macintosh
/* But not too big (local data > 32K error) if on macintosh */
/* But not too big (local data > 32K error) if on macintosh. */
#define KBD_BUFFER_SIZE 512
#else
#define KBD_BUFFER_SIZE 4096
@ -3474,7 +3478,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
abort ();
#endif
}
#if defined (HAVE_X11) || defined (HAVE_NTGUI)
#if defined (HAVE_X11) || defined (HAVE_NTGUI) || defined (macintosh)
else if (event->kind == delete_window_event)
{
/* Make an event (delete-frame (FRAME)). */
@ -3482,6 +3486,8 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
obj = Fcons (Qdelete_frame, Fcons (obj, Qnil));
kbd_fetch_ptr = event + 1;
}
#endif
#if defined (HAVE_X11) || defined (HAVE_NTGUI)
else if (event->kind == iconify_event)
{
/* Make an event (iconify-frame (FRAME)). */
@ -3503,7 +3509,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
XSETBUFFER (obj, current_buffer);
kbd_fetch_ptr = event + 1;
}
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
else if (event->kind == menu_bar_activate_event)
{
kbd_fetch_ptr = event + 1;
@ -5093,7 +5099,7 @@ make_lispy_event (event)
}
#endif /* HAVE_MOUSE */
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
case MENU_BAR_EVENT:
if (EQ (event->arg, event->frame_or_window))
/* This is the prefix key. We translate this to

File diff suppressed because it is too large Load diff

View file

@ -51,6 +51,9 @@ extern int tgetnum P_ ((char *id));
#ifdef HAVE_X_WINDOWS
#include "xterm.h"
#endif
#ifdef macintosh
#include "macterm.h"
#endif
static void turn_on_face P_ ((struct frame *, int face_id));
static void turn_off_face P_ ((struct frame *, int face_id));

View file

@ -42,6 +42,9 @@ Boston, MA 02111-1307, USA. */
#ifdef MSDOS
#include "msdos.h"
#endif
#ifdef macintosh
#include "macterm.h"
#endif
#ifndef max
#define max(a, b) ((a) < (b) ? (b) : (a))

View file

@ -194,13 +194,16 @@ Boston, MA 02111-1307, USA. */
#ifdef WINDOWSNT
#include "w32term.h"
#endif
#ifdef macintosh
#include "macterm.h"
#endif
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
#define INFINITY 10000000
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
extern void set_frame_menubar P_ ((struct frame *f, int, int));
extern int pending_menu_activation;
#endif
@ -767,7 +770,7 @@ window_text_bottom_y (w)
{
struct frame *f = XFRAME (w->frame);
int height = XFASTINT (w->height) * CANON_Y_UNIT (f);
if (WINDOW_WANTS_MODELINE_P (w))
height -= CURRENT_MODE_LINE_HEIGHT (w);
return height;
@ -6392,6 +6395,8 @@ echo_area_display (update_frame_p)
if (!FRAME_VISIBLE_P (f) || !f->glyphs_initialized_p)
return 0;
/* The terminal frame is used as the first Emacs frame on the Mac OS. */
#ifndef macintosh
#ifdef HAVE_WINDOW_SYSTEM
/* When Emacs starts, selected_frame may be a visible terminal
frame, even if we run under a window system. If we let this
@ -6400,6 +6405,7 @@ echo_area_display (update_frame_p)
&& !NILP (Vwindow_system))
return 0;
#endif /* HAVE_WINDOW_SYSTEM */
#endif
/* Redraw garbaged frames. */
if (frame_garbaged)
@ -6732,7 +6738,7 @@ update_menu_bar (f, save_match_data)
if (FRAME_WINDOW_P (f)
?
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
FRAME_EXTERNAL_MENU_BAR (f)
#else
FRAME_MENU_BAR_LINES (f) > 0
@ -6779,8 +6785,14 @@ update_menu_bar (f, save_match_data)
FRAME_MENU_BAR_ITEMS (f) = menu_bar_items (FRAME_MENU_BAR_ITEMS (f));
/* Redisplay the menu bar in case we changed it. */
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
if (FRAME_WINDOW_P (f))
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
if (FRAME_WINDOW_P (f)
#if defined (macintosh)
/* All frames on Mac OS share the same menubar. So only the
selected frame should be allowed to set it. */
&& f == SELECTED_FRAME ()
#endif
)
set_frame_menubar (f, 0, 0);
else
/* On a terminal screen, the menu bar is an ordinary screen
@ -9666,7 +9678,7 @@ redisplay_window (window, just_this_one_p)
if (FRAME_WINDOW_P (f))
{
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
redisplay_menu_p = FRAME_EXTERNAL_MENU_BAR (f);
#else
redisplay_menu_p = FRAME_MENU_BAR_LINES (f) > 0;
@ -12113,6 +12125,10 @@ display_menu_bar (w)
if (FRAME_X_P (f))
return;
#endif
#ifdef macintosh
if (FRAME_MAC_P (f))
return;
#endif
#ifdef USE_X_TOOLKIT
xassert (!FRAME_WINDOW_P (f));

View file

@ -218,6 +218,33 @@ Boston, MA 02111-1307, USA. */
#define FONT_WIDTH FONT_MAX_WIDTH
#endif /* WINDOWSNT */
#ifdef macintosh
#include "macterm.h"
#define x_display_info mac_display_info
#define check_x check_mac
extern XGCValues *XCreateGC (void *, WindowPtr, unsigned long, XGCValues *);
static INLINE GC
x_create_gc (f, mask, xgcv)
struct frame *f;
unsigned long mask;
XGCValues *xgcv;
{
GC gc;
gc = XCreateGC (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f), mask, xgcv);
return gc;
}
static INLINE void
x_free_gc (f, gc)
struct frame *f;
GC gc;
{
XFreeGC (FRAME_MAC_DISPLAY (f), gc);
}
#endif
#include "buffer.h"
#include "dispextern.h"
#include "blockinput.h"
@ -1304,7 +1331,6 @@ defined_color (f, color_name, color_def, alloc)
#endif
#ifdef macintosh
else if (FRAME_MAC_P (f))
/* FIXME: mac_defined_color doesn't exist! */
return mac_defined_color (f, color_name, color_def, alloc);
#endif
else
@ -1800,8 +1826,11 @@ static struct frame *font_frame;
font height, then for weight, then for slant.' This variable can be
set via set-face-font-sort-order. */
#ifdef macintosh
static int font_sort_order[4] = { XLFD_SWIDTH, XLFD_POINT_SIZE, XLFD_WEIGHT, XLFD_SLANT };
#else
static int font_sort_order[4];
#endif
/* Look up FONT.fields[FIELD_INDEX] in TABLE which has DIM entries.
TABLE must be sorted by TABLE[i]->name in ascending order. Value
@ -2242,7 +2271,7 @@ x_face_list_fonts (f, pattern, fonts, nfonts, try_alternatives_p,
names = XListFonts (dpy, pattern, nfonts, &n);
UNBLOCK_INPUT;
#endif /* HAVE_X_WINDOWS */
#ifdef WINDOWSNT
#if defined (WINDOWSNT) || defined (macintosh)
/* NTEMACS_TODO : currently this uses w32_list_fonts, but it may be
better to do it the other way around. */
Lisp_Object lfonts;
@ -2255,7 +2284,11 @@ x_face_list_fonts (f, pattern, fonts, nfonts, try_alternatives_p,
/* Get the list of fonts matching PATTERN. */
BLOCK_INPUT;
#ifdef WINDOWSNT
lfonts = w32_list_fonts (f, lpattern, 0, nfonts);
#else /* macintosh */
lfonts = x_list_fonts (f, lpattern, 0, nfonts);
#endif
UNBLOCK_INPUT;
/* Count fonts returned */
@ -2273,7 +2306,7 @@ x_face_list_fonts (f, pattern, fonts, nfonts, try_alternatives_p,
names[i] = XSTRING (XCAR (tem))->data;
tem = XCDR (tem);
}
#endif /* WINDOWSNT */
#endif /* defined (WINDOWSNT) || defined (macintosh) */
if (names)
{
@ -4121,6 +4154,7 @@ DEFUN ("internal-face-x-get-resource", Finternal_face_x_get_resource,
{
Lisp_Object value = Qnil;
#ifndef WINDOWSNT
#ifndef macintosh
CHECK_STRING (resource, 0);
CHECK_STRING (class, 1);
CHECK_LIVE_FRAME (frame, 2);
@ -4128,6 +4162,7 @@ DEFUN ("internal-face-x-get-resource", Finternal_face_x_get_resource,
value = display_x_get_resource (FRAME_X_DISPLAY_INFO (XFRAME (frame)),
resource, class, Qnil, Qnil);
UNBLOCK_INPUT;
#endif /* not macintosh */
#endif /* not WINDOWSNT */
return value;
}
@ -4872,6 +4907,9 @@ prepare_face_for_display (f, face)
#endif
#ifdef WINDOWSNT
xgcv.font = face->font;
#endif
#ifdef macintosh
xgcv.font = face->font;
#endif
mask |= GCFont;
}
@ -6181,6 +6219,18 @@ realize_x_face (cache, attrs, c, base_face)
fontset = default_face->fontset;
face->fontset = make_fontset_for_ascii_face (f, fontset);
face->font = NULL; /* to force realize_face to load font */
#ifdef macintosh
/* Load the font if it is specified in ATTRS. This fixes
changing frame font on the Mac. */
if (STRINGP (attrs[LFACE_FONT_INDEX]))
{
struct font_info *font_info =
FS_LOAD_FONT (f, 0, XSTRING (attrs[LFACE_FONT_INDEX])->data, -1);
if (font_info)
face->font = font_info->font;
}
#endif
}
/* Load colors, and set remaining attributes. */
@ -7037,7 +7087,7 @@ A value of nil means don't allow any scalable fonts.\n\
A value of t means allow any scalable font.\n\
Otherwise, value must be a list of regular expressions. A font may be\n\
scaled if its name matches a regular expression in the list.");
#ifdef WINDOWSNT
#if defined (WINDOWSNT) || defined (macintosh)
/* Windows uses mainly truetype fonts, so disallowing scalable fonts
by default limits the fonts available severely. */
Vscalable_fonts_allowed = Qt;