Mercurial > emacs
changeset 99547:7b84659ef52f
(Mac OS): Move Cocoa manual from ns-emacs.texi to here, replacing
previous contents. Numerous copyedits to adapt ns-emacs to the
conventions of the main Emacs manual.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Fri, 14 Nov 2008 20:40:28 +0000 |
parents | 825c831044f8 |
children | d47ff67f1a11 |
files | doc/emacs/macos.texi |
diffstat | 1 files changed, 410 insertions(+), 347 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/emacs/macos.texi Fri Nov 14 20:40:04 2008 +0000 +++ b/doc/emacs/macos.texi Fri Nov 14 20:40:28 2008 +0000 @@ -8,421 +8,484 @@ @cindex Macintosh This section briefly describes the peculiarities of using Emacs -under Mac OS with native window system support. For Mac OS X, Emacs +under Mac OS X with native window system support. For Mac OS X, Emacs can be built either without window system support, with X11, or with -Carbon API. This section only applies to the Carbon build. For Mac -OS Classic, Emacs can be built with or without Carbon API, and this -section applies to either of them because they run on the native -window system. +the Cocoa interface. This section only applies to the Cocoa build. +Emacs 23 does not support Mac OS Classic. - Emacs built on Mac OS X supports most of its major features except -display support of PostScript images. The following features of Emacs -are not supported on Mac OS Classic: unexec (@code{dump-emacs}), -asynchronous subprocesses (@code{start-process}), and networking -(@code{open-network-stream}). As a result, packages such as Gnus, -GUD, and Comint do not work. Synchronous subprocesses -(@code{call-process}) are supported on non-Carbon build, but -specially-crafted external programs are needed. Since external -programs to handle commands such as @code{print-buffer} and -@code{diff} are not available on Mac OS Classic, they are not -supported. Non-Carbon build on Mac OS Classic does not support some -features such as file dialogs, drag-and-drop, and Unicode menus. + Emacs, when built on Mac OS X, uses the Cocoa application interface. +For various historical and technical reasons, Emacs uses the term +@samp{Nextstep} internally, instead of ``Cocoa'' or ``Mac OS X''; for +instance, most of the commands and variables described in the +following sections begin with @samp{ns-}, which is short for +@samp{Nextstep}. NeXTstep was an application interface released by +NeXT Inc during the 1980s, of which Cocoa is a direct descendent. +Apart from Cocoa, there is another NeXTstep-style system: GNUstep, +which is free software. As of this writing, the GNUstep support is +not fully functional, but we hope to improve it in the future. @menu -* Input: Mac Input. Keyboard and mouse input on Mac. -* Intl: Mac International. International character sets on Mac. -* Env: Mac Environment Variables. Setting environment variables for Emacs. -* Directories: Mac Directories. Volumes and directories on Mac. -* Font: Mac Font Specs. Specifying fonts on Mac. -* Functions: Mac Functions. Mac-specific Lisp functions. +* Mac Basics:: Basic Emacs usage in Mac OS. +* Mac Events:: How window system events are handled. +* Mac Preferences:: Using the Preferences Panel to customize Emacs. +* Mac Customization:: Customizations in Mac OS @end menu -@node Mac Input -@section Keyboard and Mouse Input on Mac -@cindex Meta (Mac OS) -@cindex keyboard coding (Mac OS) +@node Mac Basics +@section Basic Emacs usage in Mac OS + + By default, the @key{alt} and @key{option} keys are the same as +@key{Meta} when running under Mac OS. The Mac @key{Cmd} key is the +same as @key{Super}, and Emacs provides a set of keybindings using +this modifier key that mimic other Mac applications (@pxref{Mac +Events}). You can change these bindings in the usual way (@pxref{Key +Bindings}), or by using the Mac preferences panel (@pxref{Mac +Preferences}). -@vindex mac-control-modifier -@vindex mac-command-modifier -@vindex mac-option-modifier -@vindex mac-function-modifier - On Mac, Emacs can use @key{control}, @key{command}, @key{option}, and -laptop @key{function} keys as any of Emacs modifier keys except -@key{SHIFT} (i.e., @key{ALT}, @key{CTRL}, @key{HYPER}, @key{META}, and -@key{SUPER}). The assignment is controlled by the variables -@code{mac-control-modifier}, @code{mac-command-modifier}, -@code{mac-option-modifier}, and @code{mac-function-modifier}. The value -for each of these variables can be one of the following symbols: -@code{alt}, @code{control}, @code{hyper}, @code{meta}, @code{super}, and -@code{nil} (no particular assignment). By default, the @key{control} -key works as @key{CTRL}, and the @key{command} key as @key{META}. + The standard Mac font and color panels are accessible via the +@samp{Windows} menu, or via the standard @key{Cmd-t} and @key{Cmd-C} +keybindings. To use the color panel, drag from it to an Emacs frame +to change the foreground color of the face at that position (if the +@key{shift} key is held down, it changes the background color +instead). To finalize the settings for either color or font, choose +@samp{Save Options} in the @samp{Options} menu. To discard the +settings, create a new frame and close the altered one. - For the @key{option} key, if @code{mac-option-modifier} is set to -@code{nil}, which is the default, the key works as the normal -@key{option} key, i.e., dead-key processing will work. This is useful -for entering non-@acronym{ASCII} Latin characters directly from the -Mac keyboard, for example. + In Mac OS, @key{S-Mouse-1} (i.e., clicking the left mouse button +while holding down the @key{Shift} key) adjusts the region to the +click position, just like @key{Mouse-3} (@code{mouse-save-then-kill}); +it does not pop up a menu for changing the default face, as +@key{S-Mouse-1} normally does (@pxref{Temporary Face Changes}). This +change makes Emacs behave more like other Mac applications. + + When you open or save files using the menus, or using the standard +@key{Cmd-o} and @key{Cmd-S} bindings, Emacs uses graphical file +dialogs to read file names. However, if you use the regular Emacs key +sequences, such as @key{C-x C-f}, Emacs uses the minibuffer to read +file names. + + When Emacs is called by a name which ends in @file{-nw}, it will +always start in terminal mode. For example, if you need a +terminal-only Emacs, create a symbolic link from @file{emacs} to +@file{emacs-nw} and launch @file{emacs-nw}. - Emacs recognizes the setting in the Keyboard control panel (Mac OS -Classic) or the International system preference pane (Mac OS X) and -supports international and alternative keyboard layouts (e.g., Dvorak). -Selecting one of the layouts from the keyboard layout pull-down menu -will affect how the keys typed on the keyboard are interpreted. + On GNUstep, in an X-windows environment you need to use @key{Cmd-c} +instead of one of the @key{C-w} or @key{M-w} commands to transfer text +to the X primary selection; otherwise, Emacs will use the +``clipboard'' selection. Likewise, @key{Cmd-y} (instead of @key{C-y}) +yanks from the X primary selection instead of the kill-ring or +clipboard. -@vindex mac-pass-command-to-system -@vindex mac-pass-control-to-system - Mac OS intercepts and handles certain key combinations (e.g., -@key{command}-@key{SPC} for switching input languages). These will not -be passed to Emacs. One can disable this interception by setting -@code{mac-pass-command-to-system} or @code{mac-pass-control-to-system} -to @code{nil}. +@node Mac Events +@section Windowing System Events in Mac OS X + + Nextstep applications receive a number of special events which have +no X equivalent. These are sent as specially defined ``keys'', which +do not correspond to any sequence of keystrokes. Under Emacs, these +``key'' events can be bound to functions just like ordinary +keystrokes. Here is a list of these events. -@vindex mac-emulate-three-button-mouse - Especially for one-button mice, the multiple button feature can be -emulated by setting @code{mac-emulate-three-button-mouse} to @code{t} -or @code{reverse}. If set to @code{t} (@code{reverse}, respectively), -pressing the mouse button with the @key{option} key is recognized as -the second (third) button, and that with the @key{command} key is -recognized as the third (second) button. +@table @key +@item ns-open-file +@vindex ns-pop-up-frames +This event occurs when another Nextstep application requests that +Emacs open a file. A typical reason for this would be a user +double-clicking a file in the Finder application. By default, Emacs +responds to this event by opening a new frame and visiting the file in +that frame (@code{ns-find-file}), As an exception, if the selected +buffer is the @samp{*scratch*} buffer, Emacs visits the file in the +the selected frame. -@vindex mac-wheel-button-is-mouse-2 - For multi-button mice, the wheel button and the secondary button are -recognized as the second and the third button, respectively. If -@code{mac-wheel-button-is-mouse-2} is set to @code{nil}, their roles -are exchanged. +You can change how Emacs responds to @key{ns-open-file} by changing +the variable @code{ns-pop-up-frames}. Its default value, +@code{'fresh}, is what we have just described. A value of @code{t} +means to always visit the file in a new frame. A value of @code{nil} +means to always visit the file in an existing frame. + +@item ns-open-temp-file +This event occurs when another application requests that Emacs open a +temporary file. By default, this is handled by just generating a +@code{ns-open-file} event, the results of which are described above. -@node Mac International -@section International Character Set Support on Mac -@cindex Mac Roman coding system -@cindex clipboard support (Mac OS) +You can bind @key{ns-pop-up-frames} and @key{ns-open-temp-file} to +other Lisp functions. When the event is registered, the name of the +file to open is stored in the variable @code{ns-input-file}. - Mac uses non-standard encodings for the upper 128 single-byte -characters. They also deviate from the ISO 2022 standard by using -character codes in the range 128-159. The coding systems -@code{mac-roman}, @code{mac-centraleurroman}, and @code{mac-cyrillic} -are used to represent these Mac encodings. +@item ns-open-file-line +Some applications, such as ProjectBuilder and gdb, request not only a +particular file, but also a particular line or sequence of lines in +the file. Emacs handles this by visiting that file and highlighting +the requested line (@code{ns-open-file-select-line}). + +@item ns-drag-file +This event occurs when a user drags files from another application +into an Emacs frame. The default behavior is to insert the contents +of all the dragged files into the current buffer +(@code{ns-insert-files}). The list of dragged files is stored in the +variable @code{ns-input-file}. - You can use input methods provided either by LEIM (@pxref{Input -Methods}) or Mac OS to enter international characters. To use the -former, see the International Character Set Support section of the -manual (@pxref{International}). +@item ns-drag-color +This event occurs when a user drags a color from the color well (or +some other source) into an Emacs frame. The default behavior is to +alter the foreground color of the area the color was dragged onto +(@code{ns-set-foreground-at-mouse}). If this event is issued with a +@key{Shift} modifier, Emacs changes the background color instead +(@code{ns-set-background-at-mouse}). The name of the dragged color is +stored in the variable @code{ns-input-color}. - Emacs on Mac OS automatically changes the value of -@code{keyboard-coding-system} according to the current keyboard -layout. So users don't need to set it manually, and even if set, it -will be changed when the keyboard layout change is detected next time. - - The Mac clipboard and the Emacs kill ring (@pxref{Killing}) are -synchronized by default: you can yank a piece of text and paste it -into another Mac application, or cut or copy one in another Mac -application and yank it into a Emacs buffer. This feature can be -disabled by setting @code{x-select-enable-clipboard} to @code{nil}. -One can still do copy and paste with another application from the Edit -menu. +@item ns-change-font +This event occurs when the user selects a font in a Nextstep font +panel (which can be opened with @kbd{Cmd-t}). The default behavior is +to adjust the font of the selected frame +(@code{ns-respond-to-changefont}). The name and size of the selected +font are stored in the variables @code{ns-input-font} and +@code{ns-input-fontsize} respectively. - On Mac, the role of the coding system for selection that is set by -@code{set-selection-coding-system} (@pxref{Communication Coding}) is -two-fold. First, it is used as a preferred coding system for the -traditional text flavor that does not specify any particular encodings -and is mainly used by applications on Mac OS Classic. Second, it -specifies the intermediate encoding for the UTF-16 text flavor that is -mainly used by applications on Mac OS X. +@item ns-power-off +This event occurs when the user logs out and Emacs is still running. +The default behavior is to save all file-visiting buffers without +confirmation, and exit. +@end table + + Emacs also allows users to make use of Nextstep services, via a set +of commands whose names begin with @samp{ns-service-} and end with the +name of the service. Type @kbd{M-x ns-service-@key{TAB}@key{TAB}} to +see a list of these commands. These functions either operate on +marked text (replacing it with the result) or take a string argument +and return the result as a string. You can also use the Lisp function +@code{ns-perform-service} to pass arbitrary strings to arbitrary +services and receive the results back. Note that you may need to +restart Emacs to access newly-available services. + +@node Mac Preferences +@section Mac Preferences - When pasting UTF-16 text data from the clipboard, it is first -converted to the encoding specified by the selection coding system -using the converter in the Mac OS system, and then decoded into the -Emacs internal encoding using the converter in Emacs. If the first -conversion failed, then the UTF-16 data is directly converted to Emacs -internal encoding using the converter in Emacs. Copying UTF-16 text -to the clipboard goes through the inverse path. The reason for this -two-pass decoding is to avoid subtle differences in Unicode mappings -between the Mac OS system and Emacs such as various kinds of hyphens, -and to minimize users' customization. For example, users that mainly -use Latin characters would prefer Greek characters to be decoded into -the @code{mule-unicode-0100-24ff} charset, but Japanese users would -prefer them to be decoded into the @code{japanese-jisx0208} charset. -Since the coding system for selection is automatically set according -to the system locale setting, users usually don't have to set it -manually. +The Preferences panel can be used to set or change some of the +settings for Emacs such as the text appearance, cursor settings, and +key bindings. + + To save any settings changed through the Preferences panel, click on +@samp{OK}; this has the same effect as if you had explicitly chosen +@samp{Help / Save Preferences}. + + To restore Emacs to use its default settings click @samp{Reset to +Defaults} from the Preferences Panel. - The default language environment (@pxref{Language Environments}) is -set according to the locale setting at the startup time. On Mac OS, -the locale setting is consulted in the following order: + Additional preferences may be set from the command line using the +@command{defaults} command. @xref{Mac Customization}. + +Font and color settings can be set using the standard NeXTstep font +and color panels. -@enumerate +@itemize @bullet @item -Environment variables @env{LC_ALL}, @env{LC_CTYPE} and @env{LANG} as -in other systems. +To set the default font used by Emacs click the Default Font... button +to launch the Font Panel. Click on a frame before selecting the font +family, typeface, and size of the default font from the Font Panel. + +Note that the default font will not be changed if a frame hasn't been +selected first. @item -Preference @code{AppleLocale} that is set by default on Mac OS X 10.3 -and later. +To set the default foreground or background color click the +Colors... button to launch the Color Panel. Choose the color you want +using any of the color models (color wheel, sliders, palette, image, +or crayons) available from the Colors toolbar. To apply the color +drag a swatch from the color bar at the top of the panel to text on +an Emacs frame. Holding down shift will change the background color +instead of the foreground. + +@item +To use antialiased text check the Smooth Fonts option. Lighter font +smoothing can be achieved by checking the Use Quickdraw (lighter) +smoothing option. @item -Preference @code{AppleLanguages} that is set by default on Mac OS X -10.1 and later. +To change the line height that text is displayed at drag the Expand +Line Spacing slider. When the slider is set to 0.0 Emacs will use the +same line height as other Mac OS X applications. To increase the line +height (and decrease the number of lines that can be displayed on the +screen) drag the slider towards 1.0. To decrease the line height +(increases the number of lines that can be displayed) drag the slider +towards -1.0. + +After the line spacing setting has been changed Emacs must be restarted +to take account of the change. + +@end itemize + +The Display Preferences can be used to change the appearance of the +default cursor used by Emacs. + +@itemize @bullet +@item +The Cursor Type radio buttons can be used to select the style used for the cursor: + +@itemize +@item +Box - the cursor is displayed as a box +@item +Underscore - the cursor is displayed as a horizontal bar +@item +Bar - the cursor is displayed as a vertical bar +@item +Hollow - the cursor is displayed as a box with an outline but no fill +@end itemize + +@item +Use the Cursor Blink Rate slider to set the frequency at which the cursor blinks. @item -Variable @code{mac-system-locale} that is derived from the system -language and region codes. This variable is available on all -supported Mac OS versions including Mac OS Classic. -@end enumerate +Check the Use System Highlight Color option to use the system default +color for highlighted text. + +@end itemize + +The Modifier Preferences can be used to change the behaviour of the +Alt/Opt and Command keys. By default the Alt or Opt key is bound to +the Emacs 'Meta' key, and the Command key is bound to 'super' which +allows the Command key to function in a way similar to other +NeXTstep/OS X applications. - The default values of almost all variables about coding systems are -also set according to the language environment. So usually you don't -have to customize these variables manually. +@itemize @bullet +@item +To re-bind the Alt or Opt key select a keybinding from the Alt/Opt Key +combo box. +@item +To re-bind the Command key select a keybinding from the Command Key +combo box. +@end itemize + +@node Mac Customization +@section Mac Customization + +Under X, resources are used to customize the behavior of Emacs to the +needs of the user. Nexstep defaults fulfill a similar function. From +the command line, the command @samp{defaults read org.gnu.Emacs} show +these resources as of the last Emacs exited, and individual resources +can be read or written by commands like @samp{defaults read Emacs Foo} +and @samp{defaults write Emacs Foo barvalue}. -@node Mac Environment Variables -@section Environment Variables and Command Line Arguments. -@cindex environment variables (Mac OS) + Calling the function @code{ns-save-preferences} in lisp, or +selecting the @samp{Option / Save Options} menu item, automatically +writes out the defaults corresponding to the selected window. + + In addition, you can set many of the following customizations by +setting @code{default-frame-alist} in your initialization file. + + Many of the preferences relating specifically to the Nextstep +windowing system (such as font rendering and the cursor type) can be +set using the Preferences panel (@pxref{Mac Preferences}). It is +important to note that when you hit @samp{OK} on this panel, +@emph{all} Nextstep settings are saved (including font and colors). - On Mac OS X, when Emacs is run in a terminal, it inherits the values -of environment variables from the shell from which it is invoked. -However, when it is run from the Finder as a GUI application, it only -inherits environment variable values defined in the file -@file{~/.MacOSX/environment.plist} that affects all the applications -invoked from the Finder or the @command{open} command. +This is a listing of some of the more useful defaults (and their +default values). Several of these defaults accept the names of colors +as values. For a list of all available colors pull up the color panel +and look at the color list called @samp{Emacs}. Emacs also accepts +color specifications of the form @samp{ARGBaarrggbb} where @var{aa}, +@var{rr}, @var{gg}, and @var{bb} are two hexadecimal digits describing +the alpha, red, green, and blue content of the color respectively. +@samp{HSBhhssbb}, @samp{CMYKccmmyykk} and @samp{GRAYgg} are the +equivalents in @samp{HSB}, @samp{CMYK} and gray scales. (For HSB, +@samp{AHSBaahhssbb} is also accepted.) - Command line arguments are specified like +@table @samp +@item InternalBorderWidth +Width in pixels of the internal border of the Nextstep frame. This +acts to separate the text area of the window from the fringes, +scrollbars, and/or edges. @example -/Applications/Emacs.app/Contents/MacOS/Emacs -g 80x25 & -@end example - -@noindent -if Emacs is installed at @file{/Applications/Emacs.app}. If Emacs is -invoked like this, then it also inherits the values of environment -variables from the shell from which it is invoked. - - On Mac OS Classic, environment variables and command line arguments -for Emacs can be set by modifying the @samp{STR#} resources 128 and -129, respectively. A common environment variable that one may want to -set is @samp{HOME}. - - The way to set an environment variable is by adding a string of the -form - -@example -ENV_VAR=VALUE -@end example - -@noindent -to resource @samp{STR#} number 128 using @code{ResEdit}. To set up the -program to use unibyte characters exclusively, for example, add the -string - -@example -EMACS_UNIBYTE=1 +defaults write Emacs InternalBorderWidth 2 @end example -@cindex Mac Preferences - Although Emacs on Mac does not support X resources (@pxref{X -Resources}) directly, one can use the Preferences system in place of X -resources. For example, adding the line - -@example -Emacs.cursorType: bar -@end example - -@noindent -to @file{~/.Xresources} in X11 corresponds to the execution of - -@example -defaults write org.gnu.Emacs Emacs.cursorType bar -@end example - -@noindent -on Mac OS X. One can use boolean or numeric values as well as string -values as follows: +@item VerticalScrollBars +@samp{YES} or @samp{NO} to enable or disable scroll bars, @samp{left} or +@samp{right} to explicitly set the side. @example -defaults write org.gnu.Emacs Emacs.toolBar -bool false -defaults write org.gnu.Emacs Emacs.lineSpacing -int 3 +defaults write Emacs VerticalScrollBars YES @end example -@noindent -Try @kbd{M-x man RET defaults RET} for the usage of the -@command{defaults} command. Alternatively, if you have Developer -Tools installed on Mac OS X, you can use Property List Editor to edit -the file @file{~/Library/Preferences/org.gnu.Emacs.plist}. - +@item Font +Name of the default font to be used for new frames (which can be +overriden by various faces). If this font is not set, Emacs will use +the system wide fixed pitch font. For most users the system fixed +pitch font will be @samp{Monaco} which doesn't have any bold or italic +versions. (Italic will be synthesized.) -@node Mac Directories -@section Volumes and Directories on Mac -@cindex file names (Mac OS) +@item FontSize +Size of the font to be used for new frames. If not set, Emacs will +use the default size of the system wide fixed pitch font. - This node applies to Mac OS Classic only. - - The directory structure in Mac OS Classic is seen by Emacs as +@item Foreground +The default foreground (text) color for new frames. @example -/@var{volumename}/@var{filename} +defaults write Emacs Foreground "Black" +@end example + +@item Background +The default background color for new frames. + +@example +defaults write Emacs Background "White" +@end example + +@item Height +Height in rows of the default window. + +@example +defaults write Emacs Height 48 @end example -So when Emacs requests a file name, doing file name completion on -@file{/} will display all volumes on the system. You can use @file{..} -to go up a directory level. - - On Mac OS Classic, to access files and folders on the desktop, look -in the folder @file{Desktop Folder} in your boot volume (this folder -is usually invisible in the Mac @code{Finder}). +@item Width +Width in columns of the default window. - On Mac OS Classic, Emacs creates the Mac folder -@file{:Preferences:Emacs:} in the @file{System Folder} and uses it as -the temporary directory. Emacs maps the directory name @file{/tmp/} -to that. Therefore it is best to avoid naming a volume @file{tmp}. -If everything works correctly, the program should leave no files in it -when it exits. You should be able to set the environment variable -@code{TMPDIR} to use another directory but this folder will still be -created. - - -@node Mac Font Specs -@section Specifying Fonts on Mac -@cindex font names (Mac OS) - - It is rare that you need to specify a font name in Emacs; usually -you specify face attributes instead. For example, you can use 14pt -Courier by customizing the default face attributes for all frames: +@example +defaults write Emacs Width 80 +@end example -@lisp -(set-face-attribute 'default nil - :family "courier" :height 140) -@end lisp - -@noindent -Alternatively, an interactive one is also available -(@pxref{Face Customization}). - -But when you do need to specify a font name in Emacs on Mac, use a -standard X font name: +@item CursorType +Name of the default cursor type for Emacs. Allowed values are +@samp{box}, @samp{hollow}, @samp{underscore}, @samp{bar}, @samp{line} and @samp{no}. -@smallexample --@var{maker}-@var{family}-@var{weight}-@var{slant}-@var{widthtype}-@var{style}@dots{} -@dots{}-@var{pixels}-@var{height}-@var{horiz}-@var{vert}-@var{spacing}-@var{width}-@var{charset} -@end smallexample - -@noindent -@xref{Font X}. Wildcards are supported as they are on X. +@example +defaults write Emacs CursorType box +@end example - Emacs on Mac OS Classic uses QuickDraw Text routines for drawing texts -by default. Emacs on Mac OS X uses @acronym{ATSUI, Apple Type Services -for Unicode Imaging} as well as QuickDraw Text, and most of the -characters other than Chinese, Japanese, and Korean ones are drawn using -the former by default. - - @acronym{ATSUI}-compatible fonts have maker name @code{apple} and -charset @code{iso10646-1}. For example, 12-point Monaco can be specified -by the name: +@item CursorBlinkRate +Users who want their cursor to blink can set the rate (in seconds) with +this defaults write. Setting it to @samp{NO} disables cursor blinking. @example --apple-monaco-medium-r-normal--12-*-*-*-*-*-iso10646-1 +defaults write Emacs CursorBlinkRate NO +@end example + +@item CursorColor +Name of the default cursor color for Emacs. Of a particular use for +this setting is the @samp{Highlight} color. When it is the cursor +color, Emacs will draw the cursor using the standard Nextstep +highlighting operator. + +@example +defaults write Emacs CursorColor Highlight +@end example + +@item Top +Distance in pixels from the top of the screen of the upper left corner +of the default window. + +@example +defaults write Emacs Top 100 +@end example + +@item Left +Distance in pixels from the left edge of the screen to the upper left +corner of the default window. + +@example +defaults write Emacs Left 100 @end example -Note that these names must be specified using a format containing all -14 @samp{-}s (not by -@samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}, for instance), -because every @acronym{ATSUI}-compatible font is a scalable one. +@item HideOnAutoLaunch +@samp{YES} or @samp{NO} to determine whether Emacs will hide itself when +autolaunched from the dock. - QuickDraw Text fonts have maker name @code{apple} and various charset -names other than @code{iso10646-1}. Native Apple fonts in Mac Roman -encoding has charset @code{mac-roman}. You can specify a -@code{mac-roman} font for @acronym{ASCII} characters like - -@smalllisp -(add-to-list - 'default-frame-alist - '(font . "-apple-monaco-medium-r-normal--13-*-*-*-*-*-mac-roman")) -@end smalllisp +@example +defaults write Emacs HideOnAutoLaunch NO +@end example -@noindent -but that does not extend to ISO-8859-1: specifying a @code{mac-roman} -font for Latin-1 characters introduces wrong glyphs. - - Native Apple Traditional Chinese, Simplified Chinese, Japanese, -Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have -the charsets @samp{big5-0}, @samp{gb2312.1980-0}, -@samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0}, -@samp{ksc5601.1989-0}, @samp{mac-centraleurroman}, -@samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats}, -respectively. - - The use of @code{create-fontset-from-fontset-spec} (@pxref{Defining -Fontsets}) for defining fontsets often results in wrong ones especially -when using only OS-bundled QuickDraw Text fonts. The recommended way to -use them is to create a fontset using -@code{create-fontset-from-mac-roman-font}: +@item ExpandSpace +This lets you expand or shrink the line height used for displaying +text. When this is set to 0.0, display should look like other +Nextstep applications. If you set it higher than 0, Emacs will spread +the text lines apart, less than 0, compress them together. (With +settings below zero parts of characters may be chopped off in certain +fonts.) When using the Preferences panel, this is controlled by a +slider. You must OK the panel and then restart Emacs for this default +to take effect. -@lisp -(create-fontset-from-mac-roman-font - "-apple-courier-medium-r-normal--13-*-*-*-*-*-mac-roman" - nil "foo") -@end lisp +When setting this using @code{"defaults write"}, you can either set a floating +point value, or @samp{YES}, which is equivalent 0.5, or @samp{NO}, which is +equivalent to 0.0. -@noindent -and then optionally specifying Chinese, Japanese, or Korean font -families using @code{set-fontset-font}: - -@lisp -(set-fontset-font "fontset-foo" - 'chinese-gb2312 '("song" . "gb2312.1980-0")) -@end lisp +@example +defaults write Emacs ExpandSpace -0.125 +@end example - Single-byte fonts converted from GNU fonts in BDF format, which are not -in the Mac Roman encoding, have foundry, family, and character sets -encoded in the names of their font suitcases. E.g., the font suitcase -@samp{ETL-Fixed-ISO8859-1} contains fonts which can be referred to by -the name @samp{-ETL-fixed-*-iso8859-1}. +@item GSFontAntiAlias +This turns antialiasing on and off on. Note that, on OS X, even if +antialiasing is on, Emacs will not antialias text of a size below the system +preference setting. -@vindex mac-allow-anti-aliasing - Mac OS X 10.2 or later can use two types of text renderings: Quartz 2D -(aka Core Graphics) and QuickDraw. By default, Emacs uses the former on -such versions. It can be changed by setting -@code{mac-allow-anti-aliasing} to @code{t} (Quartz 2D) or @code{nil} -(QuickDraw). Both @acronym{ATSUI} and QuickDraw Text drawings are -affected by the value of this variable. +@example +defaults write Emacs GSFontAntiAlias NO +@end example - Appearance of text in small sizes will also be affected by the ``Turn -off text smoothing for font sizes @var{n} and smaller'' setting in the -General pane (Mac OS X 10.1 or 10.2) or in the Appearance pane (10.3 or -later) of the System Preferences. This threshold can alternatively be -set just for Emacs (i.e., not as the system-wide setting) using the -@command{defaults} command: +@item UseQuickdrawSmoothing +On OS X 10.3 and higher, this will render fonts using Quickdraw antialiasing, +which is less heavy than the Quartz antialiasing used by default. Whether +this is on or off, the system font size threshold for antialiasing (see above) +is respected. @example -defaults write org.gnu.Emacs AppleAntiAliasingThreshold @var{n} +defaults write Emacs UseQuickdrawSmoothing YES +@end example + +@item AlternateModifier +This allows you to set the effect of the Alt or Opt key. The default is +@samp{meta}, meaning to use as the Emacs 'meta' key. You can also set this to +@samp{command}, @samp{hyper}, @samp{alt}, or @samp{none}. The last is useful +for Continental users who normally use this key to enter accented and other +special characters. + +@example +defaults write Emacs AlternateModifier "none" @end example - -@node Mac Functions -@section Mac-Specific Lisp Functions -@cindex Lisp functions specific to Mac OS +@item CommandModifier +This allows you to set the effect of the Command key. The default is +@samp{super}, which is used in a set of keybindings such as @code{s-o} for +``open file'' and @code{s-z} for ``undo'' that are similar to other NeXTstep +applications. On the other hand, some people who use the Alt/Opt key for +accent entry like to set this to @samp{meta} so they still have easy access to +Emacs functionality bound to meta keys. You can also set this, like Alt/Opt, +to @samp{hyper} or @samp{alt}, though there are no bindings to combinations +using these keys by default. The @samp{none} option is not available for the +Command key. -@findex do-applescript - The function @code{do-applescript} takes a string argument, -executes it as an AppleScript command, and returns the result as a -string. +@example +defaults write Emacs CommandModifier "meta" +@end example -@findex mac-file-name-to-posix -@findex posix-file-name-to-mac - The function @code{mac-file-name-to-posix} takes a Mac file name and -returns the GNU or Unix equivalent. The function -@code{posix-file-name-to-mac} performs the opposite conversion. They -are useful for constructing AppleScript commands to be passed to -@code{do-applescript}. +@item fooFrame +Position and size to use for the frame named @var{foo} when it is +created. The position and size have to be specified as a space +separated list: @samp{top}, @samp{left}, @samp{height} and +@samp{width}. @samp{top} and @samp{left} are expressed in pixels, +@samp{height} is given in rows and @samp{width} is given in columns. +Named frames can be created by e.g. @code{(make-frame '((name +. "FOO")))}. + +@example +defaults write Emacs TestFrame "100 200 30 70" +@end example -@findex mac-set-file-creator -@findex mac-get-file-creator -@findex mac-set-file-type -@findex mac-get-file-type - The functions @code{mac-set-file-creator}, -@code{mac-get-file-creator}, @code{mac-set-file-type}, and -@code{mac-get-file-type} can be used to set and get creator and file -codes. +Another default previouly used by many Emacs users is this. + +@example +defaults write Workspace DefaultOpenApp Emacs +@end example -@findex mac-get-preference - The function @code{mac-get-preference} returns the preferences value -converted to a Lisp object for a specified key and application. +It caused the NeXTstep Workspace to open files without a registered extension +in Emacs instead of as usual Edit. For this default to work, Emacs needed to +be in the application search path of the Workspace (which usually includes +@file{~/Applications} and @file{~/Applications}). If anyone knows the current +way to do this under OS X please contact the authors. + +@end table @ignore arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6