frames.texi 52.6 KB
Newer Older
Glenn Morris's avatar
Glenn Morris committed
1
@c This is part of the Emacs manual.
Paul Eggert's avatar
Paul Eggert committed
2
@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2016 Free Software
3
@c Foundation, Inc.
Glenn Morris's avatar
Glenn Morris committed
4
@c See file emacs.texi for copying conditions.
5
@node Frames
Glenn Morris's avatar
Glenn Morris committed
6 7 8
@chapter Frames and Graphical Displays
@cindex frames

9
  When Emacs is started on a graphical display, e.g., on the X Window
Paul Eggert's avatar
Paul Eggert committed
10
System, it occupies a graphical system-level display region.  In this
11
manual, we call this a @dfn{frame}, reserving the word ``window'' for
12 13 14 15 16 17 18 19 20 21 22 23 24 25
the part of the frame used for displaying a buffer.  A frame initially
contains one window, but it can be subdivided into multiple windows
(@pxref{Windows}).  A frame normally also contains a menu bar, tool
bar, and echo area.

  You can also create additional frames (@pxref{Creating Frames}).
All frames created in the same Emacs session have access to the same
underlying buffers and other data.  For instance, if a buffer is being
shown in more than one frame, any changes made to it in one frame show
up immediately in the other frames too.

  Typing @kbd{C-x C-c} closes all the frames on the current display,
and ends the Emacs session if it has no frames open on any other
displays (@pxref{Exiting}).  To close just the selected frame, type
26
@kbd{C-x 5 0} (that is zero, not @kbd{o}).
Glenn Morris's avatar
Glenn Morris committed
27

28 29
  This chapter describes Emacs features specific to graphical displays
(particularly mouse commands), and features for managing multiple
30
frames.  On text terminals, many of these features are unavailable.
Paul Eggert's avatar
Paul Eggert committed
31
However, it is still possible to create multiple frames on text
32 33 34 35
terminals; such frames are displayed one at a time, filling the entire
terminal screen (@pxref{Non-Window Terminals}).  It is also possible
to use the mouse on some text terminals (@pxref{Text-Only Mouse}, for
doing so on GNU and Unix systems; and
Glenn Morris's avatar
Glenn Morris committed
36
@iftex
37
@pxref{MS-DOS Mouse,,,emacs-xtra,Specialized Emacs Features},
Glenn Morris's avatar
Glenn Morris committed
38 39
@end iftex
@ifnottex
40
@pxref{MS-DOS Mouse},
Glenn Morris's avatar
Glenn Morris committed
41
@end ifnottex
Eli Zaretskii's avatar
Eli Zaretskii committed
42
for doing so on MS-DOS).  Menus are supported on all text terminals.
Glenn Morris's avatar
Glenn Morris committed
43 44

@menu
45 46
* Mouse Commands::      Moving, cutting, and pasting, with the mouse.
* Word and Line Mouse:: Mouse commands for selecting whole words or lines.
Glenn Morris's avatar
Glenn Morris committed
47 48 49 50 51
* Mouse References::    Using the mouse to select an item from a list.
* Menu Mouse Clicks::   Mouse clicks that bring up menus.
* Mode Line Mouse::     Mouse clicks on the mode line.
* Creating Frames::     Creating additional Emacs frames with various contents.
* Frame Commands::      Iconifying, deleting, and switching frames.
Chong Yidong's avatar
Chong Yidong committed
52
* Fonts::               Changing the frame font.
Glenn Morris's avatar
Glenn Morris committed
53
* Speedbar::            How to make and use a speedbar frame.
Glenn Morris's avatar
Glenn Morris committed
54
* Multiple Displays::   How one Emacs instance can talk to several displays.
Glenn Morris's avatar
Glenn Morris committed
55
* Frame Parameters::    Changing the colors and other modes of frames.
56
* Scroll Bars::         How to enable and disable scroll bars; how to use them.
57
* Window Dividers::     Window separators that can be dragged with the mouse.
Glenn Morris's avatar
Glenn Morris committed
58
* Drag and Drop::       Using drag and drop to open files and insert text.
59
* Menu Bars::           Enabling and disabling the menu bar.
Glenn Morris's avatar
Glenn Morris committed
60 61 62
* Tool Bars::           Enabling and disabling the tool bar.
* Dialog Boxes::        Controlling use of dialog boxes.
* Tooltips::            Displaying information at the current mouse position.
63
* Mouse Avoidance::     Preventing the mouse pointer from obscuring text.
Glenn Morris's avatar
Glenn Morris committed
64
* Non-Window Terminals::  Multiple frames on terminals that show only one.
65
* Text-Only Mouse::     Using the mouse in text terminals.
Glenn Morris's avatar
Glenn Morris committed
66 67 68
@end menu

@node Mouse Commands
69
@section Mouse Commands for Editing
Glenn Morris's avatar
Glenn Morris committed
70
@cindex mouse buttons (what they do)
71
@cindex mouse, selecting text using
Glenn Morris's avatar
Glenn Morris committed
72

73 74 75
@kindex mouse-1
@kindex mouse-2
@kindex mouse-3
76
@table @kbd
77
@item mouse-1
Glenn Morris's avatar
Glenn Morris committed
78
Move point to where you click (@code{mouse-set-point}).
79

80
@item Drag-mouse-1
81 82
Activate the region around the text selected by dragging, and put the
text in the primary selection (@code{mouse-set-region}).
83

84
@item mouse-2
85 86
Move point to where you click, and insert the contents of the primary
selection there (@code{mouse-yank-primary}).
87

88
@item mouse-3
89 90 91 92 93 94 95 96
If the region is active, move the nearer end of the region to the
click position; otherwise, set mark at the current value of point and
point at the click position.  Save the resulting region in the kill
ring; on a second click, kill it (@code{mouse-save-then-kill}).
@end table

@findex mouse-set-point
  The most basic mouse command is @code{mouse-set-point}, which is
97
invoked by clicking with the left mouse button, @kbd{mouse-1}, in the
98
text area of a window.  This moves point to the position where you
99 100
clicked.  If that window was not the selected window, it becomes the
selected window.
Glenn Morris's avatar
Glenn Morris committed
101 102

@vindex x-mouse-click-focus-ignore-position
103 104 105 106 107 108 109
  Normally, if the frame you clicked in was not the selected frame, it
is made the selected frame, in addition to selecting the window and
setting the cursor.  On the X Window System, you can change this by
setting the variable @code{x-mouse-click-focus-ignore-position} to
@code{t}.  In that case, the initial click on an unselected frame just
selects the frame, without doing anything else; clicking again selects
the window and sets the cursor position.
Glenn Morris's avatar
Glenn Morris committed
110

