*** empty log message ***
[emacs.git] / man / macos.texi
blob141280fdbbe0efffc7a15b69f86c90431b823491
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 2000 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 the Mac OS supports many of its major features:
10 multiple frames, colors, scroll bars, menu bars, use of the mouse,
11 fontsets, international characters, input methods, coding systems, and
12 synchronous subprocesses (@code{call-process}).  Much of this works in
13 the same way as on other platforms and is therefore documented in the
14 rest of this manual.  This section describes the peculiarities of using
15 Emacs under the Mac OS.
17   The following features of Emacs are not yet supported on the Mac:
18 unexec (@code{dump-emacs}), asynchronous subprocesses
19 (@code{start-process}), and networking (@code{open-network-connection}).
20 As a result, packages such as Gnus, Ispell, and Comint do not work.
22   Since external Unix programs to handle commands such as
23 @code{print-buffer} and @code{diff} are not available on the Mac OS,
24 they are not supported in the Mac OS version.
26 @menu
27 * Input: Mac Input.                Keyboard input on the Mac.
28 * Intl: Mac International.         International character sets on the Mac.
29 * Env: Mac Environment Variables.  Setting environment variables for Emacs.
30 * Directories: Mac Directories.    Volumes and directories on the Mac.
31 * Font: Mac Font Specs.            Specifying fonts on the Mac.
32 * Functions: Mac Functions.        Mac-specific Lisp functions.
33 @end menu
35 @node Mac Input
36 @section Keyboard Input on the Mac
37 @cindex Meta (Mac OS)
38 @cindex keyboard coding (Mac OS)
39 @vindex mac-command-key-is-meta
40 @vindex mac-keyboard-text-encoding
42   On the Mac, Emacs can use either the @key{option} key or the
43 @key{command} key as the @key{META} key.  If the value of the variable
44 @code{mac-command-key-is-meta} is non-@code{nil} (its default value),
45 Emacs uses the @key{command} key as the @key{META} key.  Otherwise it
46 uses the @key{option} key as the @key{META} key.
48   Most people should want to use the @key{command} key as the @key{META} key,
49 so that dead-key processing with the @key{option} key will still work.  This is
50 useful for entering non-ASCII Latin characters directly from the Mac
51 keyboard, for example.
53   Emacs recognizes the setting in the Keyboard control panel and
54 supports international and alternative keyboard layouts (e.g., Dvorak).
55 Selecting one of the layouts from the keyboard layout pull-down menu
56 will affect how the keys typed on the keyboard are interpreted.
58   The Mac OS intercepts and handles certain key combinations (e.g.,
59 @key{command}-@key{SPC} for switching input languages).  These will not
60 be passed to Emacs.
62   The Mac keyboard ordinarily generates characters in the Mac Roman
63 encoding.  To use it for entering ISO Latin-1 characters directly, set
64 the value of the variable @code{mac-keyboard-text-encoding} to
65 @code{kTextEncodingISOLatin1}.  Note that not all Mac Roman characters
66 that can be entered at the keyboard can be converted to ISO Latin-1
67 characters.
69   To enter ISO Latin-2 characters directly from the Mac keyboard, set
70 the value of @code{mac-keyboard-text-encoding} to
71 @code{kTextEncodingISOLatin2}.  Then let Emacs know that the keyboard
72 generates Latin-2 codes, by typing @kbd{C-x @key{RET} k iso-latin-2
73 @key{RET}}.  To make this setting permanent, put this in your
74 @file{.emacs} init file:
76 @lisp
77 (set-keyboard-coding-system 'iso-latin-2)
78 @end lisp
80 @node Mac International
81 @section International Character Set Support on the Mac
82 @cindex Mac Roman coding system
83 @cindex clipboard support (Mac OS)
85   The Mac uses a non-standard encoding for the upper 128 single-byte
86 characters.  It also deviates from the ISO 2022 standard by using
87 character codes in the range 128-159.  The coding system
88 @code{mac-roman} is used to represent this Mac encoding.  It is used
89 for editing files stored in this native encoding, and for displaying
90 file names in Dired mode.
92   Any native (non-symbol) Mac font can be used to correctly display
93 characters in the @code{mac-roman} coding system.
95   The fontset @code{fontset-mac} is created automatically when Emacs
96 is run on the Mac.  It displays characters in the @code{mac-roman}
97 coding system using 12-point Monaco.
99   To insert characters directly in the @code{mac-roman} coding system,
100 type @kbd{C-x @key{RET} k mac-roman @key{RET}}, customize the option
101 @code{keyboard-coding-system}, or put this in your init file:
103 @lisp
104 (set-keyboard-coding-system 'mac-roman)
105 @end lisp
107 @noindent
108 This is useful for editing documents in native Mac encoding.
110   You can use input methods provided either by LEIM (@pxref{Input
111 Methods}) or the Mac OS to enter international characters.
113   To use the former, see the International Character Set Support section
114 of the manual (@pxref{International}).
116   To use input methods provided by the Mac OS, set the keyboard coding
117 system accordingly using the @kbd{C-x @key{RET} k} command
118 (@code{set-keyboard-coding-system}).  For example, for Traditional
119 Chinese, use @samp{chinese-big5} as keyboard coding system; for
120 Japanese, use @samp{sjis}, etc.  Then select the desired input method in
121 the keyboard layout pull-down menu.
123   The Mac clipboard and the Emacs kill ring (@pxref{Killing}) are
124 connected as follows: the most recent kill is copied to the clipboard
125 when Emacs is suspended and the contents of the clipboard is inserted
126 into the kill ring when Emacs resumes.  The result is that you can yank
127 a piece of text and paste it into another Mac application, or cut or copy
128 one in another Mac application and yank it into a Emacs buffer.
130   The encoding of text selections must be specified using the commands
131 @kbd{C-x @key{RET} x} (@code{set-selection-coding-system}) or @kbd{C-x
132 @key{RET} X} (@code{set-next-selection-coding-system}) (e.g., for
133 Traditional Chinese, use @samp{chinese-big5-mac} and for Japanese,
134 @samp{sjis-mac}).  @xref{Specify Coding}, for more details.
137 @node Mac Environment Variables
138 @section Environment Variables and Command Line Arguments.
139 @cindex environment variables (Mac OS)
141   Environment variables and command line arguments for Emacs can be set
142 by modifying the @samp{STR#} resources 128 and 129, respectively.  A common
143 environment variable that one may want to set is @samp{HOME}.
145   The way to set an environment variable is by adding a string of the
146 form
148 @example
149 ENV_VAR=VALUE
150 @end example
152 @noindent
153 to resource @samp{STR#} number 128 using @code{ResEdit}. To set up the
154 program to use unibyte characters exclusively, for example, add the
155 string
157 @example
158 EMACS_UNIBYTE=1
159 @end example
162 @node Mac Directories
163 @section Volumes and Directories on the Mac
164 @cindex file names (Mac OS)
166   The directory structure in the Mac OS is seen by Emacs as 
168 @example
169 /@var{volumename}/@var{filename}
170 @end example
172 So when Emacs requests a file name, doing file name completion on
173 @file{/} will display all volumes on the system.  As in Unix, @file{..}
174 can be used to go up a directory level.
176   To access files and folders on the desktop, look in the folder
177 @file{Desktop Folder} in your boot volume (this folder is usually
178 invisible in the Mac @code{Finder}).
180   Emacs creates the Mac folder @file{:Preferences:Emacs:} in the
181 @file{System Folder} and uses it as the temporary directory.  The Unix
182 emulation code maps the Unix directory @file{/tmp} to it.  Therefore it
183 is best to avoid naming a volume @file{tmp}.  If everything works
184 correctly, the program should leave no files in it when it exits.  You
185 should be able to set the environment variable @code{TMPDIR} to use
186 another directory but this folder will still be created.
189 @node Mac Font Specs
190 @section Specifying Fonts on the Mac
191 @cindex font names (Mac OS)
193   It is rare that you need to specify a font name in Emacs; usually
194 you specify face attributes instead.  But when you do need to specify
195 a font name in Emacs on the Mac, use a standard X font name:
197 @smallexample
198 -@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{}
199 @dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset}
200 @end smallexample
202 @noindent
203 @xref{Font X}.  Wildcards are supported as they are on X.
205   Native Apple fonts in Mac Roman encoding has maker name @code{apple}
206 and charset @code{mac-roman}.  For example 12-point Monaco can be
207 specified by the name @samp{-apple-monaco-*-12-*-mac-roman}.
209   Native Apple Traditional Chinese, Simplified Chinese, Japanese, and
210 Korean fonts have charsets @samp{big5-0}, @samp{gb2312.1980-0},
211 @samp{jisx0208.1983-sjis}, and @samp{ksc5601.1989-0}, respectively.
213   Single-byte fonts converted from GNU fonts in BDF format, which are not
214 in the Mac Roman encoding, have foundry, family, and character sets
215 encoded in the names of their font suitcases.  E.g., the font suitcase
216 @samp{ETL-Fixed-ISO8859-1} contains fonts which can be referred to by
217 the name @samp{-ETL-fixed-*-iso8859-1}.
220 @node Mac Functions
221 @section Mac-Specific Lisp Functions
222 @cindex Lisp functions specific to Mac OS
224 @findex do-applescript
225   The function @code{do-applescript} takes a string argument,
226 executes it as an AppleScript command, and returns the result as a
227 string.
229 @findex mac-filename-to-unix
230 @findex unix-filename-to-mac
231   The function @code{mac-filename-to-unix} takes a Mac file name and
232 returns the Unix equivalent.  The function @code{unix-filename-to-mac}
233 performs the opposite conversion.  They are useful for constructing
234 AppleScript commands to be passed to @code{do-applescript}.