Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
[bpt/emacs.git] / man / macos.texi
index 3e433a0..6a7b291 100644 (file)
@@ -1,27 +1,31 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2000 Free Software Foundation, Inc.
+@c Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Mac OS, MS-DOS, Antinews, Top
 @appendix Emacs and the Mac OS
 @cindex Mac OS
 @cindex Macintosh
 
-  Emacs built on the Mac OS supports many of its major features:
+  Emacs built on Mac OS X supports most of its major features:
 multiple frames, colors, scroll bars, menu bars, use of the mouse,
-fontsets, international characters, input methods, coding systems, and
-synchronous subprocesses (@code{call-process}).  Much of this works in
-the same way as on other platforms and is therefore documented in the
-rest of this manual.  This section describes the peculiarities of using
-Emacs under the Mac OS.
-
-  The following features of Emacs are not yet supported on the Mac:
-unexec (@code{dump-emacs}), asynchronous subprocesses
-(@code{start-process}), and networking (@code{open-network-connection}).
-As a result, packages such as Gnus, Ispell, and Comint do not work.
-
-  Since external Unix programs to handle commands such as
-@code{print-buffer} and @code{diff} are not available on the Mac OS,
-they are not supported in the Mac OS version.
+fontsets, international characters, input methods, coding systems,
+asynchronous and synchronous subprocesses, unexec (@code{dump-emacs}),
+and networking (@code{open-network-stream}).  Support for various
+image file formats has not been implemented yet.
+
+  The following features of Emacs are not yet supported on the Mac OS
+8 or 9: unexec (@code{dump-emacs}), asynchronous subprocesses
+(@code{start-process}), and networking (@code{open-network-stream}).
+As a result, packages such as Gnus, GUD, and Comint do not work.
+However, synchronous subprocesses (@code{call-process}) are supported.
+Since external programs to handle commands such as @code{print-buffer}
+and @code{diff} are not available on Mac OS 8 or 9, they are not
+supported.
+
+  Most of the features that are supported work in the same way as on
+other platforms and are therefore documented in the rest of this
+manual.  This section describes the peculiarities of using Emacs under
+the Mac OS.
 
 @menu
 * Input: Mac Input.                Keyboard input on the Mac.
@@ -34,16 +38,16 @@ they are not supported in the Mac OS version.
 
 @node Mac Input
 @section Keyboard Input on the Mac
-@cindex Meta (under Mac OS)
-@cindex Mac keyboard coding
+@cindex Meta (Mac OS)
+@cindex keyboard coding (Mac OS)
 @vindex mac-command-key-is-meta
 @vindex mac-keyboard-text-encoding
 
   On the Mac, Emacs can use either the @key{option} key or the
 @key{command} key as the @key{META} key.  If the value of the variable
 @code{mac-command-key-is-meta} is non-@code{nil} (its default value),
-Emacs uses the @key{command} key as the @key{META} key.  Otherwise it uses the
-@key{option} key as the @key{META} key.
+Emacs uses the @key{command} key as the @key{META} key.  Otherwise it
+uses the @key{option} key as the @key{META} key.
 
   Most people should want to use the @key{command} key as the @key{META} key,
 so that dead-key processing with the @key{option} key will still work.  This is
@@ -62,15 +66,16 @@ be passed to Emacs.
   The Mac keyboard ordinarily generates characters in the Mac Roman
 encoding.  To use it for entering ISO Latin-1 characters directly, set
 the value of the variable @code{mac-keyboard-text-encoding} to
-@code{kTextEncodingISOLatin1}.  Note that that not all Mac Roman
-characters that can be entered at the keyboard can be converted to ISO
-Latin-1 characters.
+@code{kTextEncodingISOLatin1}.  Note that not all Mac Roman characters
+that can be entered at the keyboard can be converted to ISO Latin-1
+characters.
 
-  To enter ISO Latin-2 characters directly from the Mac keyboard.  Set
+  To enter ISO Latin-2 characters directly from the Mac keyboard, set
 the value of @code{mac-keyboard-text-encoding} to
 @code{kTextEncodingISOLatin2}.  Then let Emacs know that the keyboard
