Commit | Line | Data |
---|---|---|
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 | 10 | multiple frames, colors, scroll bars, menu bars, use of the mouse, |
e0f712ba AC |
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. | |
15 | ||
16 | The following features of Emacs are not yet supported on the Mac OS | |
17 | 8 or 9: unexec (@code{dump-emacs}), asynchronous subprocesses | |
6eb51c10 | 18 | (@code{start-process}), and networking (@code{open-network-stream}). |
15140843 | 19 | As a result, packages such as Gnus, GUD, and Comint do not work. |
e0f712ba AC |
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. | |
ebc956ca | 24 | |
e0f712ba AC |
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. | |
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 |
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. | |
ebc956ca EZ |
51 | |
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-ASCII Latin characters directly from the Mac | |
55 | keyboard, for example. | |
56 | ||
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. | |
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 | |
64 | be passed to Emacs. | |
65 | ||
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 | |
f8ca728a AC |
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. | |
ebc956ca | 72 | |
1860d5c5 | 73 | To enter ISO Latin-2 characters directly from the Mac keyboard, set |
ebc956ca EZ |
74 | the value of @code{mac-keyboard-text-encoding} to |
75 | @code{kTextEncodingISOLatin2}. Then let Emacs know that the keyboard | |
305f719a RS |
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: | |
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 |
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. | |
ebc956ca EZ |
95 | |
96 | Any native (non-symbol) Mac font can be used to correctly display | |
97 | characters in the @code{mac-roman} coding system. | |
98 | ||
f8ca728a AC |
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. | |
ebc956ca EZ |
102 | |
103 | To insert characters directly in the @code{mac-roman} coding system, | |
741c4ff9 DL |
104 | type @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 | |
112 | This is useful for editing documents in native Mac encoding. | |
113 | ||
114 | You can use input methods provided either by LEIM (@pxref{Input | |
115 | Methods}) or the Mac OS to enter international characters. | |
116 | ||
117 | To use the former, see the International Character Set Support section | |
741c4ff9 | 118 | of the manual (@pxref{International}). |
ebc956ca EZ |
119 | |
120 | To use input methods provided by the Mac OS, set the keyboard coding | |
305f719a | 121 | system accordingly using the @kbd{C-x @key{RET} k} command |
ebc956ca | 122 | (@code{set-keyboard-coding-system}). For example, for Traditional |
414f9973 | 123 | Chinese, use @samp{chinese-big5} as keyboard coding system; for |
ebc956ca EZ |
124 | Japanese, use @samp{sjis}, etc. Then select the desired input method in |
125 | the keyboard layout pull-down menu. | |
126 | ||
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. | |
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 | |
137 | Traditional 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 |
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. | |
149 | ||
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}. | |
ebc956ca EZ |
154 | |
155 | The way to set an environment variable is by adding a string of the | |
156 | form | |
157 | ||
158 | @example | |
159 | ENV_VAR=VALUE | |
160 | @end example | |
161 | ||
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 | |
166 | ||
167 | @example | |
168 | EMACS_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 | 182 | So 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{..} |
184 | to 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 |
187 | in the folder @file{Desktop Folder} in your boot volume (this folder | |
188 | is 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 | |
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. | |
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 |
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: | |
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 |
217 | and charset @code{mac-roman}. For example 12-point Monaco can be |
218 | specified by the name @samp{-apple-monaco-*-12-*-mac-roman}. | |
219 | ||
220 | Native Apple Traditional Chinese, Simplified Chinese, Japanese, and | |
f8ca728a AC |
221 | Korean 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 | |
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}. | |
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, | |
237 | executes it as an AppleScript command, and returns the result as a | |
238 | string. | |
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 | 243 | returns the GNU or Unix equivalent. The function |
51c2603b AC |
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}. |