111
@cindex mouse, dragging
112
@findex mouse-set-region
113
  Holding down @kbd{mouse-1} and dragging the mouse over a stretch
114
of text activates the region around that text
115 116 117 118 119 120 121 122 123
(@code{mouse-set-region}), placing the mark where you started holding
down the mouse button, and point where you release it (@pxref{Mark}).
In addition, the text in the region becomes the primary selection
(@pxref{Primary Selection}).

@vindex mouse-drag-copy-region
  If you change the variable @code{mouse-drag-copy-region} to a
non-@code{nil} value, dragging the mouse over a stretch of text also
adds the text to the kill ring.  The default is @code{nil}.
Glenn Morris's avatar
Glenn Morris committed
124 125

@vindex mouse-scroll-min-lines
126
  If you move the mouse off the top or bottom of the window while
Glenn Morris's avatar
Glenn Morris committed
127 128 129 130 131 132
dragging, the window scrolls at a steady rate until you move the mouse
back into the window.  This way, you can select regions that don't fit
entirely on the screen.  The number of lines scrolled per step depends
on how far away from the window edge the mouse has gone; the variable
@code{mouse-scroll-min-lines} specifies a minimum step size.

133
@findex mouse-yank-primary
134
@findex mouse-yank-at-click
135
  Clicking with the middle mouse button, @kbd{mouse-2}, moves point to
136 137
the position where you clicked and inserts the contents of the primary
selection (@code{mouse-yank-primary}).  @xref{Primary Selection}.
138
This behavior is consistent with other X applications.  Alternatively,
139
you can rebind @kbd{mouse-2} to @code{mouse-yank-at-click}, which
140
performs a yank at the position you click.
141 142 143

@vindex mouse-yank-at-point
  If you change the variable @code{mouse-yank-at-point} to a
144
non-@code{nil} value, @kbd{mouse-2} does not move point; it inserts
145 146 147
the text at point, regardless of where you clicked or even which of
the frame's windows you clicked on.  This variable affects both
@code{mouse-yank-primary} and @code{mouse-yank-at-click}.
148 149

@findex mouse-save-then-kill
150
  Clicking with the right mouse button, @kbd{mouse-3}, runs the
151 152 153 154 155
command @code{mouse-save-then-kill}.  This performs several actions
depending on where you click and the status of the region:

@itemize @bullet
@item
156
If no region is active, clicking @kbd{mouse-3} activates the region,
157 158 159
placing the mark where point was and point at the clicked position.

@item
160
If a region is active, clicking @kbd{mouse-3} adjusts the nearer end
161 162 163 164 165 166
of the region by moving it to the clicked position.  The adjusted
region's text is copied to the kill ring; if the text in the original
region was already on the kill ring, it replaces it there.

@item
If you originally specified the region using a double or triple
167
@kbd{mouse-1}, so that the region is defined to consist of entire
168
words or lines (@pxref{Word and Line Mouse}), then adjusting the
169
region with @kbd{mouse-3} also proceeds by entire words or lines.
170 171

@item
172
If you use @kbd{mouse-3} a second time consecutively, at the same
173
place, that kills the region already selected.  Thus, the simplest way
174 175 176 177
to kill text with the mouse is to click @kbd{mouse-1} at one end, then
click @kbd{mouse-3} twice at the other end.  To copy the text into the
kill ring without deleting it from the buffer, press @kbd{mouse-3}
just once---or just drag across the text with @kbd{mouse-1}.  Then you
178 179 180
can copy it elsewhere by yanking it.
@end itemize

181 182 183 184 185 186 187
  The @code{mouse-save-then-kill} command also obeys the variable
@code{mouse-drag-copy-region} (described above).  If the value is
non-@code{nil}, then whenever the command sets or adjusts the active
region, the text in the region is also added to the kill ring.  If the
latest kill ring entry had been added the same way, that entry is
replaced rather than making a new entry.

188 189 190
  Whenever you set the region using any of the mouse commands
described above, the mark will be deactivated by any subsequent
unshifted cursor motion command, in addition to the usual ways of
191
deactivating the mark.  @xref{Shift Selection}.
Glenn Morris's avatar
Glenn Morris committed
192

193 194 195 196 197 198 199
@cindex mouse wheel
@findex mouse-wheel-mode
@cindex Mouse Wheel minor mode
@cindex mode, Mouse Wheel
@vindex mouse-wheel-follow-mouse
@vindex mouse-wheel-scroll-amount
@vindex mouse-wheel-progressive-speed
200
  Some mice have a ``wheel'' which can be used for scrolling.  Emacs
201 202 203 204 205 206 207 208
supports scrolling windows with the mouse wheel, by default, on most
graphical displays.  To toggle this feature, use @kbd{M-x
mouse-wheel-mode}.  The variables @code{mouse-wheel-follow-mouse} and
@code{mouse-wheel-scroll-amount} determine where and by how much
buffers are scrolled.  The variable
@code{mouse-wheel-progressive-speed} determines whether the scroll
speed is linked to how fast you move the wheel.

Glenn Morris's avatar
Glenn Morris committed
209
@node Word and Line Mouse
210
@section Mouse Commands for Words and Lines
Glenn Morris's avatar
Glenn Morris committed
211

212
  These variants of @kbd{mouse-1} select entire words or lines at a
213 214
time.  Emacs activates the region around the selected text, which is
also copied to the kill ring.
Glenn Morris's avatar
Glenn Morris committed
215

216
@table @kbd
217
@item Double-mouse-1
218
Select the text around the word which you click on.
Glenn Morris's avatar
Glenn Morris committed
219

Paul Eggert's avatar
Paul Eggert committed
220
Double-clicking on a character with symbol syntax (such as
221 222 223 224
underscore, in C mode) selects the symbol surrounding that character.
Double-clicking on a character with open- or close-parenthesis syntax
selects the parenthetical grouping which that character starts or
ends.  Double-clicking on a character with string-delimiter syntax
225
(such as a single-quote or double-quote in C) selects the string
226 227
constant (Emacs uses heuristics to figure out whether that character
is the beginning or the end of it).
Glenn Morris's avatar
Glenn Morris committed
228

229
@item Double-Drag-mouse-1
230
Select the text you drag across, in the form of whole words.
Glenn Morris's avatar
Glenn Morris committed
231

232
@item Triple-mouse-1
233
Select the line you click on.
Glenn Morris's avatar
Glenn Morris committed
234

