changeset 65633:cef93d58fdb4

Change `Mac OS 8 or 9' to `Mac OS Classic'. (Mac OS): Update feature support status. (Mac Input): List supported input scripts. Remove description about `mac-keyboard-text-encoding'. Mention mouse button emulation and related variables. (Mac International): Mention Central European and Cyrillic support. Now `keyboard-coding-system' is dynamically changed. Add description about coding system for selection. Add description about language environment. (Mac Environment Variables): Mention `~/.MacOSX/environment.plist'. Give example of command line arguments. Add Preferences support. (Mac Directories): Explicitly state that this node is for Mac OS Classic only. (Mac Font Specs): Mention specification for scalable fonts. List supported charsets. Add preferred way of creating fontsets. Add description about `mac-allow-anti-aliasing'. (Mac Functions): Add descriptions about `mac-set-file-creator', `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type', and `mac-get-preference'.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Wed, 21 Sep 2005 08:04:18 +0000
parents cfd2811479a1
children 52f881b47490
files man/macos.texi
diffstat 1 files changed, 252 insertions(+), 107 deletions(-) [+]
line wrap: on
line diff
--- a/man/macos.texi	Wed Sep 21 08:03:58 2005 +0000
+++ b/man/macos.texi	Wed Sep 21 08:04:18 2005 +0000
@@ -3,48 +3,47 @@
 @c   2005 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
+@appendix Emacs and Mac OS
 @cindex Mac OS
 @cindex Macintosh
 
-  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,
-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.
+  This section briefly describes the peculiarities of using Emacs
+under Mac OS with native window system support.  For Mac OS X, Emacs
+can be built either without window system support, with X11, or with
+Carbon API.  This section only applies to the Carbon build.  For Mac
+OS Classic, Emacs can be built with or without Carbon API, and this
+section applies to either of them because they run on the native
+window system.
 
-  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.
+  Emacs built on Mac OS X supports most of its major features except
+display support of PostScript images.  The following features of Emacs
+are not supported on Mac OS Classic: 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.  Synchronous subprocesses
+(@code{call-process}) are supported on non-Carbon build, but
+specially-crafted external programs are needed.  Since external
+programs to handle commands such as @code{print-buffer} and
+@code{diff} are not available on Mac OS Classic, they are not
+supported.  Non-Carbon build on Mac OS Classic does not support some
+features such as file dialogs, drag-and-drop, and Unicode menus.
 
 @menu
-* Input: Mac Input.                Keyboard input on the Mac.
-* Intl: Mac International.         International character sets on the Mac.
+* Input: Mac Input.                Keyboard and mouse input on Mac.
+* Intl: Mac International.         International character sets on Mac.
 * Env: Mac Environment Variables.  Setting environment variables for Emacs.
-* Directories: Mac Directories.    Volumes and directories on the Mac.
-* Font: Mac Font Specs.            Specifying fonts on the Mac.
+* Directories: Mac Directories.    Volumes and directories on Mac.
+* Font: Mac Font Specs.            Specifying fonts on Mac.
 * Functions: Mac Functions.        Mac-specific Lisp functions.
 @end menu
 
 @node Mac Input
-@section Keyboard Input on the Mac
+@section Keyboard and Mouse Input on Mac
 @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
+  On 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
@@ -55,89 +54,124 @@
 useful for entering non-@acronym{ASCII} Latin characters directly from the Mac
 keyboard, for example.
 
-  Emacs recognizes the setting in the Keyboard control panel and
-supports international and alternative keyboard layouts (e.g., Dvorak).
-Selecting one of the layouts from the keyboard layout pull-down menu
-will affect how the keys typed on the keyboard are interpreted.
-
-  The Mac OS intercepts and handles certain key combinations (e.g.,
-@key{command}-@key{SPC} for switching input languages).  These will not
-be passed to Emacs.
+  Emacs recognizes the setting in the Keyboard control panel (Mac OS
+Classic) or the International system preference pane (Mac OS X) and
+supports international and alternative keyboard layouts (e.g., Dvorak)
+if its script is either Roman, Japanese, Traditional Chinese, Korean,
+Cyrillic, Simplified Chinese, or Central European.  Keyboard layouts
+based on Unicode may not work properly.  Selecting one of the layouts
+from the keyboard layout pull-down menu will affect how the keys typed
+on the keyboard are interpreted.
 
