]> code.delx.au - gnu-emacs/blobdiff - doc/emacs/macos.texi
Merge from emacs-23; up to 2010-06-12T11:17:12Z!eliz@gnu.org.
[gnu-emacs] / doc / emacs / macos.texi
index 4344cc4a7a46993786c01277dae62300cd8003fa..85d92c9fcd736588566ae63d9a0a513f25320bc8 100644 (file)
@@ -1,6 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 2000, 2001, 2002, 2003, 2004,
-@c   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+@c Copyright (C) 2000-2011  Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node Mac OS / GNUstep, Microsoft Windows, Antinews, Top
 @appendix Emacs and Mac OS / GNUstep
@@ -8,54 +7,52 @@
 @cindex Macintosh
 @cindex GNUstep
 
-  This section briefly describes the peculiarities of using Emacs built with
-the GNUstep libraries on GNU/Linux or other operating systems, or on 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 the Cocoa interface.  This
-section only applies to the Cocoa build.  Emacs 23 does not support Mac OS
-Classic.
-
-  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
-alpha status (see @pxref{GNUstep Support}), but we hope to improve it in the
-future.
+  This section describes the peculiarities of using Emacs built with
+the GNUstep libraries on GNU/Linux or other operating systems, or on
+Mac OS X with native window system support.  On Mac OS X, Emacs can be
+built either without window system support, with X11, or with the
+Cocoa interface; this section only applies to the Cocoa build.  Emacs
+does not support earlier versions of Mac OS.
+
+  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 this section
+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 descendant.  Apart from Cocoa, there is
+another NeXTstep-style system: GNUstep, which is free software.  As of
+this writing, the GNUstep support is alpha status (@pxref{GNUstep
+Support}), but we hope to improve it in the future.
 
 @menu
 * Mac / GNUstep Basics::        Basic Emacs usage under GNUstep or Mac OS.
 * Mac / GNUstep Customization:: Customizations under GNUstep or Mac OS.
 * Mac / GNUstep Events::        How window system events are handled.
-* GNUstep Support::             Details on status of GNUstep support
-* 
+* GNUstep Support::             Details on status of GNUstep support.
 @end menu
 
 @node Mac / GNUstep Basics, Mac / GNUstep Customization, , Mac OS / GNUstep
 @section Basic Emacs usage under Mac OS and GNUstep
 
-  Redundancy in the menus can be reduced and more shortcuts shown by
-invoking @code{ns-extended-platform-support-mode}.
-
   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 / GNUstep applications (@pxref{Mac /
-GNUstep Events}).  You can change these bindings in the usual way (@pxref{Key
-Bindings}), or by using the Preferences panel (@pxref{Mac / GNUstep
-Customization}).
-
-  The standard Mac / GNUstep 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
+@key{Meta}.  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 / GNUstep applications (@pxref{Mac / GNUstep Events}).  You
+can change these bindings in the usual way (@pxref{Key Bindings}).
+
+  The variable @code{ns-right-alternate-modifier} controls the
+behavior of the right @key{alt} and @key{option} keys.  These keys
+behave like the left-hand keys if the value is @code{left} (the
+default).  A value of @code{control}, @code{meta}, @code{alt},
+@code{super}, or @code{hyper} makes them behave like the corresponding
+modifier keys; a value of @code{none} tells Emacs to ignore them.
+
+  The standard Mac / GNUstep font and color panels are accessible via
+Lisp commands.  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.
+instead). To discard the settings, create a new frame and close the
+altered one.
 
   @key{S-Mouse-1} (i.e., clicking the left mouse button
 while holding down the @key{Shift} key) adjusts the region to the
@@ -64,7 +61,7 @@ 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 / GNUstep applications.
 
-  When you open or save files using the menus, or using the standard
+  When you open or save files using the menus, or using the
 @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
@@ -80,48 +77,19 @@ clipboard.
 
 @subsection Grabbing environment variables
 
-Many programs which may run under Emacs like latex or man depend on the
+@c How is this any different to launching from a window manager menu
+@c in GNU/Linux?  These are sometimes not login shells either.
+Many programs which may run under Emacs, like latex or man, depend on the
 settings of environment variables.  If Emacs is launched from the shell, it
 will automatically inherit these environment variables and its subprocesses
 will inherit them from it.  But if Emacs is launched from the Finder it
 is not a descendant of any shell, so its environment variables haven't been
-set which often causes the subprocesses it launches to behave differently than
+set, which often causes the subprocesses it launches to behave differently than
 they would when launched from the shell.
 