235
@item Triple-Drag-mouse-1
236
Select the text you drag across, in the form of whole lines.
Glenn Morris's avatar
Glenn Morris committed
237 238 239 240
@end table

@node Mouse References
@section Following References with the Mouse
241 242
@kindex mouse-1 @r{(on buttons)}
@kindex mouse-2 @r{(on buttons)}
243 244 245 246
@cindex hyperlinks
@cindex links
@cindex text buttons
@cindex buttons
Glenn Morris's avatar
Glenn Morris committed
247

248
@vindex mouse-highlight
249
  Some Emacs buffers include @dfn{buttons}, or @dfn{hyperlinks}:
250 251
pieces of text that perform some action (e.g., following a reference)
when activated (e.g., by clicking on them).  Usually, a button's text
252 253 254 255 256
is visually highlighted: it is underlined, or a box is drawn around
it.  If you move the mouse over a button, the shape of the mouse
cursor changes and the button lights up.  If you change the variable
@code{mouse-highlight} to @code{nil}, Emacs disables this
highlighting.
257 258

  You can activate a button by moving point to it and typing
259
@key{RET}, or by clicking either @kbd{mouse-1} or @kbd{mouse-2} on the
260 261
button.  For example, in a Dired buffer, each file name is a button;
activating it causes Emacs to visit that file (@pxref{Dired}).  In a
262
@file{*Compilation*} buffer, each error message is a button, and
263 264 265
activating it visits the source code for that error
(@pxref{Compilation}).

266
  Although clicking @kbd{mouse-1} on a button usually activates the
267 268 269 270 271 272 273
button, if you hold the mouse button down for a period of time before
releasing it (specifically, for more than 450 milliseconds), then
Emacs moves point where you clicked, without activating the button.
In this way, you can use the mouse to move point over a button without
activating it.  Dragging the mouse over or onto a button has its usual
behavior of setting the region, and does not activate the button.

274
  You can change how @kbd{mouse-1} applies to buttons by customizing
275 276 277 278
the variable @code{mouse-1-click-follows-link}.  If the value is a
positive integer, that determines how long you need to hold the mouse
button down for, in milliseconds, to cancel button activation; the
default is 450, as described in the previous paragraph.  If the value
279
is @code{nil}, @kbd{mouse-1} just sets point where you clicked, and
280 281
does not activate buttons.  If the value is @code{double}, double
clicks activate buttons but single clicks just set point.
Glenn Morris's avatar
Glenn Morris committed
282 283

@vindex mouse-1-click-in-non-selected-windows
284
  Normally, @kbd{mouse-1} on a button activates the button even if it
285 286
is in a non-selected window.  If you change the variable
@code{mouse-1-click-in-non-selected-windows} to @code{nil},
287
@kbd{mouse-1} on a button in an unselected window moves point to the
288 289
clicked position and selects that window, without activating the
button.
Glenn Morris's avatar
Glenn Morris committed
290 291 292 293 294 295 296

@node Menu Mouse Clicks
@section Mouse Clicks for Menus

  Several mouse clicks with the @key{CTRL} and @key{SHIFT} modifiers
bring up menus.

297
@table @kbd
298 299
@item C-mouse-1
@kindex C-mouse-1
Glenn Morris's avatar
Glenn Morris committed
300 301 302 303 304
This menu is for selecting a buffer.

The MSB (``mouse select buffer'') global minor mode makes this
menu smarter and more customizable.  @xref{Buffer Menus}.

305 306
@item C-mouse-2
@kindex C-mouse-2
307 308 309
This menu contains entries for examining faces and other text
properties, and well as for setting them (the latter is mainly useful
when editing enriched text; @pxref{Enriched Text}).
Glenn Morris's avatar
Glenn Morris committed
310

311 312
@item C-mouse-3
@kindex C-mouse-3
Glenn Morris's avatar
Glenn Morris committed
313 314 315
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
316 317 318 319
button.  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.
Glenn Morris's avatar
Glenn Morris committed
320

321
@item S-mouse-1
322
This menu is for changing the default face within the window's buffer.
323
@xref{Text Scale}.
Glenn Morris's avatar
Glenn Morris committed
324 325
@end table

326 327
  Some graphical applications use @kbd{mouse-3} for a mode-specific
menu.  If you prefer @kbd{mouse-3} in Emacs to bring up such a menu
328
instead of running the @code{mouse-save-then-kill} command, rebind
329
@kbd{mouse-3} by adding the following line to your init file
330 331
(@pxref{Init Rebinding}):