-generates Latin-2 codes by typink @kbd{C-x RET k iso-latin-2 RET}.  To
-make this setting permanent, put this in your @file{.emacs} init file:
+generates Latin-2 codes, by typing @kbd{C-x @key{RET} k iso-latin-2
+@key{RET}}.  To make this setting permanent, put this in your
+@file{.emacs} init file:
 
 @lisp
 (set-keyboard-coding-system 'iso-latin-2)
@@ -79,24 +84,25 @@ make this setting permanent, put this in your @file{.emacs} init file:
 @node Mac International
 @section International Character Set Support on the Mac
 @cindex Mac Roman coding system
-@cindex Mac clipboard support
+@cindex clipboard support (Mac OS)
 
   The Mac uses a non-standard encoding for the upper 128 single-byte
-characters.  It also deviates from the ISO 2022 standard by using code
-points in the range 128-159.  The coding system @code{mac-roman} is used
-to represent this Mac encoding.  It is used for editing files stored in
-this native encoding, and for displaying file names in Dired mode.
+characters.  It also deviates from the ISO 2022 standard by using
+character codes in the range 128-159.  The coding system
+@code{mac-roman} is used to represent this Mac encoding.  It is used
+for editing files stored in this native encoding, and for displaying
+file names in Dired mode.
 
   Any native (non-symbol) Mac font can be used to correctly display
 characters in the @code{mac-roman} coding system.
 
-  The fontset @code{fontset-mac} is created automatically when Emacs is
-run on the Mac by the following expression.  It displays characters in
-the @code{mac-roman} coding system using 12-point Monaco.
+  The fontset @code{fontset-mac} is created automatically when Emacs
+is run on the Mac.  It displays characters in the @code{mac-roman}
+coding system using 12-point Monaco.
 
   To insert characters directly in the @code{mac-roman} coding system,
-type @kbd{C-x RET k mac-roman RET}, or put this in your @file{.emacs}
-init file:
+type @kbd{C-x @key{RET} k mac-roman @key{RET}}, customize the option
+@code{keyboard-coding-system}, or put this in your init file:
 
 @lisp
 (set-keyboard-coding-system 'mac-roman)
@@ -109,10 +115,10 @@ This is useful for editing documents in native Mac encoding.
 Methods}) or the Mac OS to enter international characters.
 
   To use the former, see the International Character Set Support section
-of the manual.
+of the manual (@pxref{International}).
 
   To use input methods provided by the Mac OS, set the keyboard coding
-system accordingly using the @kbd{C-x RET k} command
+system accordingly using the @kbd{C-x @key{RET} k} command
 (@code{set-keyboard-coding-system}).  For example, for Traditional
 Chinese, use @samp{chinese-big5} as keyboard coding system; for
 Japanese, use @samp{sjis}, etc.  Then select the desired input method in
@@ -126,19 +132,25 @@ a piece of text and paste it into another Mac application, or cut or copy
 one in another Mac application and yank it into a Emacs buffer.
 
   The encoding of text selections must be specified using the commands
