@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 99, 2000, 2001, 2004
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
+@c 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Frames, International, Windows, Top
@chapter Frames and X Windows
Emacs compiled for MS-DOS emulates some aspects of the window system
so that you can use many of the features described in this chapter.
-@xref{MS-DOS Input}, for more information.
-
-@cindex MS Windows
- Emacs compiled for MS Windows mostly supports the same features as
-under X.
+@xref{MS-DOS Mouse}, for more information.
@menu
* Mouse Commands:: Moving, cutting, and pasting, with the mouse.
* Frame Parameters:: Changing the colors and other modes of frames.
* Scroll Bars:: How to enable and disable scroll bars; how to use them.
* Wheeled Mice:: Using mouse wheels for scrolling.
-* Drag and drop:: Using drag and drop to open files and insert text.
+* Drag and Drop:: Using drag and drop to open files and insert text.
* Menu Bars:: Enabling and disabling the menu bar.
* Tool Bars:: Enabling and disabling the tool bar.
* Dialog Boxes:: Controlling use of dialog boxes.
-* Tooltips:: Showing "tooltips", AKA "balloon help" for active text.
+* Tooltips:: Displaying information at the current mouse position.
* Mouse Avoidance:: Moving the mouse pointer out of the way.
* Non-Window Terminals:: Multiple frames on terminals that show only one.
* XTerm Mouse:: Using the mouse in an XTerm terminal emulator.
The mouse commands for selecting and copying a region are mostly
compatible with the @code{xterm} program. You can use the same mouse
-commands for copying between Emacs and other X client programs.
+commands for copying between Emacs and other window-based programs.
+Most of these commands also work in Emacs when you run it under an
+@code{xterm} terminal.
@kindex DELETE @r{(and mouse selection)}
If you select a region with any of these mouse commands, and then
Move point to where you click (@code{mouse-set-point}).
This is normally the left button.
+@vindex x-mouse-click-focus-ignore-position
+Normally, Emacs does not distinguish between ordinary mouse clicks and
+clicks that select a frame. When you click on a frame to select it,
+that also changes the selected window and cursor position according to
+the mouse click position. On the X window system, you can change this
+behavior by setting the variable
+@code{x-mouse-click-focus-ignore-position} to @code{t}. Then the
+first click selects the frame, but does not affect the selected window
+or cursor position. If you click again in the same place, since that
+click will be in the selected frame, it will change the window or
+cursor position.
+
@item Drag-Mouse-1
Set the region to the text you select by dragging, and copy it to the
kill ring (@code{mouse-set-region}). You can specify both ends of the
on how far away from the window edge the mouse has gone; the variable
@code{mouse-scroll-min-lines} specifies a minimum step size.
+@vindex mouse-drag-copy-region
+If the variable @code{mouse-drag-copy-region} is @code{nil}, this
+mouse command does not copy the selected region into the kill ring.
+
@item Mouse-2
Yank the last killed text, where you click (@code{mouse-yank-at-click}).
This is normally the middle button.
system for X selections, use @kbd{C-x @key{RET} x} or @kbd{C-x
@key{RET} X}. @xref{Specify Coding}.
- These cutting and pasting commands also work on MS-Windows.
-
@cindex primary selection
@cindex cut buffer
@cindex selection, primary
@cindex OpenWindows
@cindex Gnome
- As well as the primary and secondary selection types, X supports a
+ Apart from the primary and secondary selection types, X supports a
@dfn{clipboard} selection type which is used by some applications,
particularly under OpenWindows and Gnome.
@node Mouse References
@section Following References with the Mouse
+@kindex Mouse-1 @r{(selection)}
@kindex Mouse-2 @r{(selection)}
- Some Emacs buffers display lists of various sorts. These include
-lists of files, of buffers, of possible completions, of matches for
-a pattern, and so on.
-
- Since yanking text into these buffers is not very useful, most of them
-define @kbd{Mouse-2} specially, as a command to use or view the item you
-click on.
-
- For example, if you click @kbd{Mouse-2} on a file name in a Dired
-buffer, you visit that file. If you click @kbd{Mouse-2} on an error
-message in the @samp{*Compilation*} buffer, you go to the source code
-for that error message. If you click @kbd{Mouse-2} on a completion in
-the @samp{*Completions*} buffer, you choose that completion.
+ Some read-only Emacs buffers include references you can follow, or
+commands you can activate. These include names of files, of buffers,
+of possible completions, of matches for a pattern, as well as the
+buttons in Help buffers and customization buffers. You can follow the
+reference or activate the command by moving point to it and typing
+@key{RET}. You can also do this with the mouse, using either
+@kbd{Mouse-1} or @kbd{Mouse-2}.
+
+ Since yanking text into a read-only buffer is not allowed, these
+buffers generally define @kbd{Mouse-2} to follow a reference or
+activate a command. For example, if you click @kbd{Mouse-2} on a file
+name in a Dired buffer, you visit that file. If you click
+@kbd{Mouse-2} on an error message in the @samp{*Compilation*} buffer,
+you go to the source code for that error message. If you click
+@kbd{Mouse-2} on a completion in the @samp{*Completions*} buffer, you
+choose that completion.
+
+ However, most applications use @kbd{Mouse-1} to do this sort of
+thing, so Emacs implements this too. If you click @kbd{Mouse-1}
+quickly on a reference or button, it follows or activates. If you
+click slowly, it moves point as usual. Dragging, meaning moving the
+mouse while it is held down, also has its usual behavior of setting
+the region.
+
+@vindex mouse-1-click-in-non-selected-windows
+ Normally, the @kbd{Mouse-1} click behavior is performed on links in
+any window. The variable @code{mouse-1-click-in-non-selected-windows}
+controls whether @kbd{Mouse-1} has this behavior even in non-selected
+windows, or only in the selected window.
@vindex mouse-highlight
- You can usually tell when @kbd{Mouse-2} has this special sort of
-meaning because the sensitive text highlights when you move the mouse
-over it. The variable @code{mouse-highlight} controls whether to do
-this highlighting always (even when such text appears where the mouse
-already is), never, or only immediately after you move the mouse.
+ You can usually tell when @kbd{Mouse-1} and @kbd{Mouse-2} have this
+special sort of meaning because the sensitive text highlights when you
+move the mouse over it. The variable @code{mouse-highlight} controls
+whether to do this highlighting always (even when such text appears
+where the mouse already is), never, or only immediately after you move
+the mouse.
+
+@vindex mouse-1-click-follows-link
+ In Emacs versions before 22, only @kbd{Mouse-2} follows links and
+@kbd{Mouse-1} always sets points. If you prefer this behavior, set
+the variable @code{mouse-1-click-follows-link} to @code{nil}. This
+variable also lets you choose various other alternatives for following
+links with the mouse. Type @kbd{C-h v mouse-1-click-follows-link @key{RET}}
+for more details.
@node Menu Mouse Clicks
@section Mouse Clicks for Menus
@item C-Mouse-3
@kindex C-Mouse-3
-This menu is mode-specific. For most modes if Menu-bar mode is on, this
-menu has the same items as all the mode-specific menu-bar menus put
-together. Some modes may specify a different menu for this
+This menu is mode-specific. For most modes if Menu-bar mode is on,
+this menu has the same items as all the mode-specific menu-bar menus
+put together. Some modes may specify a different menu for this
button.@footnote{Some systems use @kbd{Mouse-3} for a mode-specific
menu. We took a survey of users, and found they preferred to keep
-@kbd{Mouse-3} for selecting and killing regions. Hence the decision to
-use @kbd{C-Mouse-3} for this menu.} If Menu-bar mode is off, this menu
-contains all the items which would be present in the menu bar---not just
-the mode-specific ones---so that you can access them without having to
-display the menu bar.
+@kbd{Mouse-3} for selecting and killing regions. Hence the decision
+to use @kbd{C-Mouse-3} for this menu. To use @kbd{Mouse-3} instead,
+do @code{(global-set-key [mouse-3] 'mouse-popup-menubar-stuff)}.} If
+Menu-bar mode is off, this menu contains all the items which would be
+present in the menu bar---not just the mode-specific ones---so that
+you can access them without having to display the menu bar.
@item S-Mouse-1
This menu is for specifying the frame's principal font.
You can use mouse clicks on window mode lines to select and manipulate
windows.
+ Some areas of the mode line, such as the buffer name and the major
+mode name, have their own special mouse bindings. These areas are
+highlighted when you hold the mouse over them, and information about
+the special bindings will be displayed (@pxref{Tooltips}).
+
+ You can also click on areas of the mode line that do not have
+special mouse bindings of their own. This has the following effects:
+
@table @kbd
@item Mouse-1
@kindex Mouse-1 @r{(mode line)}
-@kbd{Mouse-1} on a mode line selects the window above. By dragging
-@kbd{Mouse-1} on the mode line, you can move it, thus changing the
-height of the windows above and below.
+@kbd{Mouse-1} on a mode line selects the window it belongs to. By
+dragging @kbd{Mouse-1} on the mode line, you can move it, thus
+changing the height of the windows above and below.
@item Mouse-2
@kindex Mouse-2 @r{(mode line)}
@item Mouse-3
@kindex Mouse-3 @r{(mode line)}
-@kbd{Mouse-3} on a mode line deletes the window above. If the frame has
-only one window, it buries the current buffer instead and switches to
-another buffer.
+@kbd{Mouse-3} on a mode line deletes the window it belongs to. If the
+frame has only one window, it buries the current buffer instead, and
+switches to another buffer.
@item C-Mouse-2
@kindex C-mouse-2 @r{(mode line)}
@kbd{C-Mouse-2} on a scroll bar splits the corresponding window
vertically. @xref{Split Window}.
- The commands above apply to areas of the mode line which do not have
-special mouse bindings of their own. Some areas, such as the buffer
-name and the major mode name, have their own special mouse bindings.
-Emacs displays information about these bindings when you hold the
-mouse over such a place (@pxref{Tooltips}).
-
@node Creating Frames
@section Creating Frames
@cindex creating frames
Here's a similar example for specifying a foreground color:
@example
-(add-to-list 'default-frame-alist '(background-color . "blue"))
+(add-to-list 'default-frame-alist '(foreground-color . "blue"))
@end example
-
@node Frame Commands
@section Frame Commands
@node Frame Parameters
@section Setting Frame Parameters
-@cindex colors
@cindex Auto-Raise mode
@cindex Auto-Lower mode
@findex set-border-color
@findex auto-raise-mode
@findex auto-lower-mode
+@cindex colors
@table @kbd
@item M-x set-foreground-color @key{RET} @var{color} @key{RET}
Specify color @var{color} for the foreground of the selected frame.
-(This also changes the foreground color of the default face.)
+(This also changes the foreground color of the default face.) You can
+specify @var{color} either by its symbolic name or by its RGB
+numerical specification@footnote{
+See the X Window System documentation for more details. On a typical
+GNU or Unix system, the command @kbd{man 7 X} or @kbd{man -s 7 X} will
+display the X manual page that explains how to specify colors.}.
@item M-x set-background-color @key{RET} @var{color} @key{RET}
Specify color @var{color} for the background of the selected frame.
@item M-x list-colors-display
Display the defined color names and show what the colors look like.
-This command is somewhat slow.
+This command is somewhat slow. @xref{Colors, list-colors-display,
+Display available colors}.
@item M-x auto-raise-mode
Toggle whether or not the selected frame should auto-raise. Auto-raise
usually click the wheel to act as either @kbd{Mouse-2} or
@kbd{Mouse-3}, depending on the setup. You can also use the wheel to
scroll windows instead of using the scroll bar or keyboard commands.
-To do so, turn on Mouse Wheel global minor mode with the command
-@kbd{M-x mouse-wheel-mode} or by customizing the variable
-@code{mouse-wheel-mode}. Support for the wheel depends on the system
-generating appropriate events for Emacs.
+Mouse wheel support only works if the system generates appropriate
+events; whenever possible, it is turned on by default. To toggle this
+feature, use @kbd{M-x mouse-wheel-mode}.
@vindex mouse-wheel-follow-mouse
@vindex mouse-wheel-scroll-amount
+@vindex mouse-wheel-progressive-speed
The variables @code{mouse-wheel-follow-mouse} and
@code{mouse-wheel-scroll-amount} determine where and by how much
-buffers are scrolled.
-
-@node Drag and drop
-@section Drag and drop in Emacs.
+buffers are scrolled. The variable
+@code{mouse-wheel-progressive-speed} determines whether the scroll
+speed is linked to how fast you move the wheel.
+@node Drag and Drop
+@section Drag and Drop
@cindex drag and drop
- Emacs supports drag and drop so that dropping of files and text is handled.
-Currently supported drag and drop protocols are XDND, Motif and the old
-KDE 1.x protocol. There is no drag support yet.
-When text is dropped on Emacs, Emacs inserts the text where it is dropped.
-When a file is dragged from a file manager to Emacs, Emacs opens that file.
-As a special case, if a file is dropped on a dired buffer the file is
-copied or moved (depends on exactly how it is dragged and the application
-it was dragged from) to the directory the dired buffer is displaying.
+ Emacs supports @dfn{drag and drop} using the mouse. For instance,
+dropping text onto an Emacs frame inserts the text where it is dropped.
+Dropping a file onto an Emacs frame visits that file. As a special
+case, dropping the file on a Dired buffer moves or copies the file
+(according to the conventions of the application it came from) into the
+directory displayed in that buffer.
+
+@vindex x-dnd-open-file-other-window
+ Dropping a file normally visits it in the window you drop it on. If
+you prefer to visit the file in a new window in such cases, customize
+the variable @code{x-dnd-open-file-other-window}.
+
+@ignore
+@c ??? To Lisp manual
@vindex x-dnd-test-function
@vindex x-dnd-known-types
When a user drags something from another application over Emacs, that other
@code{x-dnd-known-types} if you want Emacs to accept or reject drops based
on some other criteria.
-@vindex x-dnd-open-file-other-window
- A file is normally opened in the window it is dropped on, but if you
-prefer the file to be opened in a new window you can customize the variable
-@code{x-dnd-open-file-other-window}.
-
@vindex x-dnd-types-alist
If you want to change the way Emacs handles drop of different types
-or add a new type, you shall customize @code{x-dnd-types-alist}. This
-requires detailed knowledge of what types other applications use
-for drag and drop.
+or add a new type, customize @code{x-dnd-types-alist}. This requires
+detailed knowledge of what types other applications use for drag and
+drop.
@vindex x-dnd-protocol-alist
When an URL is dropped on Emacs it may be a file, but it may also be
another URL type (ftp, http, etc.). Emacs first checks
-@code{x-dnd-protocol-alist} to determine what to do with the URL. If there
-is no match there and if @code{browse-url-browser-function} is an alist,
-Emacs looks for a match there. If no match is found the text for the URL
-is inserted. If you want to alter Emacs behaviour you can customize these
-variables.
+@code{x-dnd-protocol-alist} to determine what to do with the URL. If
+there is no match there and if @code{browse-url-browser-function} is
+an alist, Emacs looks for a match there. If no match is found the
+text for the URL is inserted. If you want to alter Emacs behavior,
+you can customize these variables.
+@end ignore
+ The drag and drop protocols XDND, Motif and the
+old KDE 1.x protocol are currently supported.
@node Menu Bars
@section Menu Bars
@cindex mode, Tool Bar
@cindex icons, toolbar
-The @dfn{tool bar} is a line (or multiple lines) of icons at the top
-of the Emacs window. You can click on these icons with the mouse
-to do various jobs.
+ The @dfn{tool bar} is a line (or lines) of icons at the top of the
+Emacs window, just below the menu bar. You can click on these icons
+with the mouse to do various jobs.
-The global tool bar contains general commands. Some major modes
+ The global tool bar contains general commands. Some major modes
define their own tool bars to replace it. A few ``special'' modes
that are not designed for ordinary editing remove some items from the
global tool bar.
-Tool bars work only on a graphical display. The tool bar uses colored
+ Tool bars work only on a graphical display. The tool bar uses colored
XPM icons if Emacs was built with XPM support. Otherwise, the tool
bar uses monochrome icons (PBM or XBM format).
-You can turn display of tool bars on or off with @kbd{M-x
+ You can turn display of tool bars on or off with @kbd{M-x
tool-bar-mode}.
@node Dialog Boxes
the setting of this variable has no effect.
@node Tooltips
-@section Tooltips (or ``Balloon Help'')
+@section Tooltips
+@cindex tooltips
-@cindex balloon help
- Tooltips are small X windows displaying a help string at the current
-mouse position, typically over text---including the mode line---which
-can be activated with the mouse or other keys. (This facility is
-sometimes known as @dfn{balloon help}.) Help text may be available for
-menu items too.
+ @dfn{Tooltips} are small windows that display text information at the
+current mouse position. They activate when there is a pause in mouse
+movement. There are two types of tooltip: help tooltips and GUD
+tooltips.
+
+ @dfn{Help tooltips} typically display over text---including the mode
+line---but may be also available for many other parts of the Emacs
+frame such as the tool bar and menu items.
@findex tooltip-mode
- To use tooltips, enable Tooltip mode with the command @kbd{M-x
-tooltip-mode}. The customization group @code{tooltip} controls
-various aspects of how tooltips work. When Tooltip mode is disabled,
-the help text is displayed in the echo area instead.
+ You can toggle help tooltips (Tooltip mode) with the command
+ @kbd{M-x tooltip-mode}. When Tooltip mode is disabled, the help text
+is displayed in the echo area instead.
+
+ @dfn{GUD tooltips} show values of variables. They are useful when
+you are debugging a program. @xref{Debugger Operation}.
@vindex tooltip-delay
The variables @code{tooltip-delay} specifies how long Emacs should
Some terminal emulators under X support mouse clicks in the terminal
window. In a terminal emulator which is compatible with @code{xterm},
-you can use @kbd{M-x xterm-mouse-mode} to enable simple use of the
-mouse---only single clicks are supported. The normal @code{xterm} mouse
-functionality is still available by holding down the @kbd{SHIFT} key
-when you press the mouse button. The Linux console supports this
-mode if it has support for the mouse enabled, e.g.@: using the
-@command{gpm} daemon.
+you can use @kbd{M-x xterm-mouse-mode} to give Emacs control over
+simple use of the mouse---basically, only non-modified single clicks
+are supported. The normal @code{xterm} mouse functionality for such
+clicks is still available by holding down the @kbd{SHIFT} key when you
+press the mouse button.
+
+ Xterm Mouse mode is a global minor mode (@pxref{Minor Modes}).
+Repeating the command turns the mode off again.
@ignore
arch-tag: 7dcf3a31-a43b-45d4-a900-445b10d77e49