Xue Fuqiao's avatar
Xue Fuqiao committed
332
@c FIXME: `mouse-popup-menubar-stuff' is obsolete since 23.1.
333 334 335 336
@smallexample
(global-set-key [mouse-3] 'mouse-popup-menubar-stuff)
@end smallexample

Glenn Morris's avatar
Glenn Morris committed
337 338 339 340 341 342 343 344
@node Mode Line Mouse
@section Mode Line Mouse Commands
@cindex mode line, mouse
@cindex mouse on mode line

  You can use mouse clicks on window mode lines to select and manipulate
windows.

345 346
  Some areas of the mode line, such as the buffer name, and major and minor
mode names, have their own special mouse bindings.  These areas are
Glenn Morris's avatar
Glenn Morris committed
347 348 349 350 351
highlighted when you hold the mouse over them, and information about
the special bindings will be displayed (@pxref{Tooltips}).  This
section's commands do not apply in those areas.

@table @kbd
352 353 354 355
@item mouse-1
@kindex mouse-1 @r{(mode line)}
@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
Glenn Morris's avatar
Glenn Morris committed
356 357 358 359
changing the height of the windows above and below.  Changing heights
with the mouse in this way never deletes windows, it just refuses to
make any window smaller than the minimum height.

360 361 362
@item mouse-2
@kindex mouse-2 @r{(mode line)}
@kbd{mouse-2} on a mode line expands that window to fill its frame.
Glenn Morris's avatar
Glenn Morris committed
363

364 365 366
@item mouse-3
@kindex mouse-3 @r{(mode line)}
@kbd{mouse-3} on a mode line deletes the window it belongs to.  If the
367
frame has only one window, it does nothing.
Glenn Morris's avatar
Glenn Morris committed
368

369
@item C-mouse-2
Glenn Morris's avatar
Glenn Morris committed
370
@kindex C-mouse-2 @r{(mode line)}
371
@kbd{C-mouse-2} on a mode line splits that window, producing two
372 373
side-by-side windows with the boundary running through the click
position (@pxref{Split Window}).
Glenn Morris's avatar
Glenn Morris committed
374 375
@end table

376 377
@kindex mouse-1 @r{(scroll bar)}
  Furthermore, by clicking and dragging @kbd{mouse-1} on the divider
378 379
between two side-by-side mode lines, you can move the vertical
boundary to the left or right.
Glenn Morris's avatar
Glenn Morris committed
380

381 382 383
  Note that resizing windows is affected by the value of
@code{window-resize-pixelwise}, see @ref{Split Window}.

Glenn Morris's avatar
Glenn Morris committed
384 385 386 387 388
@node Creating Frames
@section Creating Frames
@cindex creating frames

@kindex C-x 5
389 390 391
  The prefix key @kbd{C-x 5} is analogous to @kbd{C-x 4}.  Whereas
each @kbd{C-x 4} command pops up a buffer in a different window in the
selected frame (@pxref{Pop Up Window}), the @kbd{C-x 5} commands use a
392
different frame.  If an existing visible or iconified (a.k.a.@: ``minimized'')
393
frame already displays the requested buffer, that frame is raised and
394
deiconified (``un-minimized''); otherwise, a new frame is created on
395
the current display terminal.
Glenn Morris's avatar
Glenn Morris committed
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415

  The various @kbd{C-x 5} commands differ in how they find or create the
buffer to select:

@table @kbd
@item C-x 5 2
@kindex C-x 5 2
@findex make-frame-command
Create a new frame (@code{make-frame-command}).
@item C-x 5 b @var{bufname} @key{RET}
Select buffer @var{bufname} in another frame.  This runs
@code{switch-to-buffer-other-frame}.
@item C-x 5 f @var{filename} @key{RET}
Visit file @var{filename} and select its buffer in another frame.  This
runs @code{find-file-other-frame}.  @xref{Visiting}.
@item C-x 5 d @var{directory} @key{RET}
Select a Dired buffer for directory @var{directory} in another frame.
This runs @code{dired-other-frame}.  @xref{Dired}.
@item C-x 5 m
Start composing a mail message in another frame.  This runs
416 417
@code{compose-mail-other-frame}.  It is the other-frame variant of
@kbd{C-x m}.  @xref{Sending Mail}.
Glenn Morris's avatar
Glenn Morris committed
418
@item C-x 5 .
419 420 421
Find the definition of an identifier in another frame.  This runs
@code{xref-find-definitions-other-frame}, the multiple-frame variant
of @kbd{M-.}.  @xref{Xref}.
Glenn Morris's avatar
Glenn Morris committed
422 423 424 425 426 427 428 429
@item C-x 5 r @var{filename} @key{RET}
@kindex C-x 5 r
@findex find-file-read-only-other-frame
Visit file @var{filename} read-only, and select its buffer in another
frame.  This runs @code{find-file-read-only-other-frame}.
@xref{Visiting}.
@end table

430 431
  You can control the appearance and behavior of the newly-created
frames by specifying @dfn{frame parameters}.  @xref{Frame Parameters}.
Glenn Morris's avatar
Glenn Morris committed
432 433 434 435

@node Frame Commands
@section Frame Commands

436
  The following commands are used to delete and operate on frames:
Glenn Morris's avatar
Glenn Morris committed
437 438

@table @kbd
439 440 441 442 443 444
@item C-x 5 0
@kindex C-x 5 0
@findex delete-frame
Delete the selected frame (@code{delete-frame}).  This signals an
error if there is only one frame.

Glenn Morris's avatar
Glenn Morris committed
445 446
@item C-z
@kindex C-z @r{(X windows)}
447
@findex suspend-frame
Paul Eggert's avatar
Paul Eggert committed
448
Minimize (or iconify) the selected Emacs frame
449
(@code{suspend-frame}).  @xref{Exiting}.
Glenn Morris's avatar
Glenn Morris committed
450 451 452 453

@item C-x 5 o
@kindex C-x 5 o
@findex other-frame
454 455
Select another frame, and raise it.  If you repeat this command, it
cycles through all the frames on your terminal.
Glenn Morris's avatar
Glenn Morris committed
456 457 458 459

@item C-x 5 1
@kindex C-x 5 1
@findex delete-other-frames
460
Delete all frames on the current terminal, except the selected one.
461 462 463 464

@item M-<F10>
@kindex M-<F10>
@findex toggle-frame-maximized
465 466
Toggle the maximization state of the current frame.  When a frame is
maximized, it fills the screen.
467 468 469 470

@item <F11>
@kindex <F11>
@findex toggle-frame-fullscreen
471 472
Toggle full-screen mode for the current frame.  (The difference
between full-screen and maximized is normally that the former
473 474
hides window manager decorations, giving slightly more screen space to
Emacs itself.)
Glenn Morris's avatar
Glenn Morris committed
475 476
@end table

477
@vindex frame-resize-pixelwise
478 479
  Note that with some window managers you may have to customize the
variable @code{frame-resize-pixelwise} to a non-@code{nil} value in
480
order to make a frame truly maximized or full-screen.  This
481 482 483
variable, when set to a non-@code{nil} value, in general allows
resizing frames at pixel resolution, rather than in integral multiples
of lines and columns.
484

485 486 487 488
  The @kbd{C-x 5 0} (@code{delete-frame}) command deletes the selected
frame.  However, it will refuse to delete the last frame in an Emacs
session, to prevent you from losing the ability to interact with the
Emacs session.  Note that when Emacs is run as a daemon (@pxref{Emacs
Paul Eggert's avatar
Paul Eggert committed
489
Server}), there is always a virtual frame that remains after all
490 491 492 493 494 495
the ordinary, interactive frames are deleted.  In this case, @kbd{C-x
5 0} can delete the last interactive frame; you can use
@command{emacsclient} to reconnect to the Emacs session.

  The @kbd{C-x 5 1} (@code{delete-other-frames}) command deletes all
other frames on the current terminal (this terminal refers to either a
496 497 498
graphical display, or a text terminal; @pxref{Non-Window Terminals}).
If the Emacs session has frames open on other graphical displays or
text terminals, those are not deleted.
499

Glenn Morris's avatar
Glenn Morris committed
500
@vindex focus-follows-mouse
501 502 503 504 505 506 507
  The @kbd{C-x 5 o} (@code{other-frame}) command selects the next
frame on the current terminal.  If you are using Emacs on the X Window
System with a window manager that selects (or @dfn{gives focus to})
whatever frame the mouse cursor is over, you have to change the
variable @code{focus-follows-mouse} to @code{t} in order for this
command to work properly.  Then invoking @kbd{C-x 5 o} will also warp
the mouse cursor to the chosen frame.
Glenn Morris's avatar
Glenn Morris committed
508

Chong Yidong's avatar
Chong Yidong committed
509 510 511 512
@node Fonts
@section Fonts
@cindex fonts

513
  By default, Emacs displays text on graphical displays using a
514
10-point monospace font.  There are several different ways to specify
515
a different font:
Chong Yidong's avatar
Chong Yidong committed
516 517 518

@itemize
@item
519 520 521
Click on @samp{Set Default Font} in the @samp{Options} menu.  This
makes the selected font the default on all existing graphical frames.
To save this for future sessions, click on @samp{Save Options} in the
Chong Yidong's avatar
Chong Yidong committed
522 523 524
@samp{Options} menu.

@item
525 526 527
Add a line to your init file, modifying the variable
@code{default-frame-alist} to specify the @code{font} parameter
(@pxref{Frame Parameters}), like this:
Chong Yidong's avatar
Chong Yidong committed
528

529
@example
530 531
(add-to-list 'default-frame-alist
             '(font . "DejaVu Sans Mono-10"))
532
@end example
Chong Yidong's avatar
Chong Yidong committed
533

534 535 536 537
@noindent
This makes the font the default on all graphical frames created after
restarting Emacs with that init file.

Chong Yidong's avatar
Chong Yidong committed
538 539 540 541 542 543
@cindex X defaults file
@cindex X resources file
@item
Add an @samp{emacs.font} X resource setting to your X resource file,
like this:

544
@example
Chong Yidong's avatar
Chong Yidong committed
545
emacs.font: DejaVu Sans Mono-12
546
@end example
Chong Yidong's avatar
Chong Yidong committed
547 548 549

@noindent
You must restart X, or use the @command{xrdb} command, for the X
550 551
resources file to take effect.  @xref{Resources}.  Do not quote
font names in X resource files.
Chong Yidong's avatar
Chong Yidong committed
552 553 554 555 556

@item
If you are running Emacs on the GNOME desktop, you can tell Emacs to
use the default system font by setting the variable
@code{font-use-system-font} to @code{t} (the default is @code{nil}).
557
For this to work, Emacs must have been compiled with Gconf support.
Chong Yidong's avatar
Chong Yidong committed
558 559 560 561 562 563

@item
Use the command line option @samp{-fn} (or @samp{--font}).  @xref{Font
X}.
@end itemize

564 565 566
  To check what font you're currently using, the @kbd{C-u C-x =}
command can be helpful.  It describes the character at point, and
names the font that it's rendered in.
567

Chong Yidong's avatar
Chong Yidong committed
568
@cindex fontconfig
Paul Eggert's avatar
Paul Eggert committed
569
  On X, there are four different ways to express a font name.  The
Chong Yidong's avatar
Chong Yidong committed
570 571 572
first is to use a @dfn{Fontconfig pattern}.  Fontconfig patterns have
the following form:

573
@example
Chong Yidong's avatar
Chong Yidong committed
574
@var{fontname}[-@var{fontsize}][:@var{name1}=@var{values1}][:@var{name2}=@var{values2}]...
575
@end example
Chong Yidong's avatar
Chong Yidong committed
576 577

@noindent
578
Within this format, any of the elements in brackets may be omitted.
Chong Yidong's avatar
Chong Yidong committed
579
Here, @var{fontname} is the @dfn{family name} of the font, such as
580
@samp{Monospace} or @samp{DejaVu Sans Mono}; @var{fontsize} is the
Chong Yidong's avatar
Chong Yidong committed
581 582 583 584 585 586 587 588 589 590 591 592
@dfn{point size} of the font (one @dfn{printer's point} is about 1/72
of an inch); and the @samp{@var{name}=@var{values}} entries specify
settings such as the slant and weight of the font.  Each @var{values}
may be a single value, or a list of values separated by commas.  In
addition, some property values are valid with only one kind of
property name, in which case the @samp{@var{name}=} part may be
omitted.

Here is a list of common font properties:

@table @samp
@item slant
593
One of @samp{italic}, @samp{oblique}, or @samp{roman}.
Chong Yidong's avatar
Chong Yidong committed
594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614

@item weight
One of @samp{light}, @samp{medium}, @samp{demibold}, @samp{bold} or
@samp{black}.

@item style
Some fonts define special styles which are a combination of slant and
weight.  For instance, @samp{Dejavu Sans} defines the @samp{book}
style, which overrides the slant and weight properties.

@item width
One of @samp{condensed}, @samp{normal}, or @samp{expanded}.

@item spacing
One of @samp{monospace}, @samp{proportional}, @samp{dual-width}, or
@samp{charcell}.
@end table

@noindent
Here are some examples of Fontconfig patterns:

615
@example
Chong Yidong's avatar
Chong Yidong committed
616 617 618 619 620
Monospace
Monospace-12
Monospace-12:bold
DejaVu Sans Mono:bold:italic
Monospace-12:weight=bold:slant=italic
621
@end example
Chong Yidong's avatar
Chong Yidong committed
622

623 624 625
For a more detailed description of Fontconfig patterns, see the
Fontconfig manual, which is distributed with Fontconfig and available
online at @url{http://fontconfig.org/fontconfig-user.html}.
Chong Yidong's avatar
Chong Yidong committed
626

627 628 629
@cindex GTK font pattern
  The second way to specify a font is to use a @dfn{GTK font pattern}.
These have the syntax
Chong Yidong's avatar
Chong Yidong committed
630

631
@example
Chong Yidong's avatar
Chong Yidong committed
632
@var{fontname} [@var{properties}] [@var{fontsize}]
633
@end example
Chong Yidong's avatar
Chong Yidong committed
634 635 636 637

@noindent
where @var{fontname} is the family name, @var{properties} is a list of
property values separated by spaces, and @var{fontsize} is the point
638 639
size.  The properties that you may specify for GTK font patterns are
as follows:
Chong Yidong's avatar
Chong Yidong committed
640

641 642 643 644 645 646 647 648 649 650 651 652
@itemize
@item
Slant properties: @samp{Italic} or @samp{Oblique}.  If omitted, the
default (roman) slant is implied.
@item
Weight properties: @samp{Bold}, @samp{Book}, @samp{Light},
@samp{Medium}, @samp{Semi-bold}, or @samp{Ultra-light}.  If omitted,
@samp{Medium} weight is implied.
@item
Width properties: @samp{Semi-Condensed} or @samp{Condensed}.  If
omitted, a default width is used.
@end itemize
Chong Yidong's avatar
Chong Yidong committed
653 654

@noindent
655
Here are some examples of GTK font patterns:
Chong Yidong's avatar
Chong Yidong committed
656

657
@example
Chong Yidong's avatar
Chong Yidong committed
658 659
Monospace 12
Monospace Bold Italic 12
660
@end example
Chong Yidong's avatar
Chong Yidong committed
661 662 663 664 665

@cindex XLFD
@cindex X Logical Font Description
  The third way to specify a font is to use an @dfn{XLFD} (@dfn{X
Logical Font Description}).  This is the traditional method for
666
specifying fonts under X@.  Each XLFD consists of fourteen words or
Chong Yidong's avatar
Chong Yidong committed
667 668
numbers, separated by dashes, like this:

669
@example
Chong Yidong's avatar
Chong Yidong committed
670
-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1
671
@end example
Chong Yidong's avatar
Chong Yidong committed
672 673 674 675 676 677 678

@noindent
A wildcard character (@samp{*}) in an XLFD matches any sequence of
characters (including none), and @samp{?} matches any single
character.  However, matching is implementation-dependent, and can be
inaccurate when wildcards match dashes in a long name.  For reliable
results, supply all 14 dashes and use wildcards only within a field.
679
Case is insignificant in an XLFD@.  The syntax for an XLFD is as
Chong Yidong's avatar
Chong Yidong committed
680 681
follows:

682
@example
Chong Yidong's avatar
Chong Yidong committed
683 684
-@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{registry}-@var{encoding}
685
@end example
Chong Yidong's avatar
Chong Yidong committed
686 687 688 689 690 691 692 693

@noindent
The entries have the following meanings:

@table @var
@item maker
The name of the font manufacturer.
@item family
694
The name of the font family (e.g., @samp{courier}).
Chong Yidong's avatar
Chong Yidong committed
695 696 697 698 699 700 701 702
@item weight
The font weight---normally either @samp{bold}, @samp{medium} or
@samp{light}.  Some font names support other values.
@item slant
The font slant---normally @samp{r} (roman), @samp{i} (italic),
@samp{o} (oblique), @samp{ri} (reverse italic), or @samp{ot} (other).
Some font names support other values.
@item widthtype
703
The font width---normally @samp{normal}, @samp{condensed},
704 705
@samp{semicondensed}, or @samp{extended}.  Some font names support
other values.
Chong Yidong's avatar
Chong Yidong committed
706
@item style
707
An optional additional style name.  Usually it is empty---most XLFDs
708 709 710 711
have two hyphens in a row at this point.  The style name can also
specify a two-letter ISO-639 language name, like @samp{ja} or
@samp{ko}; some fonts that support CJK scripts have that spelled out
in the style name part.
Chong Yidong's avatar
Chong Yidong committed
712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741
@item pixels
The font height, in pixels.
@item height
The font height on the screen, measured in tenths of a printer's
point.  This is the point size of the font, times ten.  For a given
vertical resolution, @var{height} and @var{pixels} are proportional;
therefore, it is common to specify just one of them and use @samp{*}
for the other.
@item horiz
The horizontal resolution, in pixels per inch, of the screen for which
the font is intended.
@item vert
The vertical resolution, in pixels per inch, of the screen for which
the font is intended.  Normally the resolution of the fonts on your
system is the right value for your screen; therefore, you normally
specify @samp{*} for this and @var{horiz}.
@item spacing
This is @samp{m} (monospace), @samp{p} (proportional) or @samp{c}
(character cell).
@item width
The average character width, in pixels, multiplied by ten.
@item registry
@itemx encoding
The X font character set that the font depicts.  (X font character
sets are not the same as Emacs character sets, but they are similar.)
You can use the @command{xfontsel} program to check which choices you
have.  Normally you should use @samp{iso8859} for @var{registry} and
@samp{1} for @var{encoding}.
@end table

Paul Eggert's avatar
Paul Eggert committed
742 743
  The fourth and final method of specifying a font is to use a font
nickname.  Certain fonts have shorter nicknames, which you can use
Chong Yidong's avatar
Chong Yidong committed
744 745 746
instead of a normal font specification.  For instance, @samp{6x13} is
equivalent to

747
@example
Chong Yidong's avatar
Chong Yidong committed
748
-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1
749
@end example
Chong Yidong's avatar
Chong Yidong committed
750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766

@cindex client-side fonts
@cindex server-side fonts
  On X, Emacs recognizes two types of fonts: @dfn{client-side} fonts,
which are provided by the Xft and Fontconfig libraries, and
@dfn{server-side} fonts, which are provided by the X server itself.
Most client-side fonts support advanced font features such as
antialiasing and subpixel hinting, while server-side fonts do not.
Fontconfig and GTK patterns match only client-side fonts.

@cindex listing system fonts
  You will probably want to use a fixed-width default font---that is,
a font in which all characters have the same width.  For Xft and
Fontconfig fonts, you can use the @command{fc-list} command to list
the available fixed-width fonts, like this:

@example
Paul Eggert's avatar
Paul Eggert committed
767 768
fc-list :spacing=mono
fc-list :spacing=charcell
Chong Yidong's avatar
Chong Yidong committed
769 770 771 772 773 774 775
@end example

@noindent
For server-side X fonts, you can use the @command{xlsfonts} program to
list the available fixed-width fonts, like this:

@example
Paul Eggert's avatar
Paul Eggert committed
776
xlsfonts -fn '*x*' | grep -E '^[0-9]+x[0-9]+'
Chong Yidong's avatar
Chong Yidong committed
777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*'
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'
@end example

@noindent
Any font with @samp{m} or @samp{c} in the @var{spacing} field of the
XLFD is a fixed-width font.  To see what a particular font looks like,
use the @command{xfd} command.  For example:

@example
xfd -fn 6x13
@end example

@noindent
displays the entire font @samp{6x13}.

  While running Emacs, you can also set the font of a specific kind of
text (@pxref{Faces}), or a particular frame (@pxref{Frame
Parameters}).

Glenn Morris's avatar
Glenn Morris committed
797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830
@node Speedbar
@section Speedbar Frames
@cindex speedbar

@cindex attached frame (of speedbar)
  The @dfn{speedbar} is a special frame for conveniently navigating in
or operating on another frame.  The speedbar, when it exists, is
always associated with a specific frame, called its @dfn{attached
frame}; all speedbar operations act on that frame.

  Type @kbd{M-x speedbar} to create the speedbar and associate it with
the current frame.  To dismiss the speedbar, type @kbd{M-x speedbar}
again, or select the speedbar and type @kbd{q}.  (You can also delete
the speedbar frame like any other Emacs frame.)  If you wish to
associate the speedbar with a different frame, dismiss it and call
@kbd{M-x speedbar} from that frame.

  The speedbar can operate in various modes.  Its default mode is
@dfn{File Display} mode, which shows the files in the current
directory of the selected window of the attached frame, one file per
line.  Clicking on a file name visits that file in the selected window
of the attached frame, and clicking on a directory name shows that
directory in the speedbar (@pxref{Mouse References}).  Each line also
has a box, @samp{[+]} or @samp{<+>}, that you can click on to
@dfn{expand} the contents of that item.  Expanding a directory adds
the contents of that directory to the speedbar display, underneath the
directory's own line.  Expanding an ordinary file adds a list of the
tags in that file to the speedbar display; you can click on a tag name
to jump to that tag in the selected window of the attached frame.
When a file or directory is expanded, the @samp{[+]} changes to
@samp{[-]}; you can click on that box to @dfn{contract} the item,
hiding its contents.

  You navigate through the speedbar using the keyboard, too.  Typing
831 832
@key{RET} while point is on a line in the speedbar is equivalent to
clicking the item on the current line, and @key{SPC} expands or
Glenn Morris's avatar
Glenn Morris committed
833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876
contracts the item.  @kbd{U} displays the parent directory of the
current directory.  To copy, delete, or rename the file on the current
line, type @kbd{C}, @kbd{D}, and @kbd{R} respectively.  To create a
new directory, type @kbd{M}.

  Another general-purpose speedbar mode is @dfn{Buffer Display} mode;
in this mode, the speedbar displays a list of Emacs buffers.  To
switch to this mode, type @kbd{b} in the speedbar.  To return to File
Display mode, type @kbd{f}.  You can also change the display mode by
clicking @kbd{mouse-3} anywhere in the speedbar window (or
@kbd{mouse-1} on the mode-line) and selecting @samp{Displays} in the
pop-up menu.

  Some major modes, including Rmail mode, Info, and GUD, have
specialized ways of putting useful items into the speedbar for you to
select.  For example, in Rmail mode, the speedbar shows a list of Rmail
files, and lets you move the current message to another Rmail file by
clicking on its @samp{<M>} box.

  For more details on using and programming the speedbar, @xref{Top,
Speedbar,,speedbar, Speedbar Manual}.

@node Multiple Displays
@section Multiple Displays
@cindex multiple displays

  A single Emacs can talk to more than one X display.  Initially, Emacs
uses just one display---the one specified with the @env{DISPLAY}
environment variable or with the @samp{--display} option (@pxref{Initial
Options}).  To connect to another display, use the command
@code{make-frame-on-display}:

@findex make-frame-on-display
@table @kbd
@item M-x make-frame-on-display @key{RET} @var{display} @key{RET}
Create a new frame on display @var{display}.
@end table

  A single X server can handle more than one screen.  When you open
frames on two screens belonging to one server, Emacs knows they share a
single keyboard, and it treats all the commands arriving from these
screens as a single stream of input.

  When you open frames on different X servers, Emacs makes a separate
877 878 879
input stream for each server.  Each server also has its own selected
frame.  The commands you enter with a particular X server apply to
that server's selected frame.
Glenn Morris's avatar
Glenn Morris committed
880

881 882 883
@node Frame Parameters
@section Frame Parameters
@cindex default-frame-alist
Glenn Morris's avatar
Glenn Morris committed
884

885 886 887 888 889 890
  You can control the default appearance and behavior of all frames by
specifying a default list of @dfn{frame parameters} in the variable
@code{default-frame-alist}.  Its value should be a list of entries,
each specifying a parameter name and a value for that parameter.
These entries take effect whenever Emacs creates a new frame,
including the initial frame.
Glenn Morris's avatar
Glenn Morris committed
891

892 893 894 895 896
@cindex frame size, specifying default
  For example, you can add the following lines to your init file
(@pxref{Init File}) to set the default frame width to 90 character
columns, the default frame height to 40 character rows, and the
default font to @samp{Monospace-10}:
Glenn Morris's avatar
Glenn Morris committed
897 898

@example
899 900 901
(add-to-list 'default-frame-alist '(width  . 90))
(add-to-list 'default-frame-alist '(height . 40))
(add-to-list 'default-frame-alist '(font . "Monospace-10"))
Glenn Morris's avatar
Glenn Morris committed
902 903
@end example

904 905
  For a list of frame parameters and their effects, see @ref{Frame
Parameters,,, elisp, The Emacs Lisp Reference Manual}.
Glenn Morris's avatar
Glenn Morris committed
906

907 908 909 910
@cindex initial-frame-alist
  You can also specify a list of frame parameters which apply to just
the initial frame, by customizing the variable
@code{initial-frame-alist}.
Glenn Morris's avatar
Glenn Morris committed
911

912 913 914
  If Emacs is compiled to use an X toolkit, frame parameters that
specify colors and fonts don't affect menus and the menu bar, since
those are drawn by the toolkit and not directly by Emacs.
Glenn Morris's avatar
Glenn Morris committed
915

916 917 918 919 920 921 922 923
  Note that if you are using the desktop library to save and restore
your sessions, the frames to be restored are recorded in the desktop
file, together with their parameters.  When these frames are restored,
the recorded parameters take precedence over the frame parameters
specified by @code{default-frame-alist} and @code{initial-frame-alist}
in your init file.  @xref{Saving Emacs Sessions}, for how to avoid
that.

Glenn Morris's avatar
Glenn Morris committed
924 925 926 927
@node Scroll Bars
@section Scroll Bars
@cindex Scroll Bar mode
@cindex mode, Scroll Bar
928
@cindex Vertical Scroll Bar
Glenn Morris's avatar
Glenn Morris committed
929

930
  On graphical displays, there is a @dfn{vertical scroll bar} on the
931
side of each Emacs window.  Clicking @kbd{mouse-1} on the scroll bar's
932
up and down buttons scrolls the window by one line at a time.  Clicking
933
@kbd{mouse-1} above or below the scroll bar's inner box scrolls the
934 935 936 937 938
window by nearly the entire height of the window, like @kbd{M-v} and
@kbd{C-v} respectively (@pxref{Moving Point}).  Dragging the inner box
scrolls continuously.

  If Emacs is compiled on the X Window System without X toolkit
939
support, the scroll bar behaves differently.  Clicking @kbd{mouse-1}
940
anywhere on the scroll bar scrolls forward like @kbd{C-v}, while
941
@kbd{mouse-3} scrolls backward like @kbd{M-v}.  Clicking @kbd{mouse-2}
942
in the scroll bar lets you drag the inner box up and down.
Glenn Morris's avatar
Glenn Morris committed
943 944 945

@findex scroll-bar-mode
@findex toggle-scroll-bar
946 947 948 949
  To toggle the use of vertical scroll bars, type @kbd{M-x
scroll-bar-mode}.  This command applies to all frames, including frames
yet to be created.  To toggle vertical scroll bars for just the selected
frame, use the command @kbd{M-x toggle-scroll-bar}.
Glenn Morris's avatar
Glenn Morris committed
950

951
@vindex scroll-bar-mode
952 953 954 955 956 957 958 959
  To control the use of vertical scroll bars at startup, customize the
variable @code{scroll-bar-mode}.  Its value should be either
@code{right} (put scroll bars on the right side of windows), @code{left}
(put them on the left), or @code{nil} (disable vertical scroll bars).
By default, Emacs puts scroll bars on the right if it was compiled with
GTK+ support on the X Window System, and on MS-Windows or Mac OS; Emacs
puts scroll bars on the left if compiled on the X Window System without
GTK+ support (following the old convention for X applications).
960

Glenn Morris's avatar
Glenn Morris committed
961
@vindex scroll-bar-width
962
@cindex width of the vertical scroll bar
963 964 965 966
  You can also use the X resource @samp{verticalScrollBars} to enable
or disable the scroll bars (@pxref{Resources}).  To control the scroll
bar width, change the @code{scroll-bar-width} frame parameter
(@pxref{Frame Parameters,,, elisp, The Emacs Lisp Reference Manual}).
Glenn Morris's avatar
Glenn Morris committed
967

968 969 970 971
@vindex scroll-bar-adjust-thumb-portion
@cindex overscrolling
If you're using Emacs on X (with GTK+ or Motif), you can customize the
variable @code{scroll-bar-adjust-thumb-portion} to control
Paul Eggert's avatar
Paul Eggert committed
972
@dfn{overscrolling} of the scroll bar, i.e., dragging the thumb down even
973 974 975 976 977 978
when the end of the buffer is visible.  If its value is
non-@code{nil}, the scroll bar can be dragged downwards even if the
end of the buffer is shown; if @code{nil}, the thumb will be at the
bottom when the end of the buffer is shown.  You can not over-scroll
when the entire buffer is visible.

979 980 981 982
@cindex scroll-bar face
  The visual appearance of the scroll bars is controlled by the
@code{scroll-bar} face.

983 984 985 986
@cindex Horizontal Scroll Bar
@cindex Horizontal Scroll Bar mode
  On graphical displays with toolkit support, Emacs may also supply a
@dfn{horizontal scroll bar} on the bottom of each window.  Clicking
987 988
@kbd{mouse-1} on the that scroll bar's left and right buttons scrolls
the window horizontally by one column at a time.  Clicking @kbd{mouse-1}
989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014
on the left or right of the scroll bar's inner box scrolls the window by
four columns.  Dragging the inner box scrolls the window continuously.

  Note that such horizontal scrolling can make the window's position of
point disappear on the left or the right.  Typing a character to insert
text or moving point with a keyboard command will usually bring it back
into view.

@findex horizontal-scroll-bar-mode
  To toggle the use of horizontal scroll bars, type @kbd{M-x
horizontal-scroll-bar-mode}.  This command applies to all frames,
including frames yet to be created.  To toggle horizontal scroll bars
for just the selected frame, use the command @kbd{M-x
toggle-horizontal-scroll-bar}.

@vindex horizontal-scroll-bar-mode
  To control the use of horizontal scroll bars at startup, customize the
variable @code{horizontal-scroll-bar-mode}.

@vindex scroll-bar-height
@cindex height of the horizontal scroll bar
  You can also use the X resource @samp{horizontalScrollBars} to enable
or disable horizontal scroll bars (@pxref{Resources}).  To control the
scroll bar height, change the @code{scroll-bar-height} frame parameter
(@pxref{Frame Parameters,,, elisp, The Emacs Lisp Reference Manual}).

1015 1016 1017 1018 1019 1020 1021
@node Window Dividers
@section Window Dividers
@cindex Window Divider mode
@cindex mode, Window Divider

  On graphical displays, you can use @dfn{window dividers} in order to
separate windows visually.  Window dividers are bars that can be dragged
1022
with the mouse, thus allowing you to easily resize adjacent windows.
1023

1024 1025 1026 1027 1028 1029 1030
@findex window-divider-mode
  To toggle the display of window dividers, use the command @kbd{M-x
window-divider-mode}.

@vindex window-divider-default-places
  To customize where dividers should appear, use the option
@code{window-divider-default-places}.  Its value should be either
1031
@code{bottom-only} (to show dividers only on the bottom of windows),
1032 1033
@code{right-only} (to show dividers only on the right of windows), or
@code{t} (to show them on the bottom and on the right).
1034 1035 1036 1037 1038 1039 1040 1041 1042 1043

@vindex window-divider-default-bottom-width
@vindex window-divider-default-right-width
  To adjust the width of window dividers displayed by this mode
customize the options @code{window-divider-default-bottom-width} and
@code{window-divider-default-right-width}.

   For more details about window dividers see @ref{Window Dividers,,
Window Dividers, elisp, The Emacs Lisp Reference Manual}.

Glenn Morris's avatar
Glenn Morris committed
1044 1045 1046 1047
@node Drag and Drop
@section Drag and Drop
@cindex drag and drop

1048 1049 1050 1051 1052 1053 1054
  In most graphical desktop environments, Emacs has basic support for
@dfn{drag and drop} operations.  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.
Glenn Morris's avatar
Glenn Morris committed
1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070

@vindex 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{dnd-open-file-other-window}.

  The XDND and Motif drag and drop protocols, and the old KDE 1.x
protocol, are currently supported.

@node Menu Bars
@section Menu Bars
@cindex Menu Bar mode
@cindex mode, Menu Bar
@findex menu-bar-mode
@vindex menu-bar-mode

1071 1072 1073 1074 1075 1076
  You can toggle the use of menu bars with @kbd{M-x menu-bar-mode}.
With no argument, this command toggles Menu Bar mode, a global minor
mode.  With an argument, the command turns Menu Bar mode on if the
argument is positive, off if the argument is not positive.  To control
the use of menu bars at startup, customize the variable
@code{menu-bar-mode}.
Glenn Morris's avatar
Glenn Morris committed
1077

1078
@kindex C-mouse-3 @r{(when menu bar is disabled)}
1079
  Expert users often turn off the menu bar, especially on text
Glenn Morris's avatar
Glenn Morris committed
1080 1081
terminals, where this makes one additional line available for text.
If the menu bar is off, you can still pop up a menu of its contents