-@kbd{C-x RET x} (@code{set-selection-coding-system}) or @kbd{C-x RET X}
-(@code{set-next-selection-coding-system}) (e.g., for Traditional
-Chinese, use @samp{chinese-big5-mac} and for Japanese,
+@kbd{C-x @key{RET} x} (@code{set-selection-coding-system}) or @kbd{C-x
+@key{RET} X} (@code{set-next-selection-coding-system}) (e.g., for
+Traditional Chinese, use @samp{chinese-big5-mac} and for Japanese,
 @samp{sjis-mac}).  @xref{Specify Coding}, for more details.
 
 
 @node Mac Environment Variables
 @section Environment Variables and Command Line Arguments.
-@cindex Mac environment variables
+@cindex environment variables (Mac OS)
+
+  On Mac OS X, when Emacs is run in a terminal, it inherits the values
+of environment variables from the shell from which it is invoked.
+However, when it is run from the Finder as a GUI application, it
+inherits no environment variable values.
 
-  Environment variables and command line arguments for Emacs can be set
-by modifying the @samp{STR#} resources 128 and 129, respectively.  A common
-environment variable that one may want to set is @samp{HOME}.
+  On Mac OS 8 or 9, environment variables and command line arguments
+for Emacs can be set by modifying the @samp{STR#} resources 128 and
+129, respectively.  A common environment variable that one may want to
+set is @samp{HOME}.
 
   The way to set an environment variable is by adding a string of the
 form
@@ -159,7 +171,7 @@ EMACS_UNIBYTE=1
 
 @node Mac Directories
 @section Volumes and Directories on the Mac
-@cindex file names under Mac OS
+@cindex file names (Mac OS)
 
   The directory structure in the Mac OS is seen by Emacs as 
 
@@ -168,46 +180,46 @@ EMACS_UNIBYTE=1
 @end example
 
 So when Emacs requests a file name, doing file name completion on
-@file{/} will display all volumes on the system.  As in Unix, @file{..}
-can be used to go up a directory level.
+@file{/} will display all volumes on the system.  You can use @file{..}
+to go up a directory level.
 
-  To access files and folders on the desktop, look in the folder
-@file{Desktop Folder} in your boot volume (this folder is usually
-invisible in the Mac @code{Finder}).
+  On Mac OS 8 or 9, to access files and folders on the desktop, look
+in the folder @file{Desktop Folder} in your boot volume (this folder
+is usually invisible in the Mac @code{Finder}).
 
-  Emacs creates the Mac folder @file{:Preferences:Emacs:} in the
-@file{System Folder} and uses it as the temporary directory.  The Unix
-emulation code maps the Unix directory @file{/tmp} to it.  Therefore it
-is best to avoid naming a volume @file{tmp}.  If everything works
-correctly, the program should leave no files in it when it exits.  You
-should be able to set the environment variable @code{TMPDIR} to use
-another directory but this folder will still be created.
+  On Mac OS 8 or 9, Emacs creates the Mac folder
+@file{:Preferences:Emacs:} in the @file{System Folder} and uses it as
+the temporary directory.  Emacs maps the directory name @file{/tmp/}
+to that.  Therefore it is best to avoid naming a volume @file{tmp}.
+If everything works correctly, the program should leave no files in it
+when it exits.  You should be able to set the environment variable
+@code{TMPDIR} to use another directory but this folder will still be
+created.
 
 
 @node Mac Font Specs
 @section Specifying Fonts on the Mac
-@cindex font names under Mac OS
+@cindex font names (Mac OS)
 
-  Fonts are specified to Emacs on the Mac in the form of a standard X
-font name.  I.e.,
+  It is rare that you need to specify a font name in Emacs; usually
+you specify face attributes instead.  But when you do need to specify
+a font name in Emacs on the Mac, use a standard X font name:
 
 @smallexample
--@var{foundry}-@var{family}-@var{weight}-@var{slant}-@var{width}--@var{pixels}-@var{points}-@var{hres}-@var{vres}-@var{spacing}-@var{avewidth}-@var{charset}
+-@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
+@dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset}
 @end smallexample
 
 @noindent
-where the fields refer to foundry, font family, weight, slant, width,
-pixels, point size, horizontal resolution, vertical resolution,
-spacing, average width, and character set, respectively.  Wildcards
-are supported as they are on X.
+@xref{Font X}.  Wildcards are supported as they are on X.
 
-  Native Apple fonts in Mac Roman encoding has foundry name @code{apple}
+  Native Apple fonts in Mac Roman encoding has maker name @code{apple}
 and charset @code{mac-roman}.  For example 12-point Monaco can be
 specified by the name @samp{-apple-monaco-*-12-*-mac-roman}.
 
   Native Apple Traditional Chinese, Simplified Chinese, Japanese, and
-Korean fonts have charsets @samp{big5-0}, @samp{gb2312-0},
-@samp{jisx0208.1983-sjis}, and @samp{ksc5601-1}, respectively.
+Korean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},
+@samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively.
 
   Single-byte fonts converted from GNU fonts in BDF format, which are not
 in the Mac Roman encoding, have foundry, family, and character sets
@@ -217,17 +229,18 @@ the name @samp{-ETL-fixed-*-iso8859-1}.
 
 
 @node Mac Functions
-@section Mac Specific Lisp Functions
-@cindex Lisp functions on the Mac OS
+@section Mac-Specific Lisp Functions
+@cindex Lisp functions specific to Mac OS
 
 @findex do-applescript
   The function @code{do-applescript} takes a string argument,
 executes it as an AppleScript command, and returns the result as a
 string.
 
-@findex mac-filename-to-unix
-@findex unix-filename-to-mac
-  The function @code{mac-filename-to-unix} takes a Mac file name and
-returns the Unix equivalent.  The function @code{unix-filename-to-mac}
-performs the opposite conversion.  They are useful for constructing
-AppleScript commands to be passed to @code{do-applescript}.
+@findex mac-file-name-to-posix
+@findex posix-file-name-to-mac
+  The function @code{mac-file-name-to-posix} takes a Mac file name and
+returns the GNU or Unix equivalent.  The function
+@code{posix-file-name-to-mac} performs the opposite conversion.  They
+are useful for constructing AppleScript commands to be passed to
+@code{do-applescript}.