Add arch taglines
[bpt/emacs.git] / man / macos.texi
CommitLineData
ebc956ca 1@c This is part of the Emacs manual.
e0f712ba 2@c Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
ebc956ca
EZ
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
8
e0f712ba 9 Emacs built on Mac OS X supports most of its major features:
ebc956ca 10multiple frames, colors, scroll bars, menu bars, use of the mouse,
e0f712ba
AC
11fontsets, international characters, input methods, coding systems,
12asynchronous and synchronous subprocesses, unexec (@code{dump-emacs}),
13and networking (@code{open-network-stream}). Support for various
14image file formats has not been implemented yet.
15
16 The following features of Emacs are not yet supported on the Mac OS
178 or 9: unexec (@code{dump-emacs}), asynchronous subprocesses
6eb51c10 18(@code{start-process}), and networking (@code{open-network-stream}).
15140843 19As a result, packages such as Gnus, GUD, and Comint do not work.
e0f712ba
AC
20However, synchronous subprocesses (@code{call-process}) are supported.
21Since external programs to handle commands such as @code{print-buffer}
22and @code{diff} are not available on Mac OS 8 or 9, they are not
23supported.
ebc956ca 24
e0f712ba
AC
25 Most of the features that are supported work in the same way as on
26other platforms and are therefore documented in the rest of this
27manual. This section describes the peculiarities of using Emacs under
28the Mac OS.
ebc956ca
EZ
29
30@menu
b08fa67e
RS
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.
ebc956ca
EZ
37@end menu
38
ebc956ca
EZ
39@node Mac Input
40@section Keyboard Input on the Mac
4946337d
EZ
41@cindex Meta (Mac OS)
42@cindex keyboard coding (Mac OS)
ebc956ca
EZ
43@vindex mac-command-key-is-meta
44@vindex mac-keyboard-text-encoding
45
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),
305f719a
RS
49Emacs uses the @key{command} key as the @key{META} key. Otherwise it
50uses the @key{option} key as the @key{META} key.
ebc956ca
EZ
51
52 Most people should want to use the @key{command} key as the @key{META} key,
53so that dead-key processing with the @key{option} key will still work. This is
54useful for entering non-ASCII Latin characters directly from the Mac
55keyboard, for example.
56
57 Emacs recognizes the setting in the Keyboard control panel and
58supports international and alternative keyboard layouts (e.g., Dvorak).
59Selecting one of the layouts from the keyboard layout pull-down menu
60will affect how the keys typed on the keyboard are interpreted.
61
62 The Mac OS intercepts and handles certain key combinations (e.g.,
63@key{command}-@key{SPC} for switching input languages). These will not
64be passed to Emacs.
65
66 The Mac keyboard ordinarily generates characters in the Mac Roman
67encoding. To use it for entering ISO Latin-1 characters directly, set
68the value of the variable @code{mac-keyboard-text-encoding} to
f8ca728a
AC
69@code{kTextEncodingISOLatin1}. Note that not all Mac Roman characters
70that can be entered at the keyboard can be converted to ISO Latin-1
71characters.
ebc956ca 72
1860d5c5 73 To enter ISO Latin-2 characters directly from the Mac keyboard, set
ebc956ca
EZ
74the value of @code{mac-keyboard-text-encoding} to
75@code{kTextEncodingISOLatin2}. Then let Emacs know that the keyboard
305f719a
RS
76generates 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:
ebc956ca
EZ
79
80@lisp
b08fa67e 81(set-keyboard-coding-system 'iso-latin-2)
ebc956ca
EZ
82@end lisp
83
84@node Mac International
85@section International Character Set Support on the Mac
86@cindex Mac Roman coding system
4946337d 87@cindex clipboard support (Mac OS)
ebc956ca
EZ
88
89 The Mac uses a non-standard encoding for the upper 128 single-byte
305f719a
RS
90characters. It also deviates from the ISO 2022 standard by using
91character codes in the range 128-159. The coding system
92@code{mac-roman} is used to represent this Mac encoding. It is used
93for editing files stored in this native encoding, and for displaying
94file names in Dired mode.
ebc956ca
EZ
95
96 Any native (non-symbol) Mac font can be used to correctly display
97characters in the @code{mac-roman} coding system.
98
f8ca728a
AC
99 The fontset @code{fontset-mac} is created automatically when Emacs
100is run on the Mac. It displays characters in the @code{mac-roman}
101coding system using 12-point Monaco.
ebc956ca
EZ
102
103 To insert characters directly in the @code{mac-roman} coding system,
741c4ff9
DL
104type @kbd{C-x @key{RET} k mac-roman @key{RET}}, customize the option
105@code{keyboard-coding-system}, or put this in your init file:
ebc956ca
EZ
106
107@lisp
108(set-keyboard-coding-system 'mac-roman)
109@end lisp
110
111@noindent
112This is useful for editing documents in native Mac encoding.
113
114 You can use input methods provided either by LEIM (@pxref{Input
115Methods}) or the Mac OS to enter international characters.
116
117 To use the former, see the International Character Set Support section
741c4ff9 118of the manual (@pxref{International}).
ebc956ca
EZ
119
120 To use input methods provided by the Mac OS, set the keyboard coding
305f719a 121system accordingly using the @kbd{C-x @key{RET} k} command
ebc956ca 122(@code{set-keyboard-coding-system}). For example, for Traditional
414f9973 123Chinese, use @samp{chinese-big5} as keyboard coding system; for
ebc956ca
EZ
124Japanese, use @samp{sjis}, etc. Then select the desired input method in
125the keyboard layout pull-down menu.
126
127 The Mac clipboard and the Emacs kill ring (@pxref{Killing}) are
128connected as follows: the most recent kill is copied to the clipboard
129when Emacs is suspended and the contents of the clipboard is inserted
130into the kill ring when Emacs resumes. The result is that you can yank
131a piece of text and paste it into another Mac application, or cut or copy
132one in another Mac application and yank it into a Emacs buffer.
133
134 The encoding of text selections must be specified using the commands
305f719a
RS
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
137Traditional Chinese, use @samp{chinese-big5-mac} and for Japanese,
ebc956ca
EZ
138@samp{sjis-mac}). @xref{Specify Coding}, for more details.
139
140
141@node Mac Environment Variables
142@section Environment Variables and Command Line Arguments.
4946337d 143@cindex environment variables (Mac OS)
ebc956ca 144
e0f712ba
AC
145 On Mac OS X, when Emacs is run in a terminal, it inherits the values
146of environment variables from the shell from which it is invoked.
147However, when it is run from the Finder as a GUI application, it
148inherits no environment variable values.
149
150 On Mac OS 8 or 9, environment variables and command line arguments
151for Emacs can be set by modifying the @samp{STR#} resources 128 and
152129, respectively. A common environment variable that one may want to
153set is @samp{HOME}.
ebc956ca
EZ
154
155 The way to set an environment variable is by adding a string of the
156form
157
158@example
159ENV_VAR=VALUE
160@end example
161
162@noindent
163to resource @samp{STR#} number 128 using @code{ResEdit}. To set up the
164program to use unibyte characters exclusively, for example, add the
165string
166
167@example
168EMACS_UNIBYTE=1
169@end example
170
171
172@node Mac Directories
173@section Volumes and Directories on the Mac
4946337d 174@cindex file names (Mac OS)
ebc956ca 175
177c0ea7 176 The directory structure in the Mac OS is seen by Emacs as
ebc956ca
EZ
177
178@example
b08fa67e 179/@var{volumename}/@var{filename}
ebc956ca
EZ
180@end example
181
b08fa67e 182So when Emacs requests a file name, doing file name completion on
892c6176
RS
183@file{/} will display all volumes on the system. You can use @file{..}
184to go up a directory level.
ebc956ca 185
e0f712ba
AC
186 On Mac OS 8 or 9, to access files and folders on the desktop, look
187in the folder @file{Desktop Folder} in your boot volume (this folder
188is usually invisible in the Mac @code{Finder}).
189
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
192the temporary directory. Emacs maps the directory name @file{/tmp/}
193to that. Therefore it is best to avoid naming a volume @file{tmp}.
194If everything works correctly, the program should leave no files in it
195when it exits. You should be able to set the environment variable
196@code{TMPDIR} to use another directory but this folder will still be
197created.
ebc956ca
EZ
198
199
200@node Mac Font Specs
201@section Specifying Fonts on the Mac
4946337d 202@cindex font names (Mac OS)
ebc956ca 203
305f719a
RS
204 It is rare that you need to specify a font name in Emacs; usually
205you specify face attributes instead. But when you do need to specify
206a font name in Emacs on the Mac, use a standard X font name:
ebc956ca 207
b08fa67e 208@smallexample
f8ca728a
AC
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}
b08fa67e 211@end smallexample
ebc956ca 212
b08fa67e 213@noindent
305f719a 214@xref{Font X}. Wildcards are supported as they are on X.
ebc956ca 215
f8ca728a 216 Native Apple fonts in Mac Roman encoding has maker name @code{apple}
ebc956ca
EZ
217and charset @code{mac-roman}. For example 12-point Monaco can be
218specified by the name @samp{-apple-monaco-*-12-*-mac-roman}.
219
220 Native Apple Traditional Chinese, Simplified Chinese, Japanese, and
f8ca728a
AC
221Korean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},
222@samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively.
ebc956ca
EZ
223
224 Single-byte fonts converted from GNU fonts in BDF format, which are not
225in the Mac Roman encoding, have foundry, family, and character sets
226encoded 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
228the name @samp{-ETL-fixed-*-iso8859-1}.
229
230
231@node Mac Functions
c44461ef 232@section Mac-Specific Lisp Functions
4946337d 233@cindex Lisp functions specific to Mac OS
ebc956ca
EZ
234
235@findex do-applescript
236 The function @code{do-applescript} takes a string argument,
237executes it as an AppleScript command, and returns the result as a
238string.
239
51c2603b
AC
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
7b67d693 243returns the GNU or Unix equivalent. The function
51c2603b
AC
244@code{posix-file-name-to-mac} performs the opposite conversion. They
245are useful for constructing AppleScript commands to be passed to
246@code{do-applescript}.
ab5796a9
MB
247
248@ignore
249 arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6
250@end ignore