-  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 not all Mac Roman characters
-that can be entered at the keyboard can be converted to ISO Latin-1
-characters.
+@vindex mac-pass-command-to-system
+@vindex mac-pass-control-to-system
+  Mac OS intercepts and handles certain key combinations (e.g.,
+@key{command}-@key{SPC} for switching input languages).  These will not
+be passed to Emacs.  One can disable this interception by setting
+@code{mac-pass-command-to-system} or @code{mac-pass-control-to-system}
+to @code{nil}.
 
-  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 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:
+@vindex mac-emulate-three-button-mouse
+  Especially for one-button mice, the multiple button feature can be
+emulated by setting @code{mac-emulate-three-button-mouse} to @code{t}
+or @code{reverse}.  If set to @code{t} (@code{reverse}, respectively),
+pressing the mouse button with the @key{option} key is recognized as
+the second (third) button, and that with the @key{command} key is
+recognized as the third (second) button.
 
-@lisp
-(set-keyboard-coding-system 'iso-latin-2)
-@end lisp
+@vindex mac-wheel-button-is-mouse-2
+  For multi-button mice, the wheel button and the secondary button are
+recognized as the second and the third button, respectively.  If
+@code{mac-wheel-button-is-mouse-2} is set to @code{nil}, their roles
+are exchanged.
 
 @node Mac International
-@section International Character Set Support on the Mac
+@section International Character Set Support on Mac
 @cindex Mac Roman coding system
 @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
-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.
+  Mac uses non-standard encodings for the upper 128 single-byte
+characters.  They also deviate from the ISO 2022 standard by using
+character codes in the range 128-159.  The coding systems
+@code{mac-roman}, @code{mac-centraleurroman}, and @code{mac-cyrillic}
+are used to represent these Mac encodings.
 
   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 @key{RET} k mac-roman @key{RET}}, customize the variable
-@code{keyboard-coding-system}, or put this in your init file:
-
-@lisp
-(set-keyboard-coding-system 'mac-roman)
-@end lisp
-
-@noindent
-This is useful for editing documents in native Mac encoding.
+is run on Mac, and used by default.  It displays as many kinds of
+characters as possible using 12-point Monaco as a base font.  If you
+see some character as a hollow box with this fontset, then it's almost
+impossible to display it only by customizing font settings (@pxref{Mac
+Font Specs}).
 
   You can use input methods provided either by LEIM (@pxref{Input
-Methods}) or the Mac OS to enter international characters.
-
-  To use the former, see the International Character Set Support section
-of the manual (@pxref{International}).
+Methods}) or Mac OS to enter international characters.  To use the
+former, see the International Character Set Support section 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 @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
-the keyboard layout pull-down menu.
+  Emacs on Mac OS automatically changes the value of
+@code{keyboard-coding-system} according to the current keyboard
+layout.  So users don't need to set it manually, and even if set, it
+will be changed when the keyboard layout change is detected next time.
 
   The Mac clipboard and the Emacs kill ring (@pxref{Killing}) are
-connected as follows: the most recent kill is copied to the clipboard
-when Emacs is suspended and the contents of the clipboard is inserted
-into the kill ring when Emacs resumes.  The result is that you can yank
-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.
+synchronized by default: you can yank 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.  This feature can be
+disabled by setting @code{x-select-enable-clipboard} to @code{nil}.
+One can still do copy and paste with another application from the Edit
+menu.
+
+  On Mac, the role of the coding system for selection that is set by
+@code{set-selection-coding-system} (@pxref{Specify Coding}) is
+two-fold.  First, it is used as a preferred coding system for the
+traditional text flavor that does not specify any particular encodings
+and is mainly used by applications on Mac OS Classic.  Second, it
+specifies the intermediate encoding for the UTF-16 text flavor that is
+mainly used by applications on Mac OS X.
 