-To solve this problem for Emacs, there are two solutions.  First is to
-run, from the command line:
-
-@example
-.../Emacs.app/Contents/MacOS/bin/mac-fix-env
-@end example
-
-This will pick up your environment settings and save them into a special file
-@file{~/.MacOSX/environment.plist}, which the desktop environment will use to
-set the environment for all launched applications.  The drawback of this
-method is it needs to be run again whenever something changes.
-
-The other approach is to use the @code{ns-grabenv} command inside Emacs.  This
-function will run a subshell and copy its environment variables into Emacs.
-
-Adding this line to your @file{~/.emacs} will grab the csh environment
-whenever emacs runs under a window system.
-
-@lisp
-(if window-system (ns-grabenv))
-@end lisp
-
-If you have a different shell you will have to give @code{ns-grabenv} some
-arguments.  For zsh you would do this.
-
-@lisp
-(if window-system (ns-grabenv "/usr/bin/zsh"
-                           "source /etc/zshenv"
-                           "source ~/.zshenv"))
-@end lisp
-
-The reason that @code{ns-grabenv} is not done by default is that it adds up
-to a second or two to the Emacs startup time.
-
+For the PATH and MANPATH variables, a system-wide method
+of setting PATH is recommended on Mac OS X 10.5 and later, using the
+@file{/etc/paths} files and the @file{/etc/paths.d} directory.
 
 @node Mac / GNUstep Customization, Mac / GNUstep Events, Mac / GNUstep Basics, Mac OS / GNUstep
 @section Mac / GNUstep Customization
@@ -129,316 +97,26 @@ to a second or two to the Emacs startup time.
 Emacs can be customized in several ways in addition to the standard
 customization buffers and the Options menu.
 
-In addition, redundancy in the menus can be reduced and more shortcuts
-shown by invoking @code{ns-extended-platform-support-mode}.
-
-
-@subsection Preferences Panel
-
-The Preferences panel, much like the Options menu, is designed to allow quick
-and convenient setting of commonly used options.
-
-The Preferences panel is available for setting commonly used GUI-related
-options for Emacs.  Access it under the Emacs menu (Mac) or Info menu
-(GNUstep), or using @kbd{Cmd-,}.
-
-Settings made here are saved when @samp{OK} is hit, or @samp{Save Options} is
-selected from the Options menu.  These settings are stored into the NeXTstep
-``defaults'' system under keys described below.
-
-@itemize @bullet
-@item
-To set the default font used by Emacs click the @samp{Default Font...} button
-to being up the Font Panel, then click on a frame.  The font of this frame
-will then be changed when you make a selection in the Font Panel, and this
-will be used as the default for future frames.  If you do not select a frame
-first, the frame selected when you activated Preferences will be changed.
-
-@item
-The Color panel, brought up by the @samp{Colors...} button, allows setting of
-foreground or background of any face.  Drag from the color bar to over the
-emacs face you want to change.  This will change the foreground of that face,
-or holding shift when dragging will change the background.
-
-@item
-@samp{Smooth Fonts} and @samp{Use Quickdraw} control text antialiasing.
-Quickdraw is an older Mac technology still supported under OS X.
-
-@item
-The @samp{Expand Line Spacing} slider controls vertical spacing of text.  The
-0.0 setting corresponds to the same height as other applications.  Settings
-less than 0 compress the spacing, and greater than 0 expand it.  Emacs must be
-restarted for the new setting to take effect.
-
-@item
-The @samp{Cursor Type} radio buttons select the cursor shape:
-cursor:
-
-@itemize
-@item
-Filled Box - the cursor is displayed as a box (default)
-@item
-Vertical Bar - the cursor is displayed as a vertical line
-@item
-Underscore - the cursor is displayed as a horizontal line
-@item
-Hollow - the cursor is displayed as a box with an outline but no fill
-@end itemize
-
-@item
-The @samp{Cursor Blink Rate} slider to sets the frequency at which the cursor
-blinks (CURRENTLY INOPERATIVE -- use @samp{customize group cursor} instead.)
-
-@item
-The @samp{Use System Highlight Color} option controls whether selected text is
-highlighted with the system default or the local emacs setting.
-
-@end itemize
-
-The behavior of Modifier keys inside emacs can be controlled by the drop-down
-menus in the @samp{Modifiers} section.  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.
-
 
 @subsection Font and Color Panels
 
-The Font Panel may be accessed from the Windows menu or by @kbd{Cmd-t}.  It
-will set the default font in the frame most recently used or clicked on.  To
-make the setting permanent, use @samp{Save Options} in the Options menu, or
-run @code{ns-save-preferences}.
+The Font Panel may be accessed with M-x ns-popup-font-panel.  It
+will set the default font in the frame most recently used or clicked
+on.
 
