Commit | Line | Data |
---|---|---|
ebc956ca | 1 | @c This is part of the Emacs manual. |
ab422c4d | 2 | @c Copyright (C) 2000-2013 Free Software Foundation, Inc. |
ebc956ca | 3 | @c See file emacs.texi for copying conditions. |
abb9615e | 4 | @node Mac OS / GNUstep |
e93bc142 AR |
5 | @appendix Emacs and Mac OS / GNUstep |
6 | @cindex Mac OS X | |
ebc956ca | 7 | @cindex Macintosh |
e93bc142 AR |
8 | @cindex GNUstep |
9 | ||
ec8a6295 CY |
10 | This section describes the peculiarities of using Emacs built with |
11 | the GNUstep libraries on GNU/Linux or other operating systems, or on | |
12 | Mac OS X with native window system support. On Mac OS X, Emacs can be | |
13 | built either without window system support, with X11, or with the | |
40ace058 GM |
14 | Cocoa interface; this section only applies to the Cocoa build. This |
15 | does not support versions of Mac OS X earlier than 10.4. | |
ec8a6295 CY |
16 | |
17 | For various historical and technical reasons, Emacs uses the term | |
18 | @samp{Nextstep} internally, instead of ``Cocoa'' or ``Mac OS X''; for | |
19 | instance, most of the commands and variables described in this section | |
20 | begin with @samp{ns-}, which is short for @samp{Nextstep}. NeXTstep | |
21 | was an application interface released by NeXT Inc during the 1980s, of | |
22 | which Cocoa is a direct descendant. Apart from Cocoa, there is | |
23 | another NeXTstep-style system: GNUstep, which is free software. As of | |
40ace058 | 24 | this writing, Emacs GNUstep support is alpha status (@pxref{GNUstep |
ec8a6295 | 25 | Support}), but we hope to improve it in the future. |
ebc956ca EZ |
26 | |
27 | @menu | |
e93bc142 AR |
28 | * Mac / GNUstep Basics:: Basic Emacs usage under GNUstep or Mac OS. |
29 | * Mac / GNUstep Customization:: Customizations under GNUstep or Mac OS. | |
30 | * Mac / GNUstep Events:: How window system events are handled. | |
a6936c4b | 31 | * GNUstep Support:: Details on status of GNUstep support. |
ebc956ca EZ |
32 | @end menu |
33 | ||
abb9615e | 34 | @node Mac / GNUstep Basics |
e93bc142 | 35 | @section Basic Emacs usage under Mac OS and GNUstep |
8be76823 CY |
36 | |
37 | By default, the @key{alt} and @key{option} keys are the same as | |
ec8a6295 | 38 | @key{Meta}. The Mac @key{Cmd} key is the same as @key{Super}, and |
e7a3ff06 | 39 | Emacs provides a set of key bindings using this modifier key that mimic |
ec8a6295 CY |
40 | other Mac / GNUstep applications (@pxref{Mac / GNUstep Events}). You |
41 | can change these bindings in the usual way (@pxref{Key Bindings}). | |
42 | ||
8fd6e60a XF |
43 | @vindex ns-alternate-modifier |
44 | @vindex ns-right-alternate-modifier | |
ec8a6295 CY |
45 | The variable @code{ns-right-alternate-modifier} controls the |
46 | behavior of the right @key{alt} and @key{option} keys. These keys | |
47 | behave like the left-hand keys if the value is @code{left} (the | |
48 | default). A value of @code{control}, @code{meta}, @code{alt}, | |
49 | @code{super}, or @code{hyper} makes them behave like the corresponding | |
8fd6e60a XF |
50 | modifier keys; a value to @code{left} means be the same key as |
51 | @code{ns-alternate-modifier}; a value of @code{none} tells Emacs to | |
52 | ignore them. | |
ec8a6295 | 53 | |
40ace058 GM |
54 | @kbd{S-Mouse-1} adjusts the region to the click position, |
55 | just like @kbd{Mouse-3} (@code{mouse-save-then-kill}); it does not pop | |
56 | up a menu for changing the default face, as @kbd{S-Mouse-1} normally | |
d366bd53 CY |
57 | does (@pxref{Text Scale}). This change makes Emacs behave more like |
58 | other Mac / GNUstep applications. | |
8be76823 | 59 | |
ec8a6295 | 60 | When you open or save files using the menus, or using the |
40ace058 | 61 | @kbd{Cmd-o} and @kbd{Cmd-S} bindings, Emacs uses graphical file |
8be76823 | 62 | dialogs to read file names. However, if you use the regular Emacs key |
40ace058 | 63 | sequences, such as @kbd{C-x C-f}, Emacs uses the minibuffer to read |
8be76823 CY |
64 | file names. |
65 | ||
40ace058 GM |
66 | On GNUstep, in an X-windows environment you need to use @kbd{Cmd-c} |
67 | instead of one of the @kbd{C-w} or @kbd{M-w} commands to transfer text | |
8be76823 | 68 | to the X primary selection; otherwise, Emacs will use the |
40ace058 | 69 | ``clipboard'' selection. Likewise, @kbd{Cmd-y} (instead of @kbd{C-y}) |
8be76823 CY |
70 | yanks from the X primary selection instead of the kill-ring or |
71 | clipboard. | |
72 | ||
8be76823 | 73 | |
a71703d3 | 74 | @subsection Grabbing environment variables |
8be76823 | 75 | |
a6936c4b GM |
76 | @c How is this any different to launching from a window manager menu |
77 | @c in GNU/Linux? These are sometimes not login shells either. | |
78 | Many programs which may run under Emacs, like latex or man, depend on the | |
a71703d3 AR |
79 | settings of environment variables. If Emacs is launched from the shell, it |
80 | will automatically inherit these environment variables and its subprocesses | |
e93bc142 | 81 | will inherit them from it. But if Emacs is launched from the Finder it |
a71703d3 | 82 | is not a descendant of any shell, so its environment variables haven't been |
a6936c4b | 83 | set, which often causes the subprocesses it launches to behave differently than |
a71703d3 | 84 | they would when launched from the shell. |
8be76823 | 85 | |
a6936c4b | 86 | For the PATH and MANPATH variables, a system-wide method |
271736fc DR |
87 | of setting PATH is recommended on Mac OS X 10.5 and later, using the |
88 | @file{/etc/paths} files and the @file{/etc/paths.d} directory. | |
8be76823 | 89 | |
abb9615e | 90 | @node Mac / GNUstep Customization |
e93bc142 | 91 | @section Mac / GNUstep Customization |
8be76823 | 92 | |
e93bc142 | 93 | Emacs can be customized in several ways in addition to the standard |
a71703d3 | 94 | customization buffers and the Options menu. |
8be76823 | 95 | |
8be76823 | 96 | |
a71703d3 AR |
97 | @subsection Font and Color Panels |
98 | ||
40ace058 GM |
99 | The standard Mac / GNUstep font and color panels are accessible via |
100 | Lisp commands. The Font Panel may be accessed with @kbd{M-x | |
101 | ns-popup-font-panel}. It will set the default font in the frame most | |
102 | recently used or clicked on. | |
a00c191c DR |
103 | |
104 | @c To make the setting permanent, use @samp{Save Options} in the | |
105 | @c Options menu, or run @code{menu-bar-options-save}. | |
a71703d3 | 106 | |
40ace058 GM |
107 | You can bring up a color panel with @kbd{M-x ns-popup-color-panel} and |
108 | drag the color you want over the Emacs face you want to change. Normal | |
a71703d3 | 109 | dragging will alter the foreground color. Shift dragging will alter the |
40ace058 GM |
110 | background color. To discard the settings, create a new frame and |
111 | close the altered one. | |
a00c191c DR |
112 | |
113 | @c To make the changes permanent select the "Save Options" | |
ec8a6295 | 114 | @c item in the "Options" menu, or run @code{menu-bar-options-save}. |
a00c191c | 115 | |
40ace058 GM |
116 | Useful in this context is the listing of all faces obtained by |
117 | @kbd{M-x list-faces-display}. | |
a71703d3 | 118 | |
1f5e1a16 GM |
119 | @subsection Customization options specific to Mac OS / GNUstep |
120 | ||
121 | The following customization options are specific to the Nextstep port. | |
122 | ||
123 | @table @code | |
124 | @item ns-auto-hide-menu-bar | |
125 | Non-nil means the menu-bar is hidden by default, but appears if you | |
40ace058 | 126 | move the mouse pointer over it. (Requires Mac OS X 10.6 or later.) |
1f5e1a16 GM |
127 | |
128 | @end table | |
129 | ||
130 | ||
abb9615e | 131 | @node Mac / GNUstep Events |
e93bc142 | 132 | @section Windowing System Events under Mac OS / GNUstep |
a71703d3 AR |
133 | |
134 | Nextstep applications receive a number of special events which have | |
135 | no X equivalent. These are sent as specially defined ``keys'', which | |
136 | do not correspond to any sequence of keystrokes. Under Emacs, these | |
137 | ``key'' events can be bound to functions just like ordinary | |
138 | keystrokes. Here is a list of these events. | |
139 | ||
140 | @table @key | |
141 | @item ns-open-file | |
142 | @vindex ns-pop-up-frames | |
143 | This event occurs when another Nextstep application requests that | |
144 | Emacs open a file. A typical reason for this would be a user | |
145 | double-clicking a file in the Finder application. By default, Emacs | |
146 | responds to this event by opening a new frame and visiting the file in | |
a6936c4b | 147 | that frame (@code{ns-find-file}). As an exception, if the selected |
1c64e6ed | 148 | buffer is the @file{*scratch*} buffer, Emacs visits the file in the |
6be93a16 | 149 | selected frame. |
a71703d3 | 150 | |
40ace058 GM |
151 | You can change how Emacs responds to a @code{ns-open-file} event by |
152 | changing the variable @code{ns-pop-up-frames}. Its default value, | |
153 | @samp{fresh}, is what we have just described. A value of @code{t} | |
a71703d3 AR |
154 | means to always visit the file in a new frame. A value of @code{nil} |
155 | means to always visit the file in an existing frame. | |
156 | ||
157 | @item ns-open-temp-file | |
158 | This event occurs when another application requests that Emacs open a | |
159 | temporary file. By default, this is handled by just generating a | |
160 | @code{ns-open-file} event, the results of which are described above. | |
161 | ||
a71703d3 AR |
162 | @item ns-open-file-line |
163 | Some applications, such as ProjectBuilder and gdb, request not only a | |
164 | particular file, but also a particular line or sequence of lines in | |
165 | the file. Emacs handles this by visiting that file and highlighting | |
166 | the requested line (@code{ns-open-file-select-line}). | |
167 | ||
168 | @item ns-drag-file | |
169 | This event occurs when a user drags files from another application | |
170 | into an Emacs frame. The default behavior is to insert the contents | |
171 | of all the dragged files into the current buffer | |
172 | (@code{ns-insert-files}). The list of dragged files is stored in the | |
173 | variable @code{ns-input-file}. | |
174 | ||
175 | @item ns-drag-color | |
176 | This event occurs when a user drags a color from the color well (or | |
177 | some other source) into an Emacs frame. The default behavior is to | |
178 | alter the foreground color of the area the color was dragged onto | |
179 | (@code{ns-set-foreground-at-mouse}). If this event is issued with a | |
180 | @key{Shift} modifier, Emacs changes the background color instead | |
181 | (@code{ns-set-background-at-mouse}). The name of the dragged color is | |
182 | stored in the variable @code{ns-input-color}. | |
183 | ||
184 | @item ns-change-font | |
185 | This event occurs when the user selects a font in a Nextstep font | |
186 | panel (which can be opened with @kbd{Cmd-t}). The default behavior is | |
187 | to adjust the font of the selected frame | |
188 | (@code{ns-respond-to-changefont}). The name and size of the selected | |
189 | font are stored in the variables @code{ns-input-font} and | |
a6936c4b | 190 | @code{ns-input-fontsize}, respectively. |
a71703d3 AR |
191 | |
192 | @item ns-power-off | |
ec8a6295 | 193 | This event occurs when the user logs out and Emacs is still running, or when |
959d68bd DR |
194 | `Quit Emacs' is chosen from the application menu. |
195 | The default behavior is to save all file-visiting buffers. | |
a71703d3 AR |
196 | @end table |
197 | ||
198 | Emacs also allows users to make use of Nextstep services, via a set | |
199 | of commands whose names begin with @samp{ns-service-} and end with the | |
40ace058 | 200 | name of the service. Type @kbd{M-x ns-service-@key{TAB}} to |
a71703d3 AR |
201 | see a list of these commands. These functions either operate on |
202 | marked text (replacing it with the result) or take a string argument | |
203 | and return the result as a string. You can also use the Lisp function | |
204 | @code{ns-perform-service} to pass arbitrary strings to arbitrary | |
205 | services and receive the results back. Note that you may need to | |
206 | restart Emacs to access newly-available services. | |
207 | ||
abb9615e | 208 | @node GNUstep Support |
e93bc142 AR |
209 | @section GNUstep Support |
210 | ||
40ace058 | 211 | Emacs can be built and run under GNUstep, but there are still |
a6936c4b GM |
212 | issues to be addressed. Interested developers should contact |
213 | @email{emacs-devel@@gnu.org}. |