Mention that etags switches to C++ when meets `template'.
[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
DL
319@kindex C-Mouse-1
320@findex msb-mode
321@cindex MSB minor mode
322@cindex mode, MSB
6bf7aab6
DL
323This menu is for selecting a buffer.
324
239e21e2
DL
325The MSB (`mouse select buffer') global minor mode alters this menu to a
326form some people prefer and which is customizable. See the Custom group
099bfef9 327@code{msb} (@pxref{Easy Customization}).
239e21e2 328
6bf7aab6 329@item C-Mouse-2
239e21e2 330@kindex C-Mouse-2
6bf7aab6
DL
331This menu is for specifying faces and other text properties
332for editing formatted text. @xref{Formatted Text}.
333
334@item C-Mouse-3
239e21e2
DL
335@kindex C-Mouse-3
336This menu is mode-specific. For most modes if Menu-bar mode is on, this
337menu has the same items as all the mode-specific menu-bar menus put
338together. Some modes may specify a different menu for this
339button.@footnote{Some systems use @kbd{Mouse-3} for a mode-specific
340menu. We took a survey of users, and found they preferred to keep
341@kbd{Mouse-3} for selecting and killing regions. Hence the decision to
342use @kbd{C-Mouse-3} for this menu.} If Menu-bar mode is off, this menu
343contains all the items which would be present in the menu bar---not just
344the mode-specific ones---so that you can access them without having to
345display the menu bar.
6bf7aab6 346
099bfef9 347@item S-Mouse-1
6bf7aab6
DL
348This menu is for specifying the frame's principal font.
349@end table
350
351@node Mode Line Mouse
352@section Mode Line Mouse Commands
239e21e2
DL
353@cindex mode line, mouse
354@cindex mouse on mode line
6bf7aab6
DL
355
356 You can use mouse clicks on window mode lines to select and manipulate
357windows.
358
359@table @kbd
360@item Mouse-1
099bfef9 361@kindex Mouse-1 @r{(mode line)}
6bf7aab6
DL
362@kbd{Mouse-1} on a mode line selects the window above. By dragging
363@kbd{Mouse-1} on the mode line, you can move it, thus changing the
364height of the windows above and below.
365
366@item Mouse-2
099bfef9 367@kindex Mouse-2 @r{(mode line)}
6bf7aab6
DL
368@kbd{Mouse-2} on a mode line expands that window to fill its frame.
369
370@item Mouse-3
099bfef9 371@kindex Mouse-3 @r{(mode line)}
92b432e8
EZ
372@kbd{Mouse-3} on a mode line deletes the window above. If the frame has
373only one window, it buries the current buffer instead and switches to
374another buffer.
6bf7aab6
DL
375
376@item C-Mouse-2
099bfef9 377@kindex C-mouse-2 @r{(mode line)}
6bf7aab6
DL
378@kbd{C-Mouse-2} on a mode line splits the window above
379horizontally, above the place in the mode line where you click.
380@end table
381
099bfef9 382@kindex C-Mouse-2 @r{(scroll bar)}
6bf7aab6 383 @kbd{C-Mouse-2} on a scroll bar splits the corresponding window
099bfef9
RS
384vertically, unless you are using an X toolkit's implentation of
385scroll bars. @xref{Split Window}.
6bf7aab6 386
099bfef9
RS
387 The commands above apply to areas of the mode line which do not have
388special mouse bindings of their own. Some areas, such as the buffer
389name and the major mode name, have their own special mouse bindings.
390Emacs displays information about these bindings when you hold the
391mouse over such a place.
70c88b57 392
6bf7aab6
DL
393@node Creating Frames
394@section Creating Frames
395@cindex creating frames
396
397@kindex C-x 5
398 The prefix key @kbd{C-x 5} is analogous to @kbd{C-x 4}, with parallel
399subcommands. The difference is that @kbd{C-x 5} commands create a new
400frame rather than just a new window in the selected frame (@pxref{Pop
401Up Window}). If an existing visible or iconified frame already displays
402the requested material, these commands use the existing frame, after
403raising or deiconifying as necessary.
404
405 The various @kbd{C-x 5} commands differ in how they find or create the
406buffer to select:
407
408@table @kbd
dc96827f
DL
409@item C-x 5 1
410@kindex C-x 5 1
411@findex delete-other-frames
412Delete all frames except the selected one (@code{delete-other-frames}).
6bf7aab6
DL
413@item C-x 5 2
414@kindex C-x 5 2
415@findex make-frame-command
416Create a new frame (@code{make-frame-command}).
417@item C-x 5 b @var{bufname} @key{RET}
418Select buffer @var{bufname} in another frame. This runs
419@code{switch-to-buffer-other-frame}.
420@item C-x 5 f @var{filename} @key{RET}
421Visit file @var{filename} and select its buffer in another frame. This
422runs @code{find-file-other-frame}. @xref{Visiting}.
423@item C-x 5 d @var{directory} @key{RET}
424Select a Dired buffer for directory @var{directory} in another frame.
425This runs @code{dired-other-frame}. @xref{Dired}.
426@item C-x 5 m
427Start composing a mail message in another frame. This runs
428@code{mail-other-frame}. It is the other-frame variant of @kbd{C-x m}.
429@xref{Sending Mail}.
430@item C-x 5 .
431Find a tag in the current tag table in another frame. This runs
432@code{find-tag-other-frame}, the multiple-frame variant of @kbd{M-.}.
433@xref{Tags}.
434@item C-x 5 r @var{filename} @key{RET}
435@kindex C-x 5 r
436@findex find-file-read-only-other-frame
437Visit file @var{filename} read-only, and select its buffer in another
438frame. This runs @code{find-file-read-only-other-frame}.
439@xref{Visiting}.
440@end table
441
442@cindex default-frame-alist
443@cindex initial-frame-alist
444 You can control the appearance of new frames you create by setting the
445frame parameters in @code{default-frame-alist}. You can use the
446variable @code{initial-frame-alist} to specify parameters that affect
447only the initial frame. @xref{Initial Parameters,,, elisp, The Emacs
448Lisp Reference Manual}, for more information.
449
450@cindex font (default)
451 The easiest way to specify the principal font for all your Emacs
452frames is with an X resource (@pxref{Font X}), but you can also do it by
453modifying @code{default-frame-alist} to specify the @code{font}
454parameter, as shown here:
455
456@example
457(add-to-list 'default-frame-alist '(font . "10x20"))
458@end example
459
099bfef9
RS
460@node Frame Commands
461@section Frame Commands
462
463 The following commands let you create, delete and operate on frames:
464
465@table @kbd
466@item C-z
467@kindex C-z @r{(X windows)}
468@findex iconify-or-deiconify-frame
469Iconify the selected Emacs frame (@code{iconify-or-deiconify-frame}).
470The normal meaning of @kbd{C-z}, to suspend Emacs, is not useful under a
471window system, so it has a different binding in that case.
472
473If you type this command on an Emacs frame's icon, it deiconifies the frame.
474
475@item C-x 5 0
476@kindex C-x 5 0
477@findex delete-frame
478Delete the selected frame (@code{delete-frame}). This is not allowed if
479there is only one frame.
480
481@item C-x 5 o
482@kindex C-x 5 o
483@findex other-frame
484Select another frame, raise it, and warp the mouse to it so that it
485stays selected. If you repeat this command, it cycles through all the
486frames on your terminal.
487
488@item C-x 5 1
489@kindex C-x 5 1
490@findex delete-other-frames
491Delete all frames except the selected one.
492@end table
493
6bf7aab6
DL
494@node Speedbar
495@section Making and Using a Speedbar Frame
496@cindex speedbar
497
498 An Emacs frame can have a @dfn{speedbar}, which is a vertical window
499that serves as a scrollable menu of files you could visit and tags
500within those files. To create a speedbar, type @kbd{M-x speedbar}; this
501creates a speedbar window for the selected frame. From then on, you can
502click on a file name in the speedbar to visit that file in the
503corresponding Emacs frame, or click on a tag name to jump to that tag in
504the Emacs frame.
505
506 Initially the speedbar lists the immediate contents of the current
507directory, one file per line. Each line also has a box, @samp{[+]} or
508@samp{<+>}, that you can click on with @kbd{Mouse-2} to ``open up'' the
509contents of that item. If the line names a directory, opening it adds
510the contents of that directory to the speedbar display, underneath the
511directory's own line. If the line lists an ordinary file, opening it up
512adds a list of the tags in that file to the speedbar display. When a
513file is opened up, the @samp{[+]} changes to @samp{[-]}; you can click
514on that box to ``close up'' that file (hide its contents).
515
516 Some major modes, including Rmail mode, Info, and GUD, have
517specialized ways of putting useful items into the speedbar for you to
518select. For example, in Rmail mode, the speedbar shows a list of Rmail
519files, and lets you move the current message to another Rmail file by
520clicking on its @samp{<M>} box.
521
522 A speedbar belongs to one Emacs frame, and always operates on that
523frame. If you use multiple frames, you can make a speedbar for some or
524all of the frames; type @kbd{M-x speedbar} in any given frame to make a
525speedbar for it.
526
527@node Multiple Displays
528@section Multiple Displays
529@cindex multiple displays
530
97878c08
EZ
531 A single Emacs can talk to more than one X display. Initially, Emacs
532uses just one display---the one specified with the @env{DISPLAY}
533environment variable or with the @samp{--display} option (@pxref{Initial
534Options}). To connect to another display, use the command
535@code{make-frame-on-display}:
6bf7aab6
DL
536
537@findex make-frame-on-display
538@table @kbd
539@item M-x make-frame-on-display @key{RET} @var{display} @key{RET}
540Create a new frame on display @var{display}.
541@end table
542
543 A single X server can handle more than one screen. When you open
544frames on two screens belonging to one server, Emacs knows they share a
545single keyboard, and it treats all the commands arriving from these
546screens as a single stream of input.
547
548 When you open frames on different X servers, Emacs makes a separate
549input stream for each server. This way, two users can type
550simultaneously on the two displays, and Emacs will not garble their
551input. Each server also has its own selected frame. The commands you
552enter with a particular X server apply to that server's selected frame.
553
554 Despite these features, people using the same Emacs job from different
555displays can still interfere with each other if they are not careful.
556For example, if any one types @kbd{C-x C-c}, that exits the Emacs job
557for all of them!
558
559@node Special Buffer Frames
560@section Special Buffer Frames
561
562@vindex special-display-buffer-names
563 You can make certain chosen buffers, for which Emacs normally creates
564a second window when you have just one window, appear in special frames
565of their own. To do this, set the variable
566@code{special-display-buffer-names} to a list of buffer names; any
567buffer whose name is in that list automatically gets a special frame,
568when an Emacs command wants to display it ``in another window.''
569
570 For example, if you set the variable this way,
571
572@example
573(setq special-display-buffer-names
574 '("*Completions*" "*grep*" "*tex-shell*"))
575@end example
576
577@noindent
578then completion lists, @code{grep} output and the @TeX{} mode shell
579buffer get individual frames of their own. These frames, and the
580windows in them, are never automatically split or reused for any other
581buffers. They continue to show the buffers they were created for,
582unless you alter them by hand. Killing the special buffer deletes its
583frame automatically.
584
585@vindex special-display-regexps
586 More generally, you can set @code{special-display-regexps} to a list
587of regular expressions; then a buffer gets its own frame if its name
588matches any of those regular expressions. (Once again, this applies only
589to buffers that normally get displayed for you in a separate window.)
590
591@vindex special-display-frame-alist
592 The variable @code{special-display-frame-alist} specifies the frame
593parameters for these frames. It has a default value, so you don't need
594to set it.
595
596 For those who know Lisp, an element of
597@code{special-display-buffer-names} or @code{special-display-regexps}
598can also be a list. Then the first element is the buffer name or
599regular expression; the rest of the list specifies how to create the
600frame. It can be an association list specifying frame parameter values;
601these values take precedence over parameter values specified in
602@code{special-display-frame-alist}. Alternatively, it can have this
603form:
604
605@example
606(@var{function} @var{args}...)
607@end example
608
609@noindent
610where @var{function} is a symbol. Then the frame is constructed by
611calling @var{function}; its first argument is the buffer, and its
612remaining arguments are @var{args}.
613
614 An analogous feature lets you specify buffers which should be
615displayed in the selected window. @xref{Force Same Window}. The
616same-window feature takes precedence over the special-frame feature;
617therefore, if you add a buffer name to
618@code{special-display-buffer-names} and it has no effect, check to see
619whether that feature is also in use for the same buffer name.
620
621@node Frame Parameters
622@section Setting Frame Parameters
623@cindex colors
624@cindex Auto-Raise mode
625@cindex Auto-Lower mode
626
627 This section describes commands for altering the display style and
628window management behavior of the selected frame.
629
630@findex set-foreground-color
631@findex set-background-color
632@findex set-cursor-color
633@findex set-mouse-color
634@findex set-border-color
635@findex auto-raise-mode
636@findex auto-lower-mode
637@table @kbd
638@item M-x set-foreground-color @key{RET} @var{color} @key{RET}
639Specify color @var{color} for the foreground of the selected frame.
640(This also changes the foreground color of the default face.)
641
642@item M-x set-background-color @key{RET} @var{color} @key{RET}
643Specify color @var{color} for the background of the selected frame.
644(This also changes the background color of the default face.)
645
646@item M-x set-cursor-color @key{RET} @var{color} @key{RET}
647Specify color @var{color} for the cursor of the selected frame.
648
649@item M-x set-mouse-color @key{RET} @var{color} @key{RET}
650Specify color @var{color} for the mouse cursor when it is over the
651selected frame.
652
653@item M-x set-border-color @key{RET} @var{color} @key{RET}
654Specify color @var{color} for the border of the selected frame.
655
656@item M-x list-colors-display
657Display the defined color names and show what the colors look like.
658This command is somewhat slow.
659
660@item M-x auto-raise-mode
661Toggle whether or not the selected frame should auto-raise. Auto-raise
662means that every time you move the mouse onto the frame, it raises the
663frame.
664
665Note that this auto-raise feature is implemented by Emacs itself. Some
666window managers also implement auto-raise. If you enable auto-raise for
667Emacs frames in your X window manager, it should work, but it is beyond
668Emacs's control and therefore @code{auto-raise-mode} has no effect on
669it.
670
671@item M-x auto-lower-mode
672Toggle whether or not the selected frame should auto-lower.
673Auto-lower means that every time you move the mouse off the frame,
674the frame moves to the bottom of the stack of X windows.
675
676The command @code{auto-lower-mode} has no effect on auto-lower
677implemented by the X window manager. To control that, you must use
678the appropriate window manager features.
679
680@findex set-frame-font
681@item M-x set-frame-font @key{RET} @var{font} @key{RET}
682@cindex font (principal)
683Specify font @var{font} as the principal font for the selected frame.
684The principal font controls several face attributes of the
685@code{default} face (@pxref{Faces}). For example, if the principal font
686has a height of 12 pt, all text will be drawn in 12 pt fonts, unless you
687use another face that specifies a different height. @xref{Font X}, for
688ways to list the available fonts on your system.
689
690@kindex S-Mouse-1
691You can also set a frame's principal font through a pop-up menu.
692Press @kbd{S-Mouse-1} to activate this menu.
693@end table
694
695 In Emacs versions that use an X toolkit, the color-setting and
696font-setting functions don't affect menus and the menu bar, since they
697are displayed by their own widget classes. To change the appearance of
698the menus and menu bar, you must use X resources (@pxref{Resources X}).
699@xref{Colors X}, regarding colors. @xref{Font X}, regarding choice of
700font.
701
702 For information on frame parameters and customization, see @ref{Frame
703Parameters,,, elisp, The Emacs Lisp Reference Manual}.
704
705@node Scroll Bars
706@section Scroll Bars
707@cindex Scroll Bar mode
708@cindex mode, Scroll Bar
709
710 When using X, Emacs normally makes a @dfn{scroll bar} at the left of
70c88b57
DL
711each Emacs window.@footnote{Placing it at the left is usually more
712useful with overlapping frames with text starting at the left margin.}
713The scroll bar runs the height of the window, and shows a moving
714rectangular inner box which represents the portion of the buffer
715currently displayed. The entire height of the scroll bar represents the
716entire length of the buffer.
6bf7aab6
DL
717
718 You can use @kbd{Mouse-2} (normally, the middle button) in the scroll
719bar to move or drag the inner box up and down. If you move it to the
720top of the scroll bar, you see the top of the buffer. If you move it to
721the bottom of the scroll bar, you see the bottom of the buffer.
722
723 The left and right buttons in the scroll bar scroll by controlled
724increments. @kbd{Mouse-1} (normally, the left button) moves the line at
725the level where you click up to the top of the window. @kbd{Mouse-3}
726(normally, the right button) moves the line at the top of the window
727down to the level where you click. By clicking repeatedly in the same
728place, you can scroll by the same distance over and over.
729
70de49cc 730 If you are using Emacs's own implementation of scroll bars, as opposed
d990421f
GM
731to scroll bars from an X toolkit, you can also click @kbd{C-Mouse-2} in
732the scroll bar to split a window vertically. The split occurs on the
733line where you click.
6bf7aab6
DL
734
735@findex scroll-bar-mode
70c88b57 736@vindex scroll-bar-mode
6bf7aab6
DL
737 You can enable or disable Scroll Bar mode with the command @kbd{M-x
738scroll-bar-mode}. With no argument, it toggles the use of scroll bars.
739With an argument, it turns use of scroll bars on if and only if the
740argument is positive. This command applies to all frames, including
70c88b57
DL
741frames yet to be created. Customize the option @code{scroll-bar-mode}
742to control the use of scroll bars at startup. You can use it to specify
743that they are placed at the right of windows if you prefer that. You
744can use the X resource @samp{verticalScrollBars} to control the initial
745setting of Scroll Bar mode similarly. @xref{Resources X}.
6bf7aab6
DL
746
747@findex toggle-scroll-bar
748 To enable or disable scroll bars for just the selected frame, use the
749@kbd{M-x toggle-scroll-bar} command.
750
70c88b57 751@node Wheeled Mice
099bfef9
RS
752@section Scrolling With ``Wheeled'' Mice
753
754@cindex mouse wheel
755@findex mouse-wheel-install
2684ed46 756 Some mice have a ``wheel'' instead of a third button. You can usually
099bfef9
RS
757click the wheel to act as @kbd{Mouse-3}. You can also use the wheel to
758scroll windows instead of using the scroll bar or keyboard commands.
759Use @kbd{M-x mouse-wheel-install} to set up the wheel for scrolling or put
760@samp{(require 'mouse-wheel)} in your @file{.emacs}. (Support for the wheel
761depends on the system generating appropriate events for Emacs.)
c08e161b
MB
762
763@vindex mouse-wheel-follow-mouse
764@vindex mouse-wheel-scroll-amount
099bfef9 765 The variables @code{mouse-wheel-follow-mouse} and
c08e161b
MB
766@code{mouse-wheel-scroll-amount} determine where and by how much
767buffers are scrolled.
70c88b57 768
6bf7aab6
DL
769@node Menu Bars
770@section Menu Bars
771@cindex Menu Bar mode
772@cindex mode, Menu Bar
773
774 You can turn display of menu bars on or off with @kbd{M-x
2beab0db
DL
775menu-bar-mode} or by customizing the option @code{menu-bar-mode}.
776With no argument, this command toggles Menu Bar mode, a
6bf7aab6
DL
777minor mode. With an argument, the command turns Menu Bar mode on if the
778argument is positive, off if the argument is not positive. You can use
779the X resource @samp{menuBarLines} to control the initial setting of
2beab0db
DL
780Menu Bar mode. @xref{Resources X}.
781
099bfef9
RS
782@kindex C-Mouse-3 @r{(when menu bar is disabled)}
783 Expert users often turn off the menu bar, especially on text-only
784terminals, where this makes one additional line available for text.
785If the menu bar is off, you can still pop up a menu of its contents
786with @kbd{C-Mouse-3} on a display which supports popup menus.
787@xref{Menu Mouse Clicks}.
6bf7aab6
DL
788
789 @xref{Menu Bar}, for information on how to invoke commands with the
790menu bar.
791
2beab0db
DL
792@node Tool Bars
793@section Tool Bars
794@cindex Tool Bar mode
795@cindex mode, Tool Bar
943a8bb7 796@cindex icons, tool bar
2beab0db 797
099bfef9
RS
798The @dfn{tool bar} is a line (or multiple lines) of icons at the top
799of the Emacs window. You can click on these icons with the mouse
800to do various jobs.
801
802The global tool bar contains general commands. Some major modes
803define their own tool bars to replace it. A few ``special'' modes
804that are not designed for ordinary editing remove some items from the
805global tool bar.
943a8bb7 806
099bfef9
RS
807Tool bars work only on a graphical display and only when Emacs is
808compiled with image support. The tool bar uses colored XPM icons if
809Emacs was built with XPM support. Otherwise, the tool bar uses
810monochrome icons (PBM or XBM format).
811
812You can turn display of tool bars on or off with @kbd{M-x
813tool-bar-mode}.
70c88b57
DL
814
815@node Dialog Boxes
816@section Using Dialog Boxes
817@cindex dialog boxes
818
819@vindex use-dialog-box
099bfef9
RS
820 A dialog box is a special kind of menu for asking you a yes-or-no
821question or some other special question. Many Emacs commands use a
822dialog box to ask a yes-or-no question, if you used the mouse to
823invoke the command to begin with.
824
825 You can customize the option @code{use-dialog-box} to suppress the
826use of dialog boxes. This also controls whether to use file selection
827windows (but those are not supported on all platforms).
70c88b57 828
6bf7aab6
DL
829@node Faces
830@section Using Multiple Typefaces
831@cindex faces
832
099bfef9
RS
833 When using Emacs with a window system, you can set up multiple
834styles of displaying characters. The aspects of style that you can
835control are the type font, the foreground color, the background color,
836and whether to underline. On non-windowed terminals (including
837MS-DOS, @pxref{MS-DOS}), Emacs supports faces to the extent the
838terminal can display them.
6bf7aab6
DL
839
840 The way you control display style is by defining named @dfn{faces}.
841Each face can specify a type font, a foreground color, a background
842color, and an underline flag; but it does not have to specify all of
843them. Then by specifying the face or faces to use for a given part
844of the text in the buffer, you control how that text appears.
845
846 The style of display used for a given character in the text is
847determined by combining several faces. Any aspect of the display style
848that isn't specified by overlays or text properties comes from the frame
849itself.
850
851 Enriched mode, the mode for editing formatted text, includes several
852commands and menus for specifying faces. @xref{Format Faces}, for how
853to specify the font for text in the buffer. @xref{Format Colors}, for
854how to specify the foreground and background color.
855
856 To alter the appearance of a face, use the customization buffer.
857@xref{Face Customization}. You can also use X resources to specify
858attributes of particular faces (@pxref{Resources X}).
859
d55dbe07
EZ
860@cindex face colors, setting
861@findex set-face-foreground
862@findex set-face-background
099bfef9 863 Alternatively, you can change the foreground and background colors
d55dbe07
EZ
864of a specific face with @kbd{M-x set-face-foreground} and @kbd{M-x
865set-face-background}. These commands prompt in the minibuffer for a
099bfef9 866face name and a color name, with completion, and then set that face to
d55dbe07
EZ
867use the specified color.
868
6bf7aab6
DL
869@findex list-faces-display
870 To see what faces are currently defined, and what they look like, type
871@kbd{M-x list-faces-display}. It's possible for a given face to look
872different in different frames; this command shows the appearance in the
873frame in which you type it. Here's a list of the standardly defined
874faces:
875
876@table @code
877@item default
878This face is used for ordinary text that doesn't specify any other face.
879@item modeline
70c88b57 880This face is used for mode lines. By default, it's drawn with shadows
099bfef9 881for a ``raised'' effect on window systems, and drawn as the inverse of
8748f1d7 882the default face on non-windowed terminals. @xref{Display Custom}.
70c88b57 883@item header-line
12f13704
EZ
884Similar to @code{modeline} for a window's header line. Most modes
885don't use the header line, but the Info mode does.
6bf7aab6
DL
886@item highlight
887This face is used for highlighting portions of text, in various modes.
12f13704 888For example, mouse-sensitive text is highlighted using this face.
6bf7aab6
DL
889@item region
890This face is used for displaying a selected region (when Transient Mark
891mode is enabled---see below).
892@item secondary-selection
12f13704 893This face is used for displaying a secondary X selection (@pxref{Secondary
6bf7aab6
DL
894Selection}).
895@item bold
896This face uses a bold variant of the default font, if it has one.
897@item italic
898This face uses an italic variant of the default font, if it has one.
899@item bold-italic
900This face uses a bold italic variant of the default font, if it has one.
901@item underline
902This face underlines text.
70c88b57
DL
903@item fixed-pitch
904The basic fixed-pitch face.
905@item fringe
12f13704
EZ
906@cindex fringe
907The face for the fringes to the left and right of windows on graphic
908displays. (The fringes are the narrow portions of the Emacs frame
909between the text area and the frame's border.)
70c88b57 910@item scroll-bar
12f13704 911This face determines the visual appearance of the scroll bar.
70c88b57
DL
912@item border
913This face determines the color of the frame border.
914@item cursor
915This face determines the color of the cursor.
916@item mouse
917This face determines the color of the mouse pointer.
918@item tool-bar
099bfef9
RS
919The basic tool-bar face. No text appears in the tool bar, but the
920colors of this face affect the appearance of tool bar icons.
70c88b57
DL
921@item menu
922This face determines the colors and font of Emacs's menus. Setting the
923font of LessTif/Motif menus is currently not supported; attempts to set
924the font are ignored in this case.
925@item trailing-whitespace
926The face for highlighting trailing whitespace when
927@code{show-trailing-whitespace} is non-nil.
928@item variable-pitch
929The basic variable-pitch face.
6bf7aab6
DL
930@end table
931
932@cindex @code{region} face
933 When Transient Mark mode is enabled, the text of the region is
934highlighted when the mark is active. This uses the face named
935@code{region}; you can control the style of highlighting by changing the
936style of this face (@pxref{Face Customization}). @xref{Transient Mark},
937for more information about Transient Mark mode and activation and
938deactivation of the mark.
939
940 One easy way to use faces is to turn on Font Lock mode. This minor
941mode, which is always local to a particular buffer, arranges to
942choose faces according to the syntax of the text you are editing. It
943can recognize comments and strings in most languages; in several
944languages, it can also recognize and properly highlight various other
945important constructs. @xref{Font Lock}, for more information about
946Font Lock mode and syntactic highlighting.
947
948 You can print out the buffer with the highlighting that appears
949on your screen using the command @code{ps-print-buffer-with-faces}.
70c88b57 950@xref{PostScript}.
6bf7aab6
DL
951
952@node Font Lock
953@section Font Lock mode
954@cindex Font Lock mode
955@cindex mode, Font Lock
4946337d 956@cindex syntax highlighting and coloring
6bf7aab6
DL
957
958 Font Lock mode is a minor mode, always local to a particular
959buffer, which highlights (or ``fontifies'') using various faces
960according to the syntax of the text you are editing. It can
961recognize comments and strings in most languages; in several
962languages, it can also recognize and properly highlight various other
963important constructs---for example, names of functions being defined
964or reserved keywords.
965
966@findex font-lock-mode
967@findex turn-on-font-lock
968 The command @kbd{M-x font-lock-mode} turns Font Lock mode on or off
969according to the argument, and toggles the mode when it has no argument.
970The function @code{turn-on-font-lock} unconditionally enables Font Lock
971mode. This is useful in mode-hook functions. For example, to enable
972Font Lock mode whenever you edit a C file, you can do this:
973
974@example
975(add-hook 'c-mode-hook 'turn-on-font-lock)
976@end example
977
978@findex global-font-lock-mode
70c88b57 979@vindex global-font-lock-mode
099bfef9
RS
980 To turn on Font Lock mode automatically in all modes which support
981it, customize the user option @code{global-font-lock-mode} or use the
982function @code{global-font-lock-mode} in your @file{.emacs} file, like
983this:
6bf7aab6
DL
984
985@example
986(global-font-lock-mode 1)
987@end example
988
099bfef9
RS
989 Font Lock mode uses several specifically named faces to do its job,
990including @code{font-lock-string-face}, @code{font-lock-comment-face},
991and others. The easiest way to find them all is to use completion
992on the face name in @code{set-face-foreground}.
993
d55dbe07 994 To change the colors or the fonts used by Font Lock mode to fontify
099bfef9
RS
995different parts of text, just change these faces. There are
996two ways to do it:
d55dbe07
EZ
997
998@itemize @bullet
999@item
099bfef9
RS
1000Invoke @kbd{M-x set-face-foreground} or @kbd{M-x set-face-background}
1001to change the colors of a particular face used by Font Lock.
1002@xref{Faces}. The command @kbd{M-x list-faces-display} displays all
1003the faces currently known to Emacs, including those used by Font Lock.
d55dbe07
EZ
1004
1005@item
1006Customize the faces interactively with @kbd{M-x customize-face}, as
1007described in @ref{Face Customization}.
1008@end itemize
1009
6bf7aab6
DL
1010@kindex M-g M-g
1011@findex font-lock-fontify-block
1012 In Font Lock mode, when you edit the text, the highlighting updates
1013automatically in the line that you changed. Most changes don't affect
1014the highlighting of subsequent lines, but occasionally they do. To
1015rehighlight a range of lines, use the command @kbd{M-g M-g}
1016(@code{font-lock-fontify-block}).
1017
1018@vindex font-lock-mark-block-function
1019 In certain major modes, @kbd{M-g M-g} refontifies the entire current
1020function. (The variable @code{font-lock-mark-block-function} controls
1021how to find the current function.) In other major modes, @kbd{M-g M-g}
1022refontifies 16 lines above and below point.
1023
1024 With a prefix argument @var{n}, @kbd{M-g M-g} refontifies @var{n}
1025lines above and below point, regardless of the mode.
1026
1027 To get the full benefit of Font Lock mode, you need to choose a
1028default font which has bold, italic, and bold-italic variants; or else
1029you need to have a color or gray-scale screen.
1030
1031@vindex font-lock-maximum-decoration
1032 The variable @code{font-lock-maximum-decoration} specifies the
1033preferred level of fontification, for modes that provide multiple
1034levels. Level 1 is the least amount of fontification; some modes
1035support levels as high as 3. The normal default is ``as high as
1036possible.'' You can specify an integer, which applies to all modes, or
1037you can specify different numbers for particular major modes; for
1038example, to use level 1 for C/C++ modes, and the default level
1039otherwise, use this:
1040
1041@example
1042(setq font-lock-maximum-decoration
1043 '((c-mode . 1) (c++-mode . 1)))
1044@end example
1045
1046@vindex font-lock-maximum-size
1047 Fontification can be too slow for large buffers, so you can suppress
1048it. The variable @code{font-lock-maximum-size} specifies a buffer size,
1049beyond which buffer fontification is suppressed.
1050
1051@c @w is used below to prevent a bad page-break.
1052@vindex font-lock-beginning-of-syntax-function
1053 Comment and string fontification (or ``syntactic'' fontification)
1054relies on analysis of the syntactic structure of the buffer text. For
1055the purposes of speed, some modes including C mode and Lisp mode rely on
1056a special convention: an open-parenthesis in the leftmost column always
1057defines the @w{beginning} of a defun, and is thus always outside any string
1058or comment. (@xref{Defuns}.) If you don't follow this convention,
1059then Font Lock mode can misfontify the text after an open-parenthesis in
1060the leftmost column that is inside a string or comment.
1061
1062 The variable @code{font-lock-beginning-of-syntax-function} (always
1063buffer-local) specifies how Font Lock mode can find a position
1064guaranteed to be outside any comment or string. In modes which use the
1065leftmost column parenthesis convention, the default value of the variable
1066is @code{beginning-of-defun}---that tells Font Lock mode to use the
1067convention. If you set this variable to @code{nil}, Font Lock no longer
1068relies on the convention. This avoids incorrect results, but the price
1069is that, in some cases, fontification for a changed text must rescan
1070buffer text from the beginning of the buffer.
1071
1072@findex font-lock-add-keywords
1073 Font Lock highlighting patterns already exist for many modes, but you
1074may want to fontify additional patterns. You can use the function
1075@code{font-lock-add-keywords}, to add your own highlighting patterns for
1076a particular mode. For example, to highlight @samp{FIXME:} words in C
1077comments, use this:
1078
1079@example
1080(font-lock-add-keywords
1081 'c-mode
1082 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))
1083@end example
1084
6bf7aab6
DL
1085@node Highlight Changes
1086@section Highlight Changes Mode
1087
1088@findex highlight-changes-mode
1089 Use @kbd{M-x highlight-changes-mode} to enable a minor mode
1090that uses faces (colors, typically) to indicate which parts of
1091the buffer were changed most recently.
1092
c5feaf54 1093@node Highlight Interactively
099bfef9
RS
1094@section Interactive Highlighting by Matching
1095@cindex highlighting by matching
c5feaf54 1096@cindex interactive highlighting
099bfef9
RS
1097
1098 It is sometimes useful to highlight the strings that match a certain
1099regular expression. For example, you might wish to see all the
1100references to a certain variable in a program source file, or highlight
1101certain parts in a voluminous output of some program, or make certain
1102cliches stand out in an article.
c5feaf54
EZ
1103
1104@findex hi-lock-mode
1105 Use the @kbd{M-x hi-lock-mode} command to turn on a minor mode that
099bfef9
RS
1106allows you to specify regular expressions of the text to be
1107highlighted. Hi-lock mode works like Font Lock (@pxref{Font Lock}),
1108except that it lets you specify explicitly what parts of text to
1109highlight. You control Hi-lock mode with these commands:
c5feaf54
EZ
1110
1111@table @kbd
099bfef9 1112@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
4946337d 1113@kindex C-x w h
c5feaf54 1114@findex highlight-regexp
4946337d 1115Highlight text that matches
099bfef9
RS
1116@var{regexp} using face @var{face} (@code{highlight-regexp}).
1117By using this command more than once, you can highlight various
1118parts of the text in different ways.
c5feaf54 1119
099bfef9 1120@item C-x w r @var{regexp} @key{RET}
c5feaf54
EZ
1121@kindex C-x w r
1122@findex unhighlight-regexp
099bfef9
RS
1123Unhighlight @var{regexp} (@code{unhighlight-regexp}). You must enter
1124one of the regular expressions currently specified for highlighting.
1125(You can use completion, or a menu, to enter one of them
1126conveniently.)
c5feaf54 1127
099bfef9 1128@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
c5feaf54
EZ
1129@kindex C-x w l
1130@findex highlight-lines-matching-regexp
1131@cindex lines, highlighting
1132@cindex highlighting lines of text
099bfef9
RS
1133Highlight lines containing a match for @var{regexp}, using face
1134@var{face} (@code{highlight-lines-matching-regexp}).
c5feaf54
EZ
1135
1136@item C-x w b
1137@kindex C-x w b
1138@findex hi-lock-write-interactive-patterns
099bfef9
RS
1139Insert all the current highlighting regexp/face pairs into the buffer
1140at point, with comment delimiters to prevent them from changing your
1141program. This key binding runs the
1142@code{hi-lock-write-interactive-patterns} command.
1143
1144These patterns will be read the next time you visit the file while
1145Hi-lock mode is enabled, or whenever you use the @kbd{M-x
1146hi-lock-find-patterns} command.
c5feaf54
EZ
1147
1148@item C-x w i
1149@kindex C-x w i
1150@findex hi-lock-find-patterns
1151@vindex hi-lock-exclude-modes
099bfef9
RS
1152Re-read regexp/face pairs in the current buffer
1153(@code{hi-lock-write-interactive-patterns}). The list of pairs is
1154found no matter where in the buffer it may be.
c5feaf54 1155
099bfef9
RS
1156This command does nothing if the major mode is a member of the list
1157@code{hi-lock-exclude-modes}.
1158@end table
c5feaf54 1159
70c88b57
DL
1160@node Trailing Whitespace
1161@section Trailing Whitespace
1162
1163@cindex trailing whitespace
43391ff3 1164@cindex whitespace, trailing
70c88b57 1165@vindex show-trailing-whitespace
099bfef9
RS
1166 It is easy to leave unnecessary spaces at the end of a line without
1167realizing it. In most cases, this @dfn{trailing whitespace} has no
1168effect, but there are special circumstances where it matters.
1169
1170 You can make trailing whitespace visible on the screen by setting
1171the variable @code{show-trailing-whitespace} to @code{t}. Then Emacs
1172displays trailing whitespace in the face @code{trailing-whitespace}.
1173
1174 Trailing whitespace is defined as spaces or tabs at the end of a
1175line. But trailing whitespace is not displayed specially if point is
1176at the end of the line containing the whitespace. (Doing that looks
1177ugly while you are typing in new text, and the location of point is
1178enough in that case to show you that the spaces are present.)
1179
1180@vindex indicate-empty-lines
1181@vindex default-indicate-empty-lines
1182@cindex empty lines
1183 Emacs can indicate empty lines at the end of the buffer with a
1184special bitmap on the left fringe of the window. To enable this
1185feature, set the buffer-local variable @code{indicate-empty-lines} to
1186a non-@code{nil} value. The default value of this variable is
1187controlled by the variable @code{default-indicate-empty-lines};
1188by setting that variable, you can enable or disable this feature
1189for all new buffers.
70c88b57
DL
1190
1191@node Tooltips
099bfef9 1192@section Tooltips (or ``Balloon Help'')
70c88b57
DL
1193
1194@cindex balloon help
099bfef9 1195 Tooltips are small X windows displaying a help string at the current
d9701e91
DL
1196mouse position, typically over text---including the mode line---which
1197can be activated with the mouse or other keys. (This facility is
2684ed46 1198sometimes known as @dfn{balloon help}.) Help text may be available for
099bfef9 1199menu items too.
d9701e91 1200
099bfef9
RS
1201@findex tooltip-mode
1202 To use tooltips, enable Tooltip mode with the command @kbd{M-x
1203tooltip-mode}. The customization group @code{tooltip} controls
1204various aspects of how tooltips work. When Tooltip mode is disabled,
1205the help text is displayed in the echo area instead.
70c88b57 1206
099bfef9 1207As of Emacs 21.1, tooltips are not supported on MS-Windows.
9638f5c2 1208
43391ff3
DL
1209@node Mouse Avoidance
1210@section Mouse Avoidance
099bfef9
RS
1211@cindex avoiding mouse in the way of your typing
1212@cindex mouse avoidance
43391ff3 1213
099bfef9 1214@vindex mouse-avoidance-mode
43391ff3 1215Mouse Avoidance mode keeps the window system mouse pointer away from
099bfef9
RS
1216point, to avoid obscuring text. Whenever it moves the mouse, it also
1217raises the frame. To use Mouse Avoidance mode, customize the option
1218@code{mouse-avoidance-mode}. You can set this to various values to
1219move the mouse in several ways:
43391ff3
DL
1220
1221@table @code
1222@item banish
1223Move the mouse to the upper-right corner on any keypress;
1224@item exile
1225Move the mouse to the corner only if the cursor gets too close,
1226and allow it to return once the cursor is out of the way;
1227@item jump
1228If the cursor gets too close to the mouse, displace the mouse
1229a random distance & direction;
1230@item animate
1231As @code{jump}, but shows steps along the way for illusion of motion;
1232@item cat-and-mouse
1233The same as @code{animate};
1234@item proteus
1235As @code{animate}, but changes the shape of the mouse pointer too.
1236@end table
1237
099bfef9
RS
1238@findex mouse-avoidance-mode
1239You can also use the command @kbd{M-x mouse-avoidance-mode} to enable
43391ff3 1240the mode.
70c88b57 1241
6bf7aab6
DL
1242@node Non-Window Terminals
1243@section Non-Window Terminals
1244@cindex non-window terminals
1245@cindex single-frame terminals
1246
1247 If your terminal does not have a window system that Emacs supports,
1248then it can display only one Emacs frame at a time. However, you can
1249still create multiple Emacs frames, and switch between them. Switching
1250frames on these terminals is much like switching between different
1251window configurations.
1252
1253 Use @kbd{C-x 5 2} to create a new frame and switch to it; use @kbd{C-x
12545 o} to cycle through the existing frames; use @kbd{C-x 5 0} to delete
1255the current frame.
1256
1257 Each frame has a number to distinguish it. If your terminal can
1258display only one frame at a time, the selected frame's number @var{n}
1259appears near the beginning of the mode line, in the form
1260@samp{F@var{n}}.
1261
1262@findex set-frame-name
1263@findex select-frame-by-name
1264 @samp{F@var{n}} is actually the frame's name. You can also specify a
1265different name if you wish, and you can select a frame by its name. Use
1266the command @kbd{M-x set-frame-name @key{RET} @var{name} @key{RET}} to
1267specify a new name for the selected frame, and use @kbd{M-x
1268select-frame-by-name @key{RET} @var{name} @key{RET}} to select a frame
1269according to its name. The name you specify appears in the mode line
1270when the frame is selected.
1271
70c88b57
DL
1272@node XTerm Mouse
1273@section Using a Mouse in Terminal Emulators
43391ff3
DL
1274@cindex xterm, mouse support
1275@cindex terminal emulators, mouse support
70c88b57
DL
1276
1277Some terminal emulators under X support mouse clicks in the terminal
1278window. In a terminal emulator which is compatible with @code{xterm},
1279you can use @kbd{M-x xterm-mouse-mode} to enable simple use of the
1280mouse---only single clicks are supported. The normal @code{xterm} mouse
1281functionality is still available by holding down the @kbd{SHIFT} key
1282when you press the mouse button.