-  The encoding of text selections must be specified using the commands
-@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.
+  When pasting UTF-16 text data from the clipboard, it is first
+converted to the encoding specified by the selection coding system
+using the converter in the Mac OS system, and then decoded into the
+Emacs internal encoding using the converter in Emacs.  If the first
+conversion failed, then the UTF-16 data is directly converted to Emacs
+internal encoding using the converter in Emacs.  Copying UTF-16 text
+to the clipboard goes through the inverse path.  The reason for this
+two-path decoding is to avoid subtle differences in Unicode mappings
+between the Mac OS system and Emacs such as various kinds of hyphens,
+and to minimize users' customization.  For example, users that mainly
+use Latin characters would prefer Greek characters to be decoded into
+the @code{mule-unicode-0100-24ff} charset, but Japanese users would
+prefer them to be decoded into the @code{japanese-jisx0208} charset.
+Since the coding system for selection is automatically set according
+to the system locale setting, users usually don't have to set it
+manually.
+
+  The default language environment (@pxref{Language Environments}) is
+set according to the locale setting at the startup time.  On Mac OS,
+the locale setting is consulted in the following order:
 
+@enumerate
+@item
+Environment variables @env{LC_ALL}, @env{LC_CTYPE} and @env{LANG} as
+in other systems.
+
+@item
+Preference @code{AppleLocale} that is set by default on Mac OS X 10.3
+and later.
+
+@item
+Preference @code{AppleLanguages} that is set by default on Mac OS X
+10.1 and later.
+
+@item
+Variable @code{mac-system-locale} that is derived from the system
+language and region codes.  This variable is available on all
+supported Mac OS versions including Mac OS Classic.
+@end enumerate
+
+  The default values of almost all variables about coding systems are
+also set according to the language environment.  So usually you don't
+have to customize these variables manually.
 
 @node Mac Environment Variables
 @section Environment Variables and Command Line Arguments.
@@ -145,10 +179,23 @@
 
   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.
+However, when it is run from the Finder as a GUI application, it only
+inherits environment variable values defined in the file
+@file{~/.MacOSX/environment.plist} that affects all the applications
+invoked from the Finder or the @command{open} command.
+
+  Command line arguments are specified like
 
-  On Mac OS 8 or 9, environment variables and command line arguments
+@example
+/Applications/Emacs.app/Contents/MacOS/Emacs -geometry 80x25 &
+@end example
+
+@noindent
+if Emacs is installed at @file{/Applications/Emacs.app}.  If Emacs is
+invoked like this, then it also inherits the values of environment
+variables from the shell from which it is invoked.
+
+  On Mac OS Classic, 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}.
@@ -169,12 +216,45 @@
 EMACS_UNIBYTE=1
 @end example
 
+@cindex Mac Preferences
+  Although Emacs on Mac does not support X resources (@pxref{X
+Resources}) directly, one can use the Preferences system in place of X
+resources.  For example, adding the line
+
+@example
+Emacs.cursorType: bar
+@end example
+
+@noindent
+to @file{~/.Xresources} in X11 corresponds to the execution of
+
+@example
+defaults write org.gnu.Emacs Emacs.cursorType bar
+@end example
+
+@noindent
+on Mac OS X.  One can use boolean or numeric values as well as string
+values as follows:
+
+@example
+defaults write org.gnu.Emacs Emacs.toolBar -bool false
+defaults write org.gnu.Emacs Emacs.lineSpacing -int 3
+@end example
+
+@noindent
+Try @kbd{M-x man RET defaults RET} for the usage of the
+@command{defaults} command.  Alternatively, if you have Developer
+Tools installed on Mac OS X, you can use Property List Editor to edit
+the file @file{~/Library/Preferences/org.gnu.Emacs.plist}.
+
 
 @node Mac Directories
-@section Volumes and Directories on the Mac
+@section Volumes and Directories on Mac
 @cindex file names (Mac OS)
 
-  The directory structure in the Mac OS is seen by Emacs as
+  This node applies to Mac OS Classic only.
+
+  The directory structure in Mac OS Classic is seen by Emacs as
 
 @example
 /@var{volumename}/@var{filename}
@@ -184,11 +264,11 @@
 @file{/} will display all volumes on the system.  You can use @file{..}
 to go up a directory level.
 