-You can bring up a color panel (with @key{Cmd-C} or from the Windows menu) and
+@c  To make the setting permanent, use @samp{Save Options} in the
+@c Options menu, or run @code{menu-bar-options-save}.
+
+You can bring up a color panel with M-x ns-popup-color-panel. and
 drag the color you want over the emacs face you want to change.  Normal
 dragging will alter the foreground color.  Shift dragging will alter the
-background color.  To make the changes permanent select the "Save Options"
-item in the "Options" menu, or run @code{ns-save-preferences}.  Useful in this
-context is the listing of all faces obtained by @key{M-x}
-@code{list-faces-display}.
-
+background color.
 
-@subsection Defaults
-
-Under X, resources are used to customize the behavior of Emacs to the
-needs of the user.  Nextstep defaults fulfill a similar function.  From
-the command line, the command @samp{defaults read org.gnu.Emacs} shows
-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}.
-
-  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.  It is important to note that when you hit @samp{OK} on
-this panel, @emph{all} Nextstep settings are saved (including font and
-colors).
-
-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.)
-
-@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
-defaults write Emacs InternalBorderWidth 2
-@end example
-
-@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 Emacs VerticalScrollBars YES
-@end example
-
-@item Font
-Name of the default font to be used for new frames (which can be
-overridden 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.)
-
-@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.
-
-@item Foreground
-The default foreground (text) color for new frames.
-
-@example
-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
-
-@item Width
-Width in columns of the default window.
-
-@example
-defaults write Emacs Width 80
-@end example
-
-@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}.
-
-@example
-defaults write Emacs CursorType box
-@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 blue
-@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
-
-@item HideOnAutoLaunch
-@samp{YES} or @samp{NO} to determine whether Emacs will hide itself when
-autolaunched from the dock.
-
-@example
-defaults write Emacs HideOnAutoLaunch NO
-@end example
-
-@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.
-
-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.
-
-@example
-defaults write Emacs ExpandSpace -0.125
-@end example
-
-@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.
-
-@example
-defaults write Emacs GSFontAntiAlias NO
-@end example
-
-@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 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
-
-@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.
-
-@example
-defaults write Emacs CommandModifier "meta"
-@end example
-
-@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
-
-Another default previouly used by many Emacs users is this.
-
-@example
-defaults write Workspace DefaultOpenApp Emacs
-@end example
-
-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.
+@c To make the changes permanent select the "Save Options"
+@c item in the "Options" menu, or run @code{menu-bar-options-save}.
 
-@end table
+Useful in this context is the listing of all faces obtained by @key{M-x}
+@code{list-faces-display}.
 
 @subsection Open files by dragging to an Emacs window
 
@@ -468,7 +146,7 @@ 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
+that frame (@code{ns-find-file}) As an exception, if the selected
 buffer is the @samp{*scratch*} buffer, Emacs visits the file in the
 selected frame.
 
@@ -483,10 +161,6 @@ 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.
 
-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}.
-
 @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
@@ -515,12 +189,12 @@ 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.
+@code{ns-input-fontsize}, respectively.
 
 @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.
+This event occurs when the user logs out and Emacs is still running, or when
+`Quit Emacs' is chosen from the application menu.
+The default behavior is to save all file-visiting buffers.
 @end table
 
   Emacs also allows users to make use of Nextstep services, via a set
@@ -533,20 +207,9 @@ and return the result as a string.  You can also use the Lisp function
 services and receive the results back.  Note that you may need to
 restart Emacs to access newly-available services.
 
-
 @node GNUstep Support, , Mac / GNUstep Events, Mac OS / GNUstep
 @section GNUstep Support
 
-Emacs can be built and run under GNUstep however building is difficult and
-there are some limitations to functionality.  In particular, it may be
-necessary to run @samp{make bootstrap} with a plain X configuration, then
-@samp{make clean} and @samp{./configure --with-ns} followed by @samp{make
-install}.
-
-Currently CANNOT_DUMP is automatically enabled in GNUstep configurations,
-because the unex file(s) for GNUstep, mainly @samp{unexelf.c}, have not been
-updated yet with the ``zone'' code in and related to @samp{unexmacosx.c}.
-
-@ignore
-   arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6
-@end ignore
+Emacs can be built and run under GNUstep, but there are still some
+issues to be addressed.  Interested developers should contact
+@email{emacs-devel@@gnu.org}.