(hi-lock-find-patterns): Protect also against invalid values for the pattern
[emacs.git] / man / macos.texi
blob9451f35f4a589941c8db382be6c51999b17a3f83
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Mac OS, MS-DOS, Antinews, Top
5 @appendix Emacs and the Mac OS
6 @cindex Mac OS
7 @cindex Macintosh
9   Emacs built on Mac OS X supports most of its major features:
10 multiple frames, colors, scroll bars, menu bars, use of the mouse,
11 fontsets, international characters, input methods, coding systems,
12 asynchronous and synchronous subprocesses, unexec (@code{dump-emacs}),
13 and networking (@code{open-network-stream}).  Support for various
14 image file formats has not been implemented yet.
16   The following features of Emacs are not yet supported on the Mac OS
17 8 or 9: unexec (@code{dump-emacs}), asynchronous subprocesses
18 (@code{start-process}), and networking (@code{open-network-stream}).
19 As a result, packages such as Gnus, GUD, and Comint do not work.
20 However, synchronous subprocesses (@code{call-process}) are supported.
21 Since external programs to handle commands such as @code{print-buffer}
22 and @code{diff} are not available on Mac OS 8 or 9, they are not
23 supported.
25   Most of the features that are supported work in the same way as on
26 other platforms and are therefore documented in the rest of this
27 manual.  This section describes the peculiarities of using Emacs under
28 the Mac OS.
30 @menu
31 * Input: Mac Input.                Keyboard input on the Mac.
32 * Intl: Mac International.         International character sets on the Mac.
33 * Env: Mac Environment Variables.  Setting environment variables for Emacs.
34 * Directories: Mac Directories.    Volumes and directories on the Mac.
35 * Font: Mac Font Specs.            Specifying fonts on the Mac.
36 * Functions: Mac Functions.        Mac-specific Lisp functions.
37 @end menu
39 @node Mac Input
40 @section Keyboard Input on the Mac
41 @cindex Meta (Mac OS)
42 @cindex keyboard coding (Mac OS)
43 @vindex mac-command-key-is-meta
44 @vindex mac-keyboard-text-encoding
46   On the Mac, Emacs can use either the @key{option} key or the
47 @key{command} key as the @key{META} key.  If the value of the variable
48 @code{mac-command-key-is-meta} is non-@code{nil} (its default value),
49 Emacs uses the @key{command} key as the @key{META} key.  Otherwise it
50 uses the @key{option} key as the @key{META} key.
52   Most people should want to use the @key{command} key as the @key{META} key,
53 so that dead-key processing with the @key{option} key will still work.  This is
54 useful for entering non-@acronym{ASCII} Latin characters directly from the Mac
55 keyboard, for example.
57   Emacs recognizes the setting in the Keyboard control panel and
58 supports international and alternative keyboard layouts (e.g., Dvorak).
59 Selecting one of the layouts from the keyboard layout pull-down menu
60 will affect how the keys typed on the keyboard are interpreted.
62   The Mac OS intercepts and handles certain key combinations (e.g.,
63 @key{command}-@key{SPC} for switching input languages).  These will not
64 be passed to Emacs.
66   The Mac keyboard ordinarily generates characters in the Mac Roman
67 encoding.  To use it for entering ISO Latin-1 characters directly, set
68 the value of the variable @code{mac-keyboard-text-encoding} to
69 @code{kTextEncodingISOLatin1}.  Note that not all Mac Roman characters
70 that can be entered at the keyboard can be converted to ISO Latin-1
71 characters.
73   To enter ISO Latin-2 characters directly from the Mac keyboard, set
74 the value of @code{mac-keyboard-text-encoding} to
75 @code{kTextEncodingISOLatin2}.  Then let Emacs know that the keyboard
76 generates Latin-2 codes, by typing @kbd{C-x @key{RET} k iso-latin-2
77 @key{RET}}.  To make this setting permanent, put this in your
78 @file{.emacs} init file:
80 @lisp
81 (set-keyboard-coding-system 'iso-latin-2)
82 @end lisp
84 @node Mac International
85 @section International Character Set Support on the Mac
86 @cindex Mac Roman coding system
87 @cindex clipboard support (Mac OS)
89   The Mac uses a non-standard encoding for the upper 128 single-byte
90 characters.  It also deviates from the ISO 2022 standard by using
91 character codes in the range 128-159.  The coding system
92 @code{mac-roman} is used to represent this Mac encoding.  It is used
93 for editing files stored in this native encoding, and for displaying
94 file names in Dired mode.
96   Any native (non-symbol) Mac font can be used to correctly display
97 characters in the @code{mac-roman} coding system.
99   The fontset @code{fontset-mac} is created automatically when Emacs
100 is run on the Mac.  It displays characters in the @code{mac-roman}
101 coding system using 12-point Monaco.
103   To insert characters directly in the @code{mac-roman} coding system,
104 type @kbd{C-x @key{RET} k mac-roman @key{RET}}, customize the variable
105 @code{keyboard-coding-system}, or put this in your init file:
107 @lisp
108 (set-keyboard-coding-system 'mac-roman)
109 @end lisp
111 @noindent
112 This is useful for editing documents in native Mac encoding.
114   You can use input methods provided either by LEIM (@pxref{Input
115 Methods}) or the Mac OS to enter international characters.
117   To use the former, see the International Character Set Support section
118 of the manual (@pxref{International}).
120   To use input methods provided by the Mac OS, set the keyboard coding
121 system accordingly using the @kbd{C-x @key{RET} k} command
122 (@code{set-keyboard-coding-system}).  For example, for Traditional
123 Chinese, use @samp{chinese-big5} as keyboard coding system; for
124 Japanese, use @samp{sjis}, etc.  Then select the desired input method in
125 the keyboard layout pull-down menu.
127   The Mac clipboard and the Emacs kill ring (@pxref{Killing}) are
128 connected as follows: the most recent kill is copied to the clipboard
129 when Emacs is suspended and the contents of the clipboard is inserted
130 into the kill ring when Emacs resumes.  The result is that you can yank
131 a piece of text and paste it into another Mac application, or cut or copy
132 one in another Mac application and yank it into a Emacs buffer.
134   The encoding of text selections must be specified using the commands
135 @kbd{C-x @key{RET} x} (@code{set-selection-coding-system}) or @kbd{C-x
136 @key{RET} X} (@code{set-next-selection-coding-system}) (e.g., for
137 Traditional Chinese, use @samp{chinese-big5-mac} and for Japanese,
138 @samp{sjis-mac}).  @xref{Specify Coding}, for more details.
141 @node Mac Environment Variables
142 @section Environment Variables and Command Line Arguments.
143 @cindex environment variables (Mac OS)
145   On Mac OS X, when Emacs is run in a terminal, it inherits the values
146 of environment variables from the shell from which it is invoked.
147 However, when it is run from the Finder as a GUI application, it
148 inherits no environment variable values.
150   On Mac OS 8 or 9, environment variables and command line arguments
151 for Emacs can be set by modifying the @samp{STR#} resources 128 and
152 129, respectively.  A common environment variable that one may want to
153 set is @samp{HOME}.
155   The way to set an environment variable is by adding a string of the
156 form
158 @example
159 ENV_VAR=VALUE
160 @end example
162 @noindent
163 to resource @samp{STR#} number 128 using @code{ResEdit}. To set up the
164 program to use unibyte characters exclusively, for example, add the
165 string
167 @example
168 EMACS_UNIBYTE=1
169 @end example
172 @node Mac Directories
173 @section Volumes and Directories on the Mac
174 @cindex file names (Mac OS)
176   The directory structure in the Mac OS is seen by Emacs as
178 @example
179 /@var{volumename}/@var{filename}
180 @end example
182 So when Emacs requests a file name, doing file name completion on
183 @file{/} will display all volumes on the system.  You can use @file{..}
184 to go up a directory level.
186   On Mac OS 8 or 9, to access files and folders on the desktop, look
187 in the folder @file{Desktop Folder} in your boot volume (this folder
188 is usually invisible in the Mac @code{Finder}).
190   On Mac OS 8 or 9, Emacs creates the Mac folder
191 @file{:Preferences:Emacs:} in the @file{System Folder} and uses it as
192 the temporary directory.  Emacs maps the directory name @file{/tmp/}
193 to that.  Therefore it is best to avoid naming a volume @file{tmp}.
194 If everything works correctly, the program should leave no files in it
195 when it exits.  You should be able to set the environment variable
196 @code{TMPDIR} to use another directory but this folder will still be
197 created.
200 @node Mac Font Specs
201 @section Specifying Fonts on the Mac
202 @cindex font names (Mac OS)
204   It is rare that you need to specify a font name in Emacs; usually
205 you specify face attributes instead.  But when you do need to specify
206 a font name in Emacs on the Mac, use a standard X font name:
208 @smallexample
209 -@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
210 @dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset}
211 @end smallexample
213 @noindent
214 @xref{Font X}.  Wildcards are supported as they are on X.
216   Native Apple fonts in Mac Roman encoding has maker name @code{apple}
217 and charset @code{mac-roman}.  For example 12-point Monaco can be
218 specified by the name @samp{-apple-monaco-*-12-*-mac-roman}.
220   Native Apple Traditional Chinese, Simplified Chinese, Japanese, and
221 Korean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},
222 @samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively.
224   Single-byte fonts converted from GNU fonts in BDF format, which are not
225 in the Mac Roman encoding, have foundry, family, and character sets
226 encoded in the names of their font suitcases.  E.g., the font suitcase
227 @samp{ETL-Fixed-ISO8859-1} contains fonts which can be referred to by
228 the name @samp{-ETL-fixed-*-iso8859-1}.
231 @node Mac Functions
232 @section Mac-Specific Lisp Functions
233 @cindex Lisp functions specific to Mac OS
235 @findex do-applescript
236   The function @code{do-applescript} takes a string argument,
237 executes it as an AppleScript command, and returns the result as a
238 string.
240 @findex mac-file-name-to-posix
241 @findex posix-file-name-to-mac
242   The function @code{mac-file-name-to-posix} takes a Mac file name and
243 returns the GNU or Unix equivalent.  The function
244 @code{posix-file-name-to-mac} performs the opposite conversion.  They
245 are useful for constructing AppleScript commands to be passed to
246 @code{do-applescript}.
248 @ignore
249    arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6
250 @end ignore