(dotimes, dolist): Undef prior to autoloading
[bpt/emacs.git] / man / frames.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
6ca0edfe
DL
2@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 99, 2000
3@c Free Software Foundation, Inc.
6bf7aab6
DL
4@c See file emacs.texi for copying conditions.
5@node Frames, International, Windows, Top
6@chapter Frames and X Windows
7@cindex frames
8
9 When using the X Window System, you can create multiple windows at the
10X level in a single Emacs session. Each X window that belongs to Emacs
11displays a @dfn{frame} which can contain one or several Emacs windows.
12A frame initially contains a single general-purpose Emacs window which
13you can subdivide vertically or horizontally into smaller windows. A
14frame normally contains its own echo area and minibuffer, but you can
15make frames that don't have these---they use the echo area and
16minibuffer of another frame.
17
18 Editing you do in one frame also affects the other frames. For
19instance, if you put text in the kill ring in one frame, you can yank it
20in another frame. If you exit Emacs through @kbd{C-x C-c} in one frame,
21it terminates all the frames. To delete just one frame, use @kbd{C-x 5
220}.
23
24 To avoid confusion, we reserve the word ``window'' for the
25subdivisions that Emacs implements, and never use it to refer to a
26frame.
27
28 Emacs compiled for MS-DOS emulates some aspects of the window system
29so that you can use many of the features described in this chapter.
30@xref{MS-DOS Input}, for more information.
31
70c88b57
DL
32@cindex MS Windows
33 Emacs compiled for MS Windows mostly supports the same features as
099bfef9
RS
34under X. However, images, tool bars, and tooltips are not yet
35available on MS Windows as of Emacs version 21.1.
70c88b57 36
099bfef9
RS
37 Features which rely on text in multiple faces (such as Font Lock
38mode) will also work on non-windowed terminals that can display more
39than one face, whether by colors or underlining and emboldening. This
40includes the console on GNU/Linux. Emacs determines automatically
41whether the terminal has this capability.
70c88b57 42
6bf7aab6
DL
43@menu
44* Mouse Commands:: Moving, cutting, and pasting, with the mouse.
45* Secondary Selection:: Cutting without altering point and mark.
d235b2db 46* Clipboard:: Using the clipboard for selections.
6bf7aab6
DL
47* Mouse References:: Using the mouse to select an item from a list.
48* Menu Mouse Clicks:: Mouse clicks that bring up menus.
49* Mode Line Mouse:: Mouse clicks on the mode line.
6bf7aab6 50* Creating Frames:: Creating additional Emacs frames with various contents.
099bfef9
RS
51* Frame Commands:: Iconifying, deleting, and switching frames.
52* Speedbar:: How to make and use a speedbar frame.
6bf7aab6
DL
53* Multiple Displays:: How one Emacs job can talk to several displays.
54* Special Buffer Frames:: You can make certain buffers have their own frames.
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.
70c88b57 57* Wheeled Mice:: Using mouse wheels for scrolling.
6bf7aab6 58* Menu Bars:: Enabling and disabling the menu bar.
2beab0db 59* Tool Bars:: Enabling and disabling the tool bar.
70c88b57 60* Dialog Boxes:: Controlling use of dialog boxes.
6bf7aab6
DL
61* Faces:: How to change the display style using faces.
62* Font Lock:: Minor mode for syntactic highlighting using faces.
6bf7aab6 63* Highlight Changes:: Using colors to show where you changed the buffer.
c5feaf54 64* Highlight Interactively:: Tell Emacs what text to highlight.
70c88b57 65* Trailing Whitespace:: Showing possibly-spurious trailing whitespace.
2684ed46 66* Tooltips:: Showing "tooltips", AKA "ballon help" for active text.
43391ff3 67* Mouse Avoidance:: Moving the mouse pointer out of the way.
6bf7aab6 68* Non-Window Terminals:: Multiple frames on terminals that show only one.
70c88b57 69* XTerm Mouse:: Using the mouse in an XTerm terminal emulator.
6bf7aab6
DL
70@end menu
71
72@node Mouse Commands
73@section Mouse Commands for Editing
74@cindex mouse buttons (what they do)
75
76 The mouse commands for selecting and copying a region are mostly
77compatible with the @code{xterm} program. You can use the same mouse
78commands for copying between Emacs and other X client programs.
79
80@kindex DELETE
81 If you select a region with any of these mouse commands, and then
82immediately afterward type the @key{DELETE} function key, it deletes the
83region that you selected. The @key{BACKSPACE} function key and the
84ASCII character @key{DEL} do not do this; if you type any other key
85in between the mouse command and @key{DELETE}, it does not do this.
86
87@findex mouse-set-region
88@findex mouse-set-point
89@findex mouse-yank-at-click
90@findex mouse-save-then-click
91@kindex Mouse-1
92@kindex Mouse-2
93@kindex Mouse-3
94@table @kbd
95@item Mouse-1
96Move point to where you click (@code{mouse-set-point}).
97This is normally the left button.
98
99@item Drag-Mouse-1
100Set the region to the text you select by dragging, and copy it to the
101kill ring (@code{mouse-set-region}). You can specify both ends of the
102region with this single command.
103
104@vindex mouse-scroll-min-lines
105If you move the mouse off the top or bottom of the window while
106dragging, the window scrolls at a steady rate until you move the mouse
107back into the window. This way, you can select regions that don't fit
108entirely on the screen. The number of lines scrolled per step depends
109on how far away from the window edge the mouse has gone; the variable
110@code{mouse-scroll-min-lines} specifies a minimum step size.
111
112@item Mouse-2
113Yank the last killed text, where you click (@code{mouse-yank-at-click}).
114This is normally the middle button.
115
116@item Mouse-3
117This command, @code{mouse-save-then-kill}, has several functions
118depending on where you click and the status of the region.
119
120The most basic case is when you click @kbd{Mouse-1} in one place and
121then @kbd{Mouse-3} in another. This selects the text between those two
122positions as the region. It also copies the new region to the kill
123ring, so that you can copy it to someplace else.
124
125If you click @kbd{Mouse-1} in the text, scroll with the scroll bar, and
126then click @kbd{Mouse-3}, it remembers where point was before scrolling
127(where you put it with @kbd{Mouse-1}), and uses that position as the
128other end of the region. This is so that you can select a region that
129doesn't fit entirely on the screen.
130
131More generally, if you do not have a highlighted region, @kbd{Mouse-3}
132selects the text between point and the click position as the region. It
133does this by setting the mark where point was, and moving point to where
134you click.
135
136If you have a highlighted region, or if the region was set just before
137by dragging button 1, @kbd{Mouse-3} adjusts the nearer end of the region
138by moving it to where you click. The adjusted region's text also
139replaces the old region's text in the kill ring.
140
141If you originally specified the region using a double or triple
142@kbd{Mouse-1}, so that the region is defined to consist of entire words
143or lines, then adjusting the region with @kbd{Mouse-3} also proceeds by
144entire words or lines.
145
146If you use @kbd{Mouse-3} a second time consecutively, at the same place,
147that kills the region already selected.
148
149@item Double-Mouse-1
150This key sets the region around the word which you click on. If you
151click on a character with ``symbol'' syntax (such as underscore, in C
152mode), it sets the region around the symbol surrounding that character.
153
154If you click on a character with open-parenthesis or close-parenthesis
155syntax, it sets the region around the parenthetical grouping (sexp)
156which that character starts or ends. If you click on a character with
157string-delimiter syntax (such as a singlequote or doublequote in C), it
158sets the region around the string constant (using heuristics to figure
159out whether that character is the beginning or the end of it).
160
161@item Double-Drag-Mouse-1
162This key selects a region made up of the words you drag across.
163
164@item Triple-Mouse-1
165This key sets the region around the line you click on.
166
167@item Triple-Drag-Mouse-1
168This key selects a region made up of the lines you drag across.
169@end table
170
171 The simplest way to kill text with the mouse is to press @kbd{Mouse-1}
172at one end, then press @kbd{Mouse-3} twice at the other end.
173@xref{Killing}. To copy the text into the kill ring without deleting it
174from the buffer, press @kbd{Mouse-3} just once---or just drag across the
175text with @kbd{Mouse-1}. Then you can copy it elsewhere by yanking it.
176
177@vindex mouse-yank-at-point
178 To yank the killed or copied text somewhere else, move the mouse there
179and press @kbd{Mouse-2}. @xref{Yanking}. However, if
180@code{mouse-yank-at-point} is non-@code{nil}, @kbd{Mouse-2} yanks at
181point. Then it does not matter where you click, or even which of the
182frame's windows you click on. The default value is @code{nil}. This
183variable also affects yanking the secondary selection.
184
185@cindex cutting and X
186@cindex pasting and X
187@cindex X cutting and pasting
188 To copy text to another X window, kill it or save it in the kill ring.
189Under X, this also sets the @dfn{primary selection}. Then use the
190``paste'' or ``yank'' command of the program operating the other window
191to insert the text from the selection.
192
193 To copy text from another X window, use the ``cut'' or ``copy'' command
194of the program operating the other window, to select the text you want.
195Then yank it in Emacs with @kbd{C-y} or @kbd{Mouse-2}.
196
197 These cutting and pasting commands also work on MS-Windows.
198
199@cindex primary selection
200@cindex cut buffer
201@cindex selection, primary
202@vindex x-cut-buffer-max
203 When Emacs puts text into the kill ring, or rotates text to the front
204of the kill ring, it sets the @dfn{primary selection} in the X server.
205This is how other X clients can access the text. Emacs also stores the
206text in the cut buffer, but only if the text is short enough
207(@code{x-cut-buffer-max} specifies the maximum number of characters);
208putting long strings in the cut buffer can be slow.
209
210 The commands to yank the first entry in the kill ring actually check
211first for a primary selection in another program; after that, they check
212for text in the cut buffer. If neither of those sources provides text
213to yank, the kill ring contents are used.
214
215@node Secondary Selection
216@section Secondary Selection
217@cindex secondary selection
218
219 The @dfn{secondary selection} is another way of selecting text using
220X. It does not use point or the mark, so you can use it to kill text
221without setting point or the mark.
222
223@table @kbd
224@findex mouse-set-secondary
225@kindex M-Drag-Mouse-1
226@item M-Drag-Mouse-1
227Set the secondary selection, with one end at the place where you press
228down the button, and the other end at the place where you release it
229(@code{mouse-set-secondary}). The highlighting appears and changes as
230you drag.
231
232If you move the mouse off the top or bottom of the window while
233dragging, the window scrolls at a steady rate until you move the mouse
234back into the window. This way, you can mark regions that don't fit
235entirely on the screen.
236
237@findex mouse-start-secondary
238@kindex M-Mouse-1
239@item M-Mouse-1
240Set one endpoint for the @dfn{secondary selection}
241(@code{mouse-start-secondary}).
242
243@findex mouse-secondary-save-then-kill
244@kindex M-Mouse-3
245@item M-Mouse-3
246Make a secondary selection, using the place specified with @kbd{M-Mouse-1}
247as the other end (@code{mouse-secondary-save-then-kill}). A second click
248at the same place kills the secondary selection just made.
249
250@findex mouse-yank-secondary
251@kindex M-Mouse-2
252@item M-Mouse-2
253Insert the secondary selection where you click
254(@code{mouse-yank-secondary}). This places point at the end of the
255yanked text.
256@end table
257
258Double or triple clicking of @kbd{M-Mouse-1} operates on words and
259lines, much like @kbd{Mouse-1}.
260
261If @code{mouse-yank-at-point} is non-@code{nil}, @kbd{M-Mouse-2}
262yanks at point. Then it does not matter precisely where you click; all
263that matters is which window you click on. @xref{Mouse Commands}.
264
d235b2db
DL
265@node Clipboard
266@section Using the Clipboard
267@cindex X clipboard
268@cindex clipboard
269@vindex x-select-enable-clipboard
270@findex menu-bar-enable-clipboard
271@cindex OpenWindows
272@cindex Gnome
273
099bfef9 274 As well as the primary and secondary selection types, X supports a
d235b2db
DL
275@dfn{clipboard} selection type which is used by some applications,
276particularly under OpenWindows and Gnome.
277
099bfef9 278 The command @kbd{M-x menu-bar-enable-clipboard} makes the @code{Cut},
d235b2db
DL
279@code{Paste} and @code{Copy} menu items, as well as the keys of the same
280names, all use the clipboard.
281
099bfef9 282 You can customize the option @code{x-select-enable-clipboard} to make
d235b2db
DL
283the Emacs yank functions consult the clipboard before the primary
284selection, and to make the kill functions to store in the clipboard as
285well as the primary selection. Otherwise they do not access the
286clipboard at all. Using the clipboard is the default on MS-Windows,
287unlike most systems.
288
6bf7aab6
DL
289@node Mouse References
290@section Following References with the Mouse
291@kindex Mouse-2 @r{(selection)}
292
293 Some Emacs buffers display lists of various sorts. These include
294lists of files, of buffers, of possible completions, of matches for
295a pattern, and so on.
296
297 Since yanking text into these buffers is not very useful, most of them
298define @kbd{Mouse-2} specially, as a command to use or view the item you
299click on.
300
301 For example, if you click @kbd{Mouse-2} on a file name in a Dired
302buffer, you visit that file. If you click @kbd{Mouse-2} on an error
303message in the @samp{*Compilation*} buffer, you go to the source code
304for that error message. If you click @kbd{Mouse-2} on a completion in
305the @samp{*Completions*} buffer, you choose that completion.
306
307 You can usually tell when @kbd{Mouse-2} has this special sort of
308meaning because the sensitive text highlights when you move the mouse
309over it.
310
311@node Menu Mouse Clicks
312@section Mouse Clicks for Menus
313
314 Mouse clicks modified with the @key{CTRL} and @key{SHIFT} keys
315bring up menus.
316
6bf7aab6
DL
317@table @kbd
318@item C-Mouse-1
239e21e2 319@kindex C-Mouse-1
6bf7aab6
DL
320This menu is for selecting a buffer.
321
cb02ee3e
RS
322The MSB (``mouse select buffer'') global minor mode makes this
323menu smarter and more customizable. @xref{Buffer Menus}.
239e21e2 324
6bf7aab6 325@item C-Mouse-2
239e21e2 326@kindex C-Mouse-2
6bf7aab6
DL
327This menu is for specifying faces and other text properties
328for editing formatted text. @xref{Formatted Text}.
329
330@item C-Mouse-3
239e21e2
DL
331@kindex C-Mouse-3
332This menu is mode-specific. For most modes if Menu-bar mode is on, this
333menu has the same items as all the mode-specific menu-bar menus put
334together. Some modes may specify a different menu for this
335button.@footnote{Some systems use @kbd{Mouse-3} for a mode-specific
336menu. We took a survey of users, and found they preferred to keep
337@kbd{Mouse-3} for selecting and killing regions. Hence the decision to
338use @kbd{C-Mouse-3} for this menu.} If Menu-bar mode is off, this menu
339contains all the items which would be present in the menu bar---not just
340the mode-specific ones---so that you can access them without having to
341display the menu bar.
6bf7aab6 342
099bfef9 343@item S-Mouse-1
6bf7aab6
DL
344This menu is for specifying the frame's principal font.
345@end table
346
347@node Mode Line Mouse
348@section Mode Line Mouse Commands
239e21e2
DL
349@cindex mode line, mouse
350@cindex mouse on mode line
6bf7aab6
DL
351
352 You can use mouse clicks on window mode lines to select and manipulate
353windows.
354
355@table @kbd
356@item Mouse-1
099bfef9 357@kindex Mouse-1 @r{(mode line)}
6bf7aab6
DL
358@kbd{Mouse-1} on a mode line selects the window above. By dragging
359@kbd{Mouse-1} on the mode line, you can move it, thus changing the
360height of the windows above and below.
361
362@item Mouse-2
099bfef9 363@kindex Mouse-2 @r{(mode line)}
6bf7aab6
DL
364@kbd{Mouse-2} on a mode line expands that window to fill its frame.
365
366@item Mouse-3
099bfef9 367@kindex Mouse-3 @r{(mode line)}
92b432e8
EZ
368@kbd{Mouse-3} on a mode line deletes the window above. If the frame has
369only one window, it buries the current buffer instead and switches to
370another buffer.
6bf7aab6
DL
371
372@item C-Mouse-2
099bfef9 373@kindex C-mouse-2 @r{(mode line)}
6bf7aab6
DL
374@kbd{C-Mouse-2} on a mode line splits the window above
375horizontally, above the place in the mode line where you click.
376@end table
377
099bfef9 378@kindex C-Mouse-2 @r{(scroll bar)}
6bf7aab6 379 @kbd{C-Mouse-2} on a scroll bar splits the corresponding window
099bfef9
RS
380vertically, unless you are using an X toolkit's implentation of
381scroll bars. @xref{Split Window}.
6bf7aab6 382
099bfef9
RS
383 The commands above apply to areas of the mode line which do not have
384special mouse bindings of their own. Some areas, such as the buffer
385name and the major mode name, have their own special mouse bindings.
386Emacs displays information about these bindings when you hold the
387mouse over such a place.
70c88b57 388
6bf7aab6
DL
389@node Creating Frames
390@section Creating Frames
391@cindex creating frames
392
393@kindex C-x 5
394 The prefix key @kbd{C-x 5} is analogous to @kbd{C-x 4}, with parallel
395subcommands. The difference is that @kbd{C-x 5} commands create a new
396frame rather than just a new window in the selected frame (@pxref{Pop
397Up Window}). If an existing visible or iconified frame already displays
398the requested material, these commands use the existing frame, after
399raising or deiconifying as necessary.
400
401 The various @kbd{C-x 5} commands differ in how they find or create the
402buffer to select:
403
404@table @kbd
405@item C-x 5 2
406@kindex C-x 5 2
407@findex make-frame-command
408Create a new frame (@code{make-frame-command}).
409@item C-x 5 b @var{bufname} @key{RET}
410Select buffer @var{bufname} in another frame. This runs
411@code{switch-to-buffer-other-frame}.
412@item C-x 5 f @var{filename} @key{RET}
413Visit file @var{filename} and select its buffer in another frame. This
414runs @code{find-file-other-frame}. @xref{Visiting}.
415@item C-x 5 d @var{directory} @key{RET}
416Select a Dired buffer for directory @var{directory} in another frame.
417This runs @code{dired-other-frame}. @xref{Dired}.
418@item C-x 5 m
419Start composing a mail message in another frame. This runs
420@code{mail-other-frame}. It is the other-frame variant of @kbd{C-x m}.
421@xref{Sending Mail}.
422@item C-x 5 .
423Find a tag in the current tag table in another frame. This runs
424@code{find-tag-other-frame}, the multiple-frame variant of @kbd{M-.}.
425@xref{Tags}.
426@item C-x 5 r @var{filename} @key{RET}
427@kindex C-x 5 r
428@findex find-file-read-only-other-frame
429Visit file @var{filename} read-only, and select its buffer in another
430frame. This runs @code{find-file-read-only-other-frame}.
431@xref{Visiting}.
432@end table
433
434@cindex default-frame-alist
435@cindex initial-frame-alist
436 You can control the appearance of new frames you create by setting the
437frame parameters in @code{default-frame-alist}. You can use the
438variable @code{initial-frame-alist} to specify parameters that affect
439only the initial frame. @xref{Initial Parameters,,, elisp, The Emacs
440Lisp Reference Manual}, for more information.
441
442@cindex font (default)
443 The easiest way to specify the principal font for all your Emacs
444frames is with an X resource (@pxref{Font X}), but you can also do it by
445modifying @code{default-frame-alist} to specify the @code{font}
446parameter, as shown here:
447
448@example
449(add-to-list 'default-frame-alist '(font . "10x20"))
450@end example
451
099bfef9
RS
452@node Frame Commands
453@section Frame Commands
454
455 The following commands let you create, delete and operate on frames:
456
457@table @kbd
458@item C-z
459@kindex C-z @r{(X windows)}
460@findex iconify-or-deiconify-frame
461Iconify the selected Emacs frame (@code{iconify-or-deiconify-frame}).
462The normal meaning of @kbd{C-z}, to suspend Emacs, is not useful under a
463window system, so it has a different binding in that case.
464
465If you type this command on an Emacs frame's icon, it deiconifies the frame.
466
467@item C-x 5 0
468@kindex C-x 5 0
469@findex delete-frame
470Delete the selected frame (@code{delete-frame}). This is not allowed if
471there is only one frame.
472
473@item C-x 5 o
474@kindex C-x 5 o
475@findex other-frame
476Select another frame, raise it, and warp the mouse to it so that it
477stays selected. If you repeat this command, it cycles through all the
478frames on your terminal.
479
480@item C-x 5 1
481@kindex C-x 5 1
482@findex delete-other-frames
483Delete all frames except the selected one.
484@end table
485
6bf7aab6
DL
486@node Speedbar
487@section Making and Using a Speedbar Frame
488@cindex speedbar
489
490 An Emacs frame can have a @dfn{speedbar}, which is a vertical window
491that serves as a scrollable menu of files you could visit and tags
492within those files. To create a speedbar, type @kbd{M-x speedbar}; this
493creates a speedbar window for the selected frame. From then on, you can
494click on a file name in the speedbar to visit that file in the
495corresponding Emacs frame, or click on a tag name to jump to that tag in
496the Emacs frame.
497
498 Initially the speedbar lists the immediate contents of the current
499directory, one file per line. Each line also has a box, @samp{[+]} or
500@samp{<+>}, that you can click on with @kbd{Mouse-2} to ``open up'' the
501contents of that item. If the line names a directory, opening it adds
502the contents of that directory to the speedbar display, underneath the
503directory's own line. If the line lists an ordinary file, opening it up
504adds a list of the tags in that file to the speedbar display. When a
505file is opened up, the @samp{[+]} changes to @samp{[-]}; you can click
506on that box to ``close up'' that file (hide its contents).
507
508 Some major modes, including Rmail mode, Info, and GUD, have
509specialized ways of putting useful items into the speedbar for you to
510select. For example, in Rmail mode, the speedbar shows a list of Rmail
511files, and lets you move the current message to another Rmail file by
512clicking on its @samp{<M>} box.
513
514 A speedbar belongs to one Emacs frame, and always operates on that
515frame. If you use multiple frames, you can make a speedbar for some or
516all of the frames; type @kbd{M-x speedbar} in any given frame to make a
517speedbar for it.
518
519@node Multiple Displays
520@section Multiple Displays
521@cindex multiple displays
522
97878c08
EZ
523 A single Emacs can talk to more than one X display. Initially, Emacs
524uses just one display---the one specified with the @env{DISPLAY}
525environment variable or with the @samp{--display} option (@pxref{Initial
526Options}). To connect to another display, use the command
527@code{make-frame-on-display}:
6bf7aab6
DL
528
529@findex make-frame-on-display
530@table @kbd
531@item M-x make-frame-on-display @key{RET} @var{display} @key{RET}
532Create a new frame on display @var{display}.
533@end table
534
535 A single X server can handle more than one screen. When you open
536frames on two screens belonging to one server, Emacs knows they share a
537single keyboard, and it treats all the commands arriving from these
538screens as a single stream of input.
539
540 When you open frames on different X servers, Emacs makes a separate
541input stream for each server. This way, two users can type
542simultaneously on the two displays, and Emacs will not garble their
543input. Each server also has its own selected frame. The commands you
544enter with a particular X server apply to that server's selected frame.
545
546 Despite these features, people using the same Emacs job from different
547displays can still interfere with each other if they are not careful.
548For example, if any one types @kbd{C-x C-c}, that exits the Emacs job
549for all of them!
550
551@node Special Buffer Frames
552@section Special Buffer Frames
553
554@vindex special-display-buffer-names
555 You can make certain chosen buffers, for which Emacs normally creates
556a second window when you have just one window, appear in special frames
557of their own. To do this, set the variable
558@code{special-display-buffer-names} to a list of buffer names; any
559buffer whose name is in that list automatically gets a special frame,
560when an Emacs command wants to display it ``in another window.''
561
562 For example, if you set the variable this way,
563
564@example
565(setq special-display-buffer-names
566 '("*Completions*" "*grep*" "*tex-shell*"))
567@end example
568
569@noindent
570then completion lists, @code{grep} output and the @TeX{} mode shell
571buffer get individual frames of their own. These frames, and the
572windows in them, are never automatically split or reused for any other
573buffers. They continue to show the buffers they were created for,
574unless you alter them by hand. Killing the special buffer deletes its
575frame automatically.
576
577@vindex special-display-regexps
578 More generally, you can set @code{special-display-regexps} to a list
579of regular expressions; then a buffer gets its own frame if its name
580matches any of those regular expressions. (Once again, this applies only
581to buffers that normally get displayed for you in a separate window.)
582
583@vindex special-display-frame-alist
584 The variable @code{special-display-frame-alist} specifies the frame
585parameters for these frames. It has a default value, so you don't need
586to set it.
587
588 For those who know Lisp, an element of
589@code{special-display-buffer-names} or @code{special-display-regexps}
590can also be a list. Then the first element is the buffer name or
591regular expression; the rest of the list specifies how to create the
592frame. It can be an association list specifying frame parameter values;
593these values take precedence over parameter values specified in
594@code{special-display-frame-alist}. Alternatively, it can have this
595form:
596
597@example
598(@var{function} @var{args}...)
599@end example
600
601@noindent
602where @var{function} is a symbol. Then the frame is constructed by
603calling @var{function}; its first argument is the buffer, and its
604remaining arguments are @var{args}.
605
606 An analogous feature lets you specify buffers which should be
607displayed in the selected window. @xref{Force Same Window}. The
608same-window feature takes precedence over the special-frame feature;
609therefore, if you add a buffer name to
610@code{special-display-buffer-names} and it has no effect, check to see
611whether that feature is also in use for the same buffer name.
612
613@node Frame Parameters
614@section Setting Frame Parameters
615@cindex colors
616@cindex Auto-Raise mode
617@cindex Auto-Lower mode
618
619 This section describes commands for altering the display style and
620window management behavior of the selected frame.
621
622@findex set-foreground-color
623@findex set-background-color
624@findex set-cursor-color
625@findex set-mouse-color
626@findex set-border-color
627@findex auto-raise-mode
628@findex auto-lower-mode
629@table @kbd
630@item M-x set-foreground-color @key{RET} @var{color} @key{RET}
631Specify color @var{color} for the foreground of the selected frame.
632(This also changes the foreground color of the default face.)
633
634@item M-x set-background-color @key{RET} @var{color} @key{RET}
635Specify color @var{color} for the background of the selected frame.
636(This also changes the background color of the default face.)
637
638@item M-x set-cursor-color @key{RET} @var{color} @key{RET}
639Specify color @var{color} for the cursor of the selected frame.
640
641@item M-x set-mouse-color @key{RET} @var{color} @key{RET}
642Specify color @var{color} for the mouse cursor when it is over the
643selected frame.
644
645@item M-x set-border-color @key{RET} @var{color} @key{RET}
646Specify color @var{color} for the border of the selected frame.
647
648@item M-x list-colors-display
649Display the defined color names and show what the colors look like.
650This command is somewhat slow.
651
652@item M-x auto-raise-mode
653Toggle whether or not the selected frame should auto-raise. Auto-raise
654means that every time you move the mouse onto the frame, it raises the
655frame.
656
657Note that this auto-raise feature is implemented by Emacs itself. Some
658window managers also implement auto-raise. If you enable auto-raise for
659Emacs frames in your X window manager, it should work, but it is beyond
660Emacs's control and therefore @code{auto-raise-mode} has no effect on
661it.
662
663@item M-x auto-lower-mode
664Toggle whether or not the selected frame should auto-lower.
665Auto-lower means that every time you move the mouse off the frame,
666the frame moves to the bottom of the stack of X windows.
667
668The command @code{auto-lower-mode} has no effect on auto-lower
669implemented by the X window manager. To control that, you must use
670the appropriate window manager features.
671
672@findex set-frame-font
673@item M-x set-frame-font @key{RET} @var{font} @key{RET}
674@cindex font (principal)
675Specify font @var{font} as the principal font for the selected frame.
676The principal font controls several face attributes of the
677@code{default} face (@pxref{Faces}). For example, if the principal font
678has a height of 12 pt, all text will be drawn in 12 pt fonts, unless you
679use another face that specifies a different height. @xref{Font X}, for
680ways to list the available fonts on your system.
681
682@kindex S-Mouse-1
683You can also set a frame's principal font through a pop-up menu.
684Press @kbd{S-Mouse-1} to activate this menu.
685@end table
686
687 In Emacs versions that use an X toolkit, the color-setting and
688font-setting functions don't affect menus and the menu bar, since they
689are displayed by their own widget classes. To change the appearance of
690the menus and menu bar, you must use X resources (@pxref{Resources X}).
691@xref{Colors X}, regarding colors. @xref{Font X}, regarding choice of
692font.
693
694 For information on frame parameters and customization, see @ref{Frame
695Parameters,,, elisp, The Emacs Lisp Reference Manual}.
696
697@node Scroll Bars
698@section Scroll Bars
699@cindex Scroll Bar mode
700@cindex mode, Scroll Bar
701
702 When using X, Emacs normally makes a @dfn{scroll bar} at the left of
70c88b57
DL
703each Emacs window.@footnote{Placing it at the left is usually more
704useful with overlapping frames with text starting at the left margin.}
705The scroll bar runs the height of the window, and shows a moving
706rectangular inner box which represents the portion of the buffer
707currently displayed. The entire height of the scroll bar represents the
708entire length of the buffer.
6bf7aab6
DL
709
710 You can use @kbd{Mouse-2} (normally, the middle button) in the scroll
711bar to move or drag the inner box up and down. If you move it to the
712top of the scroll bar, you see the top of the buffer. If you move it to
713the bottom of the scroll bar, you see the bottom of the buffer.
714
715 The left and right buttons in the scroll bar scroll by controlled
716increments. @kbd{Mouse-1} (normally, the left button) moves the line at
717the level where you click up to the top of the window. @kbd{Mouse-3}
718(normally, the right button) moves the line at the top of the window
719down to the level where you click. By clicking repeatedly in the same
720place, you can scroll by the same distance over and over.
721
70de49cc 722 If you are using Emacs's own implementation of scroll bars, as opposed
d990421f
GM
723to scroll bars from an X toolkit, you can also click @kbd{C-Mouse-2} in
724the scroll bar to split a window vertically. The split occurs on the
725line where you click.
6bf7aab6
DL
726
727@findex scroll-bar-mode
70c88b57 728@vindex scroll-bar-mode
6bf7aab6
DL
729 You can enable or disable Scroll Bar mode with the command @kbd{M-x
730scroll-bar-mode}. With no argument, it toggles the use of scroll bars.
731With an argument, it turns use of scroll bars on if and only if the
732argument is positive. This command applies to all frames, including
70c88b57
DL
733frames yet to be created. Customize the option @code{scroll-bar-mode}
734to control the use of scroll bars at startup. You can use it to specify
735that they are placed at the right of windows if you prefer that. You
736can use the X resource @samp{verticalScrollBars} to control the initial
737setting of Scroll Bar mode similarly. @xref{Resources X}.
6bf7aab6
DL
738
739@findex toggle-scroll-bar
740 To enable or disable scroll bars for just the selected frame, use the
741@kbd{M-x toggle-scroll-bar} command.
742
70c88b57 743@node Wheeled Mice
099bfef9
RS
744@section Scrolling With ``Wheeled'' Mice
745
746@cindex mouse wheel
747@findex mouse-wheel-install
2684ed46 748 Some mice have a ``wheel'' instead of a third button. You can usually
099bfef9
RS
749click the wheel to act as @kbd{Mouse-3}. You can also use the wheel to
750scroll windows instead of using the scroll bar or keyboard commands.
751Use @kbd{M-x mouse-wheel-install} to set up the wheel for scrolling or put
752@samp{(require 'mouse-wheel)} in your @file{.emacs}. (Support for the wheel
753depends on the system generating appropriate events for Emacs.)
c08e161b
MB
754
755@vindex mouse-wheel-follow-mouse
756@vindex mouse-wheel-scroll-amount
099bfef9 757 The variables @code{mouse-wheel-follow-mouse} and
c08e161b
MB
758@code{mouse-wheel-scroll-amount} determine where and by how much
759buffers are scrolled.
70c88b57 760
6bf7aab6
DL
761@node Menu Bars
762@section Menu Bars
763@cindex Menu Bar mode
764@cindex mode, Menu Bar
765
766 You can turn display of menu bars on or off with @kbd{M-x
2beab0db
DL
767menu-bar-mode} or by customizing the option @code{menu-bar-mode}.
768With no argument, this command toggles Menu Bar mode, a
6bf7aab6
DL
769minor mode. With an argument, the command turns Menu Bar mode on if the
770argument is positive, off if the argument is not positive. You can use
771the X resource @samp{menuBarLines} to control the initial setting of
2beab0db
DL
772Menu Bar mode. @xref{Resources X}.
773
099bfef9
RS
774@kindex C-Mouse-3 @r{(when menu bar is disabled)}
775 Expert users often turn off the menu bar, especially on text-only
776terminals, where this makes one additional line available for text.
777If the menu bar is off, you can still pop up a menu of its contents
778with @kbd{C-Mouse-3} on a display which supports popup menus.
779@xref{Menu Mouse Clicks}.
6bf7aab6
DL
780
781 @xref{Menu Bar}, for information on how to invoke commands with the
782menu bar.
783
2beab0db
DL
784@node Tool Bars
785@section Tool Bars
786@cindex Tool Bar mode
787@cindex mode, Tool Bar
943a8bb7 788@cindex icons, tool bar
2beab0db 789
099bfef9
RS
790The @dfn{tool bar} is a line (or multiple lines) of icons at the top
791of the Emacs window. You can click on these icons with the mouse
792to do various jobs.
793
794The global tool bar contains general commands. Some major modes
795define their own tool bars to replace it. A few ``special'' modes
796that are not designed for ordinary editing remove some items from the
797global tool bar.
943a8bb7 798
84be61d6
DL
799Tool bars work only on a graphical display. The tool bar uses colored
800XPM icons if Emacs was built with XPM support. Otherwise, the tool
801bar uses monochrome icons (PBM or XBM format).
099bfef9
RS
802
803You can turn display of tool bars on or off with @kbd{M-x
804tool-bar-mode}.
70c88b57
DL
805
806@node Dialog Boxes
807@section Using Dialog Boxes
808@cindex dialog boxes
809
810@vindex use-dialog-box
099bfef9
RS
811 A dialog box is a special kind of menu for asking you a yes-or-no
812question or some other special question. Many Emacs commands use a
813dialog box to ask a yes-or-no question, if you used the mouse to
814invoke the command to begin with.
815
816 You can customize the option @code{use-dialog-box} to suppress the
817use of dialog boxes. This also controls whether to use file selection
818windows (but those are not supported on all platforms).
70c88b57 819
6bf7aab6
DL
820@node Faces
821@section Using Multiple Typefaces
822@cindex faces
823
099bfef9
RS
824 When using Emacs with a window system, you can set up multiple
825styles of displaying characters. The aspects of style that you can
826control are the type font, the foreground color, the background color,
827and whether to underline. On non-windowed terminals (including
828MS-DOS, @pxref{MS-DOS}), Emacs supports faces to the extent the
829terminal can display them.
6bf7aab6
DL
830
831 The way you control display style is by defining named @dfn{faces}.
832Each face can specify a type font, a foreground color, a background
833color, and an underline flag; but it does not have to specify all of
834them. Then by specifying the face or faces to use for a given part
835of the text in the buffer, you control how that text appears.
836
837 The style of display used for a given character in the text is
838determined by combining several faces. Any aspect of the display style
839that isn't specified by overlays or text properties comes from the frame
840itself.
841
842 Enriched mode, the mode for editing formatted text, includes several
843commands and menus for specifying faces. @xref{Format Faces}, for how
844to specify the font for text in the buffer. @xref{Format Colors}, for
845how to specify the foreground and background color.
846
847 To alter the appearance of a face, use the customization buffer.
848@xref{Face Customization}. You can also use X resources to specify
849attributes of particular faces (@pxref{Resources X}).
850
d55dbe07
EZ
851@cindex face colors, setting
852@findex set-face-foreground
853@findex set-face-background
099bfef9 854 Alternatively, you can change the foreground and background colors
d55dbe07
EZ
855of a specific face with @kbd{M-x set-face-foreground} and @kbd{M-x
856set-face-background}. These commands prompt in the minibuffer for a
099bfef9 857face name and a color name, with completion, and then set that face to
d55dbe07
EZ
858use the specified color.
859
6bf7aab6
DL
860@findex list-faces-display
861 To see what faces are currently defined, and what they look like, type
862@kbd{M-x list-faces-display}. It's possible for a given face to look
863different in different frames; this command shows the appearance in the
864frame in which you type it. Here's a list of the standardly defined
865faces:
866
867@table @code
868@item default
869This face is used for ordinary text that doesn't specify any other face.
84be61d6 870@item mode-line
70c88b57 871This face is used for mode lines. By default, it's drawn with shadows
099bfef9 872for a ``raised'' effect on window systems, and drawn as the inverse of
8748f1d7 873the default face on non-windowed terminals. @xref{Display Custom}.
70c88b57 874@item header-line
84be61d6 875Similar to @code{mode-line} for a window's header line. Most modes
12f13704 876don't use the header line, but the Info mode does.
6bf7aab6
DL
877@item highlight
878This face is used for highlighting portions of text, in various modes.
12f13704 879For example, mouse-sensitive text is highlighted using this face.
84be61d6
DL
880@item isearch
881This face is used for highlighting Isearch matches.
882@item isearch-lazy-highlight-face
883This face is used for lazy highlighting of Isearch matches other than
884the current one.
6bf7aab6
DL
885@item region
886This face is used for displaying a selected region (when Transient Mark
887mode is enabled---see below).
888@item secondary-selection
12f13704 889This face is used for displaying a secondary X selection (@pxref{Secondary
6bf7aab6
DL
890Selection}).
891@item bold
892This face uses a bold variant of the default font, if it has one.
893@item italic
894This face uses an italic variant of the default font, if it has one.
895@item bold-italic
896This face uses a bold italic variant of the default font, if it has one.
897@item underline
898This face underlines text.
70c88b57
DL
899@item fixed-pitch
900The basic fixed-pitch face.
901@item fringe
12f13704
EZ
902@cindex fringe
903The face for the fringes to the left and right of windows on graphic
904displays. (The fringes are the narrow portions of the Emacs frame
905between the text area and the frame's border.)
70c88b57 906@item scroll-bar
12f13704 907This face determines the visual appearance of the scroll bar.
70c88b57
DL
908@item border
909This face determines the color of the frame border.
910@item cursor
911This face determines the color of the cursor.
912@item mouse
913This face determines the color of the mouse pointer.
914@item tool-bar
84be61d6 915This is the basic tool-bar face. No text appears in the tool bar, but the
099bfef9 916colors of this face affect the appearance of tool bar icons.
84be61d6
DL
917@item tooltip
918This face is used for tooltips.
70c88b57
DL
919@item menu
920This face determines the colors and font of Emacs's menus. Setting the
921font of LessTif/Motif menus is currently not supported; attempts to set
922the font are ignored in this case.
923@item trailing-whitespace
924The face for highlighting trailing whitespace when
925@code{show-trailing-whitespace} is non-nil.
926@item variable-pitch
927The basic variable-pitch face.
6bf7aab6
DL
928@end table
929
930@cindex @code{region} face
931 When Transient Mark mode is enabled, the text of the region is
932highlighted when the mark is active. This uses the face named
933@code{region}; you can control the style of highlighting by changing the
934style of this face (@pxref{Face Customization}). @xref{Transient Mark},
935for more information about Transient Mark mode and activation and
936deactivation of the mark.
937
938 One easy way to use faces is to turn on Font Lock mode. This minor
939mode, which is always local to a particular buffer, arranges to
940choose faces according to the syntax of the text you are editing. It
941can recognize comments and strings in most languages; in several
942languages, it can also recognize and properly highlight various other
943important constructs. @xref{Font Lock}, for more information about
944Font Lock mode and syntactic highlighting.
945
946 You can print out the buffer with the highlighting that appears
947on your screen using the command @code{ps-print-buffer-with-faces}.
70c88b57 948@xref{PostScript}.
6bf7aab6
DL
949
950@node Font Lock
951@section Font Lock mode
952@cindex Font Lock mode
953@cindex mode, Font Lock
4946337d 954@cindex syntax highlighting and coloring
6bf7aab6
DL
955
956 Font Lock mode is a minor mode, always local to a particular
957buffer, which highlights (or ``fontifies'') using various faces
958according to the syntax of the text you are editing. It can
959recognize comments and strings in most languages; in several
960languages, it can also recognize and properly highlight various other
961important constructs---for example, names of functions being defined
962or reserved keywords.
963
964@findex font-lock-mode
965@findex turn-on-font-lock
966 The command @kbd{M-x font-lock-mode} turns Font Lock mode on or off
967according to the argument, and toggles the mode when it has no argument.
968The function @code{turn-on-font-lock} unconditionally enables Font Lock
969mode. This is useful in mode-hook functions. For example, to enable
970Font Lock mode whenever you edit a C file, you can do this:
971
972@example
973(add-hook 'c-mode-hook 'turn-on-font-lock)
974@end example
975
976@findex global-font-lock-mode
70c88b57 977@vindex global-font-lock-mode
099bfef9
RS
978 To turn on Font Lock mode automatically in all modes which support
979it, customize the user option @code{global-font-lock-mode} or use the
980function @code{global-font-lock-mode} in your @file{.emacs} file, like
981this:
6bf7aab6
DL
982
983@example
984(global-font-lock-mode 1)
985@end example
986
099bfef9
RS
987 Font Lock mode uses several specifically named faces to do its job,
988including @code{font-lock-string-face}, @code{font-lock-comment-face},
989and others. The easiest way to find them all is to use completion
990on the face name in @code{set-face-foreground}.
991
d55dbe07 992 To change the colors or the fonts used by Font Lock mode to fontify
099bfef9
RS
993different parts of text, just change these faces. There are
994two ways to do it:
d55dbe07
EZ
995
996@itemize @bullet
997@item
099bfef9
RS
998Invoke @kbd{M-x set-face-foreground} or @kbd{M-x set-face-background}
999to change the colors of a particular face used by Font Lock.
1000@xref{Faces}. The command @kbd{M-x list-faces-display} displays all
1001the faces currently known to Emacs, including those used by Font Lock.
d55dbe07
EZ
1002
1003@item
1004Customize the faces interactively with @kbd{M-x customize-face}, as
1005described in @ref{Face Customization}.
1006@end itemize
1007
6bf7aab6
DL
1008@kindex M-g M-g
1009@findex font-lock-fontify-block
1010 In Font Lock mode, when you edit the text, the highlighting updates
1011automatically in the line that you changed. Most changes don't affect
1012the highlighting of subsequent lines, but occasionally they do. To
1013rehighlight a range of lines, use the command @kbd{M-g M-g}
1014(@code{font-lock-fontify-block}).
1015
1016@vindex font-lock-mark-block-function
1017 In certain major modes, @kbd{M-g M-g} refontifies the entire current
1018function. (The variable @code{font-lock-mark-block-function} controls
1019how to find the current function.) In other major modes, @kbd{M-g M-g}
1020refontifies 16 lines above and below point.
1021
1022 With a prefix argument @var{n}, @kbd{M-g M-g} refontifies @var{n}
1023lines above and below point, regardless of the mode.
1024
1025 To get the full benefit of Font Lock mode, you need to choose a
1026default font which has bold, italic, and bold-italic variants; or else
1027you need to have a color or gray-scale screen.
1028
1029@vindex font-lock-maximum-decoration
1030 The variable @code{font-lock-maximum-decoration} specifies the
1031preferred level of fontification, for modes that provide multiple
1032levels. Level 1 is the least amount of fontification; some modes
1033support levels as high as 3. The normal default is ``as high as
1034possible.'' You can specify an integer, which applies to all modes, or
1035you can specify different numbers for particular major modes; for
1036example, to use level 1 for C/C++ modes, and the default level
1037otherwise, use this:
1038
1039@example
1040(setq font-lock-maximum-decoration
1041 '((c-mode . 1) (c++-mode . 1)))
1042@end example
1043
1044@vindex font-lock-maximum-size
1045 Fontification can be too slow for large buffers, so you can suppress
1046it. The variable @code{font-lock-maximum-size} specifies a buffer size,
1047beyond which buffer fontification is suppressed.
1048
1049@c @w is used below to prevent a bad page-break.
1050@vindex font-lock-beginning-of-syntax-function
1051 Comment and string fontification (or ``syntactic'' fontification)
1052relies on analysis of the syntactic structure of the buffer text. For
1053the purposes of speed, some modes including C mode and Lisp mode rely on
1054a special convention: an open-parenthesis in the leftmost column always
1055defines the @w{beginning} of a defun, and is thus always outside any string
1056or comment. (@xref{Defuns}.) If you don't follow this convention,
1057then Font Lock mode can misfontify the text after an open-parenthesis in
1058the leftmost column that is inside a string or comment.
1059
1060 The variable @code{font-lock-beginning-of-syntax-function} (always
1061buffer-local) specifies how Font Lock mode can find a position
1062guaranteed to be outside any comment or string. In modes which use the
1063leftmost column parenthesis convention, the default value of the variable
1064is @code{beginning-of-defun}---that tells Font Lock mode to use the
1065convention. If you set this variable to @code{nil}, Font Lock no longer
1066relies on the convention. This avoids incorrect results, but the price
1067is that, in some cases, fontification for a changed text must rescan
1068buffer text from the beginning of the buffer.
1069
1070@findex font-lock-add-keywords
1071 Font Lock highlighting patterns already exist for many modes, but you
1072may want to fontify additional patterns. You can use the function
1073@code{font-lock-add-keywords}, to add your own highlighting patterns for
1074a particular mode. For example, to highlight @samp{FIXME:} words in C
1075comments, use this:
1076
1077@example
1078(font-lock-add-keywords
1079 'c-mode
1080 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
1081@end example
1082
6bf7aab6
DL
1083@node Highlight Changes
1084@section Highlight Changes Mode
1085
1086@findex highlight-changes-mode
1087 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
1088that uses faces (colors, typically) to indicate which parts of
1089the buffer were changed most recently.
1090
c5feaf54 1091@node Highlight Interactively
099bfef9
RS
1092@section Interactive Highlighting by Matching
1093@cindex highlighting by matching
c5feaf54 1094@cindex interactive highlighting
099bfef9
RS
1095
1096 It is sometimes useful to highlight the strings that match a certain
1097regular expression. For example, you might wish to see all the
1098references to a certain variable in a program source file, or highlight
1099certain parts in a voluminous output of some program, or make certain
1100cliches stand out in an article.
c5feaf54
EZ
1101
1102@findex hi-lock-mode
1103 Use the @kbd{M-x hi-lock-mode} command to turn on a minor mode that
099bfef9
RS
1104allows you to specify regular expressions of the text to be
1105highlighted. Hi-lock mode works like Font Lock (@pxref{Font Lock}),
1106except that it lets you specify explicitly what parts of text to
1107highlight. You control Hi-lock mode with these commands:
c5feaf54
EZ
1108
1109@table @kbd
099bfef9 1110@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
4946337d 1111@kindex C-x w h
c5feaf54 1112@findex highlight-regexp
4946337d 1113Highlight text that matches
099bfef9
RS
1114@var{regexp} using face @var{face} (@code{highlight-regexp}).
1115By using this command more than once, you can highlight various
1116parts of the text in different ways.
c5feaf54 1117
099bfef9 1118@item C-x w r @var{regexp} @key{RET}
c5feaf54
EZ
1119@kindex C-x w r
1120@findex unhighlight-regexp
099bfef9
RS
1121Unhighlight @var{regexp} (@code{unhighlight-regexp}). You must enter
1122one of the regular expressions currently specified for highlighting.
1123(You can use completion, or a menu, to enter one of them
1124conveniently.)
c5feaf54 1125
099bfef9 1126@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
c5feaf54
EZ
1127@kindex C-x w l
1128@findex highlight-lines-matching-regexp
1129@cindex lines, highlighting
1130@cindex highlighting lines of text
099bfef9
RS
1131Highlight lines containing a match for @var{regexp}, using face
1132@var{face} (@code{highlight-lines-matching-regexp}).
c5feaf54
EZ
1133
1134@item C-x w b
1135@kindex C-x w b
1136@findex hi-lock-write-interactive-patterns
099bfef9
RS
1137Insert all the current highlighting regexp/face pairs into the buffer
1138at point, with comment delimiters to prevent them from changing your
1139program. This key binding runs the
1140@code{hi-lock-write-interactive-patterns} command.
1141
1142These patterns will be read the next time you visit the file while
1143Hi-lock mode is enabled, or whenever you use the @kbd{M-x
1144hi-lock-find-patterns} command.
c5feaf54
EZ
1145
1146@item C-x w i
1147@kindex C-x w i
1148@findex hi-lock-find-patterns
1149@vindex hi-lock-exclude-modes
099bfef9
RS
1150Re-read regexp/face pairs in the current buffer
1151(@code{hi-lock-write-interactive-patterns}). The list of pairs is
1152found no matter where in the buffer it may be.
c5feaf54 1153
099bfef9
RS
1154This command does nothing if the major mode is a member of the list
1155@code{hi-lock-exclude-modes}.
1156@end table
c5feaf54 1157
70c88b57
DL
1158@node Trailing Whitespace
1159@section Trailing Whitespace
1160
1161@cindex trailing whitespace
43391ff3 1162@cindex whitespace, trailing
70c88b57 1163@vindex show-trailing-whitespace
099bfef9
RS
1164 It is easy to leave unnecessary spaces at the end of a line without
1165realizing it. In most cases, this @dfn{trailing whitespace} has no
1166effect, but there are special circumstances where it matters.
1167
1168 You can make trailing whitespace visible on the screen by setting
1169the variable @code{show-trailing-whitespace} to @code{t}. Then Emacs
1170displays trailing whitespace in the face @code{trailing-whitespace}.
1171
1172 Trailing whitespace is defined as spaces or tabs at the end of a
1173line. But trailing whitespace is not displayed specially if point is
1174at the end of the line containing the whitespace. (Doing that looks
1175ugly while you are typing in new text, and the location of point is
1176enough in that case to show you that the spaces are present.)
1177
1178@vindex indicate-empty-lines
1179@vindex default-indicate-empty-lines
1180@cindex empty lines
1181 Emacs can indicate empty lines at the end of the buffer with a
1182special bitmap on the left fringe of the window. To enable this
1183feature, set the buffer-local variable @code{indicate-empty-lines} to
1184a non-@code{nil} value. The default value of this variable is
1185controlled by the variable @code{default-indicate-empty-lines};
1186by setting that variable, you can enable or disable this feature
1187for all new buffers.
70c88b57
DL
1188
1189@node Tooltips
099bfef9 1190@section Tooltips (or ``Balloon Help'')
70c88b57
DL
1191
1192@cindex balloon help
099bfef9 1193 Tooltips are small X windows displaying a help string at the current
d9701e91
DL
1194mouse position, typically over text---including the mode line---which
1195can be activated with the mouse or other keys. (This facility is
2684ed46 1196sometimes known as @dfn{balloon help}.) Help text may be available for
099bfef9 1197menu items too.
d9701e91 1198
099bfef9
RS
1199@findex tooltip-mode
1200 To use tooltips, enable Tooltip mode with the command @kbd{M-x
1201tooltip-mode}. The customization group @code{tooltip} controls
1202various aspects of how tooltips work. When Tooltip mode is disabled,
1203the help text is displayed in the echo area instead.
70c88b57 1204
099bfef9 1205As of Emacs 21.1, tooltips are not supported on MS-Windows.
9638f5c2 1206
43391ff3
DL
1207@node Mouse Avoidance
1208@section Mouse Avoidance
099bfef9
RS
1209@cindex avoiding mouse in the way of your typing
1210@cindex mouse avoidance
43391ff3 1211
099bfef9 1212@vindex mouse-avoidance-mode
43391ff3 1213Mouse Avoidance mode keeps the window system mouse pointer away from
099bfef9
RS
1214point, to avoid obscuring text. Whenever it moves the mouse, it also
1215raises the frame. To use Mouse Avoidance mode, customize the option
1216@code{mouse-avoidance-mode}. You can set this to various values to
1217move the mouse in several ways:
43391ff3
DL
1218
1219@table @code
1220@item banish
1221Move the mouse to the upper-right corner on any keypress;
1222@item exile
1223Move the mouse to the corner only if the cursor gets too close,
1224and allow it to return once the cursor is out of the way;
1225@item jump
1226If the cursor gets too close to the mouse, displace the mouse
1227a random distance & direction;
1228@item animate
1229As @code{jump}, but shows steps along the way for illusion of motion;
1230@item cat-and-mouse
1231The same as @code{animate};
1232@item proteus
1233As @code{animate}, but changes the shape of the mouse pointer too.
1234@end table
1235
099bfef9
RS
1236@findex mouse-avoidance-mode
1237You can also use the command @kbd{M-x mouse-avoidance-mode} to enable
43391ff3 1238the mode.
70c88b57 1239
6bf7aab6
DL
1240@node Non-Window Terminals
1241@section Non-Window Terminals
1242@cindex non-window terminals
1243@cindex single-frame terminals
1244
1245 If your terminal does not have a window system that Emacs supports,
1246then it can display only one Emacs frame at a time. However, you can
1247still create multiple Emacs frames, and switch between them. Switching
1248frames on these terminals is much like switching between different
1249window configurations.
1250
1251 Use @kbd{C-x 5 2} to create a new frame and switch to it; use @kbd{C-x
12525 o} to cycle through the existing frames; use @kbd{C-x 5 0} to delete
1253the current frame.
1254
1255 Each frame has a number to distinguish it. If your terminal can
1256display only one frame at a time, the selected frame's number @var{n}
1257appears near the beginning of the mode line, in the form
1258@samp{F@var{n}}.
1259
1260@findex set-frame-name
1261@findex select-frame-by-name
1262 @samp{F@var{n}} is actually the frame's name. You can also specify a
1263different name if you wish, and you can select a frame by its name. Use
1264the command @kbd{M-x set-frame-name @key{RET} @var{name} @key{RET}} to
1265specify a new name for the selected frame, and use @kbd{M-x
1266select-frame-by-name @key{RET} @var{name} @key{RET}} to select a frame
1267according to its name. The name you specify appears in the mode line
1268when the frame is selected.
1269
70c88b57
DL
1270@node XTerm Mouse
1271@section Using a Mouse in Terminal Emulators
43391ff3
DL
1272@cindex xterm, mouse support
1273@cindex terminal emulators, mouse support
70c88b57
DL
1274
1275Some terminal emulators under X support mouse clicks in the terminal
1276window. In a terminal emulator which is compatible with @code{xterm},
1277you can use @kbd{M-x xterm-mouse-mode} to enable simple use of the
1278mouse---only single clicks are supported. The normal @code{xterm} mouse
1279functionality is still available by holding down the @kbd{SHIFT} key
1280when you press the mouse button.