-  On Mac OS 8 or 9, to access files and folders on the desktop, look
+  On Mac OS Classic, 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, Emacs creates the Mac folder
+  On Mac OS Classic, 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}.
@@ -199,12 +279,12 @@
 
 
 @node Mac Font Specs
-@section Specifying Fonts on the Mac
+@section Specifying Fonts on Mac
 @cindex font names (Mac OS)
 
   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:
+a font name in Emacs on Mac, use a standard X font name:
 
 @smallexample
 -@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
@@ -216,11 +296,57 @@
 
   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}.
+specified by the name @samp{-apple-monaco-*-12-*-mac-roman}.  When
+using a particular size of scalable fonts, it must be specified in a
+format containing 14 @samp{-}s like
+@samp{-apple-monaco-medium-r-normal--13-*-*-*-*-*-mac-roman}.
+
+  You can specify a @code{mac-roman} font for @acronym{ASCII}
+characters like
+
+@lisp
+(add-to-list
+ 'default-frame-alist
+ '(font . "-apple-monaco-medium-r-normal--13-*-*-*-*-*-mac-roman"))
+@end lisp
+
+@noindent
+but that does not extend to ISO-8859-1: specifying a @code{mac-roman}
+font for Latin-1 characters introduces wrong glyphs.
+
+  Native Apple Traditional Chinese, Simplified Chinese, Japanese,
+Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have
+charsets @samp{big5-0}, @samp{gb2312.1980-0},
+@samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0},
+@samp{ksc5601.1989-0}, @samp{mac-centraleurroman},
+@samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats},
+respectively.
 
-  Native Apple Traditional Chinese, Simplified Chinese, Japanese, and
-Korean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},
-@samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively.
+  Since Emacs as of the current version uses QuickDraw Text routines
+for drawing texts, only characters in the charsets listed above can be
+displayed with the OS-bundled fonts, even if other applications that
+use @acronym{ATSUI} or Cocoa can display variety of characters with
+them.
+
+  The use of @code{create-fontset-from-fontset-spec} (@pxref{Defining
+Fontsets}) for defining fontsets often results in wrong ones
+especially when using only OS-bundled fonts.  The recommended way is
+to create a fontset using @code{create-fontset-from-mac-roman-font}:
+
+@lisp
+(create-fontset-from-mac-roman-font
+ "-apple-courier-medium-r-normal--13-*-*-*-*-*-mac-roman"
+ nil "foo")
+@end lisp
+
+@noindent
+and then optionally specifying Chinese, Japanese, or Korean font
+families using @code{set-fontset-font}:
+
+@lisp
+(set-fontset-font "fontset-foo"
+		  'chinese-gb2312 '("song" . "gb2312.1980-0"))
+@end lisp
 
   Single-byte fonts converted from GNU fonts in BDF format, which are not
 in the Mac Roman encoding, have foundry, family, and character sets
@@ -228,6 +354,12 @@
 @samp{ETL-Fixed-ISO8859-1} contains fonts which can be referred to by
 the name @samp{-ETL-fixed-*-iso8859-1}.
 
+@vindex mac-allow-anti-aliasing
+  Emacs uses the QuickDraw text rendering by default.  On Mac OS X
+10.2 and later, it can be changed so that it uses the Quartz 2D text
+rendering (aka CG text rendering) by setting
+@code{mac-allow-anti-aliasing} to @code{t}.  However, it is reported
+to sometimes leave some garbages.
 
 @node Mac Functions
 @section Mac-Specific Lisp Functions
@@ -246,6 +378,19 @@
 are useful for constructing AppleScript commands to be passed to
 @code{do-applescript}.
 
+@findex mac-set-file-creator
+@findex mac-get-file-creator
+@findex mac-set-file-type
+@findex mac-get-file-type
+  The functions @code{mac-set-file-creator},
+@code{mac-get-file-creator}, @code{mac-set-file-type}, and
+@code{mac-get-file-type} can be used to set and get creator and file
+codes.
+
+@findex mac-get-preference
+  The function @code{mac-get-preference} returns the preferences value
+converted to a Lisp object for a specified key and application.
+
 @ignore
    arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6
 @end ignore