]> code.delx.au - gnu-emacs/blob - man/display.texi
Minor changes in previous change.
[gnu-emacs] / man / display.texi
1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997, 2000 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node Display, Search, Registers, Top
5 @chapter Controlling the Display
6
7 Since only part of a large buffer fits in the window, Emacs tries to
8 show a part that is likely to be interesting. Display-control commands
9 allow you to specify which part of the text you want to see, and how to
10 display it.
11
12 @menu
13 * Scrolling:: Moving text up and down in a window.
14 * Horizontal Scrolling:: Moving text left and right in a window.
15 * Follow Mode:: Follow mode lets two windows scroll as one.
16 * Selective Display:: Hiding lines with lots of indentation.
17 * Optional Mode Line:: Optional mode line display features.
18 * Text Display:: How text characters are normally displayed.
19 * Display Custom:: Information on variables for customizing display.
20 @end menu
21
22 @node Scrolling
23 @section Scrolling
24
25 If a buffer contains text that is too large to fit entirely within a
26 window that is displaying the buffer, Emacs shows a contiguous portion of
27 the text. The portion shown always contains point.
28
29 @cindex scrolling
30 @dfn{Scrolling} means moving text up or down in the window so that
31 different parts of the text are visible. Scrolling forward means that text
32 moves up, and new text appears at the bottom. Scrolling backward moves
33 text down and new text appears at the top.
34
35 Scrolling happens automatically if you move point past the bottom or top
36 of the window. You can also explicitly request scrolling with the commands
37 in this section.
38
39 @table @kbd
40 @item C-l
41 Clear screen and redisplay, scrolling the selected window to center
42 point vertically within it (@code{recenter}).
43 @item C-v
44 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
45 @item @key{NEXT}
46 Likewise, scroll forward.
47 @item M-v
48 Scroll backward (@code{scroll-down}).
49 @item @key{PRIOR}
50 Likewise, scroll backward.
51 @item @var{arg} C-l
52 Scroll so point is on line @var{arg} (@code{recenter}).
53 @item C-M-l
54 Scroll heuristically to bring useful information onto the screen
55 (@code{reposition-window}).
56 @end table
57
58 @kindex C-l
59 @findex recenter
60 The most basic scrolling command is @kbd{C-l} (@code{recenter}) with
61 no argument. It clears the entire screen and redisplays all windows.
62 In addition, it scrolls the selected window so that point is halfway
63 down from the top of the window.
64
65 @kindex C-v
66 @kindex M-v
67 @kindex NEXT
68 @kindex PRIOR
69 @findex scroll-up
70 @findex scroll-down
71 The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
72 in the window up or down a few lines. @kbd{C-v} (@code{scroll-up}) with an
73 argument shows you that many more lines at the bottom of the window, moving
74 the text and point up together as @kbd{C-l} might. @kbd{C-v} with a
75 negative argument shows you more lines at the top of the window.
76 @kbd{M-v} (@code{scroll-down}) is like @kbd{C-v}, but moves in the
77 opposite direction. The function keys @key{NEXT} and @key{PRIOR} are
78 equivalent to @kbd{C-v} and @kbd{M-v}.
79
80 The names of scroll commands are based on the direction that the text
81 moves in the window. Thus, the command to scroll forward is called
82 @code{scroll-up} because it moves the text upward on the screen.
83
84 @vindex next-screen-context-lines
85 To read the buffer a windowful at a time, use @kbd{C-v} with no argument.
86 It takes the last two lines at the bottom of the window and puts them at
87 the top, followed by nearly a whole windowful of lines not previously
88 visible. If point was in the text scrolled off the top, it moves to the
89 new top of the window. @kbd{M-v} with no argument moves backward with
90 overlap similarly. The number of lines of overlap across a @kbd{C-v} or
91 @kbd{M-v} is controlled by the variable @code{next-screen-context-lines}; by
92 default, it is 2.
93
94 @vindex scroll-preserve-screen-position
95 Some users like the full-screen scroll commands to keep point at the
96 same screen line. To enable this behavior, set the variable
97 @code{scroll-preserve-screen-position} to a non-@code{nil} value. This
98 mode is convenient for browsing through a file by scrolling by
99 screenfuls; if you come back to the screen where you started, point goes
100 back to the line where it started. However, this mode is inconvenient
101 when you move to the next screen in order to move point to the text
102 there.
103
104 Another way to do scrolling is with @kbd{C-l} with a numeric argument.
105 @kbd{C-l} does not clear the screen when given an argument; it only scrolls
106 the selected window. With a positive argument @var{n}, it repositions text
107 to put point @var{n} lines down from the top. An argument of zero puts
108 point on the very top line. Point does not move with respect to the text;
109 rather, the text and point move rigidly on the screen. @kbd{C-l} with a
110 negative argument puts point that many lines from the bottom of the window.
111 For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u
112 - 5 C-l} puts it five lines from the bottom. Just @kbd{C-u} as argument,
113 as in @kbd{C-u C-l}, scrolls point to the center of the selected window.
114
115 @kindex C-M-l
116 @findex reposition-window
117 The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
118 window heuristically in a way designed to get useful information onto
119 the screen. For example, in a Lisp file, this command tries to get the
120 entire current defun onto the screen if possible.
121
122 @vindex scroll-conservatively
123 Scrolling happens automatically if point has moved out of the visible
124 portion of the text when it is time to display. Normally, automatic
125 scrolling centers point vertically within the window. However, if you
126 set @code{scroll-conservatively} to a small number @var{n}, then if you
127 move point just a little off the screen---less than @var{n} lines---then
128 Emacs scrolls the text just far enough to bring point back on screen.
129 By default, @code{scroll-conservatively} is 0.
130
131 @cindex aggressive scrolling
132 @vindex scroll-up-aggressively
133 @vindex scroll-down-aggressively
134 When the window does scroll by a longer distance, you can control
135 how aggressively it scrolls, by setting the variables
136 @code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
137 The value of @code{scroll-up-aggressively} should be either
138 @code{nil}, or a fraction @var{f} between 0 and 1. A fraction
139 specifies where on the screen to put point when scrolling upward.
140 More precisely, when a window scrolls up because point is above the
141 window start, the new start position is chosen to put point @var{f}
142 part of the window height from the top. The larger @var{f}, the more
143 aggressive the scrolling.
144
145 @code{nil}, which is the default, scrolls to put point at the center.
146 So it is equivalent to .5.
147
148 Likewise, @code{scroll-down-aggressively} is used for scrolling
149 down. The value, @var{f}, specifies how far point should be placed
150 from the bottom of the window; thus, as with
151 @code{scroll-up-aggressively}, a larger value is more aggressive.
152
153 @vindex scroll-margin
154 The variable @code{scroll-margin} restricts how close point can come
155 to the top or bottom of a window. Its value is a number of screen
156 lines; if point comes within that many lines of the top or bottom of the
157 window, Emacs recenters the window. By default, @code{scroll-margin} is
158 0.
159
160 @node Horizontal Scrolling
161 @section Horizontal Scrolling
162 @cindex horizontal scrolling
163
164 @dfn{Horizontal scrolling} means shifting all the lines sideways
165 within a window---so that some of the text near the left margin is not
166 displayed at all. Emacs does this automatically, in any window that
167 uses line truncation rather than continuation: whenever point moves
168 off the left or right edge of the screen, Emacs scrolls the buffer
169 horizontally to make point visible.
170
171 When a window has been scrolled horizontally, text lines are truncated
172 rather than continued (@pxref{Continuation Lines}), with a @samp{$}
173 appearing in the first column when there is text truncated to the left,
174 and in the last column when there is text truncated to the right.
175
176 You can use these commands to do explicit horizontal scrolling.
177
178 @table @kbd
179 @item C-x <
180 Scroll text in current window to the left (@code{scroll-left}).
181 @item C-x >
182 Scroll to the right (@code{scroll-right}).
183 @end table
184
185 @kindex C-x <
186 @kindex C-x >
187 @findex scroll-left
188 @findex scroll-right
189 The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
190 window to the left by @var{n} columns with argument @var{n}. This moves
191 part of the beginning of each line off the left edge of the window.
192 With no argument, it scrolls by almost the full width of the window (two
193 columns less, to be precise).
194
195 @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The
196 window cannot be scrolled any farther to the right once it is displayed
197 normally (with each line starting at the window's left margin);
198 attempting to do so has no effect. This means that you don't have to
199 calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large
200 argument will restore the normal display.
201
202 If you scroll a window horizontally by hand, that sets a lower bound
203 for automatic horizontal scrolling. Automatic scrolling will continue
204 to scroll the window, but never further to the right than the amount
205 you previously set by @code{scroll-left}.
206
207 @vindex automatic-hscrolling
208 To disable automatic horizontal scrolling, set the variable
209 @code{automatic-hscrolling} to @code{nil}.
210
211 @node Follow Mode
212 @section Follow Mode
213 @cindex Follow mode
214 @cindex mode, Follow
215
216 @dfn{Follow mode} is a minor mode that makes two windows showing the
217 same buffer scroll as one tall ``virtual window.'' To use Follow mode,
218 go to a frame with just one window, split it into two side-by-side
219 windows using @kbd{C-x 3}, and then type @kbd{M-x follow-mode}. From
220 then on, you can edit the buffer in either of the two windows, or scroll
221 either one; the other window follows it.
222
223 To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
224
225 @node Selective Display
226 @section Selective Display
227 @findex set-selective-display
228 @kindex C-x $
229
230 Emacs has the ability to hide lines indented more than a certain number
231 of columns (you specify how many columns). You can use this to get an
232 overview of a part of a program.
233
234 To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
235 numeric argument @var{n}. Then lines with at least @var{n} columns of
236 indentation disappear from the screen. The only indication of their
237 presence is that three dots (@samp{@dots{}}) appear at the end of each
238 visible line that is followed by one or more hidden ones.
239
240 The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
241 if they were not there.
242
243 The hidden lines are still present in the buffer, and most editing
244 commands see them as usual, so you may find point in the middle of the
245 hidden text. When this happens, the cursor appears at the end of the
246 previous line, after the three dots. If point is at the end of the
247 visible line, before the newline that ends it, the cursor appears before
248 the three dots.
249
250 To make all lines visible again, type @kbd{C-x $} with no argument.
251
252 @vindex selective-display-ellipses
253 If you set the variable @code{selective-display-ellipses} to
254 @code{nil}, the three dots do not appear at the end of a line that
255 precedes hidden lines. Then there is no visible indication of the
256 hidden lines. This variable becomes local automatically when set.
257
258 @node Optional Mode Line
259 @section Optional Mode Line Features
260
261 @cindex line number display
262 @cindex display of line number
263 @findex line-number-mode
264 The current line number of point appears in the mode line when Line
265 Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
266 turn this mode on and off; normally it is on. The line number appears
267 before the buffer percentage @var{pos}, with the letter @samp{L} to
268 indicate what it is. @xref{Minor Modes}, for more information about
269 minor modes and about how to use this command.
270
271 @vindex line-number-display-limit
272 If the buffer is very large (larger than the value of
273 @code{line-number-display-limit}), then the line number doesn't appear.
274 Emacs doesn't compute the line number when the buffer is large, because
275 that would be too slow. Set it to @code{nil} to remove the limit. If
276 you have narrowed the buffer (@pxref{Narrowing}), the displayed line
277 number is relative to the accessible portion of the buffer.
278
279 @cindex Column Number mode
280 @cindex mode, Column Number
281 @findex column-number-mode
282 You can also display the current column number by turning on Column
283 Number mode. It displays the current column number preceded by the
284 letter @samp{C}. Type @kbd{M-x column-number-mode} to toggle this mode.
285
286 @findex display-time
287 @cindex time (on mode line)
288 Emacs can optionally display the time and system load in all mode
289 lines. To enable this feature, type @kbd{M-x display-time} or customize
290 the option @code{display-time-mode}. The information added to the mode
291 line usually appears after the buffer name, before the mode names and
292 their parentheses. It looks like this:
293
294 @example
295 @var{hh}:@var{mm}pm @var{l.ll}
296 @end example
297
298 @noindent
299 @vindex display-time-24hr-format
300 Here @var{hh} and @var{mm} are the hour and minute, followed always by
301 @samp{am} or @samp{pm}. @var{l.ll} is the average number of running
302 processes in the whole system recently. (Some fields may be missing if
303 your operating system cannot support them.) If you prefer time display
304 in 24-hour format, set the variable @code{display-time-24hr-format}
305 to @code{t}.
306
307 @cindex mail (on mode line)
308 @vindex display-time-use-mail-icon
309 @vindex display-time-mail-face
310 The word @samp{Mail} appears after the load level if there is mail
311 for you that you have not read yet. On a graphical display you can use
312 an icon instead of @samp{Mail} by customizing
313 @code{display-time-use-mail-icon}; this may save some space on the mode
314 line. You can customize @code{display-time-mail-face} to make the mail
315 indicator prominent.
316
317 @cindex mode line, 3D appearence
318 @cindex attributes of mode line, changing
319 @cindex non-integral number of lines in a window
320 By default, the mode line is drawn on graphics displays as a 3D
321 released button. Depending on the font used for the mode line's text,
322 this might make the mode line use more space than a text line in a
323 window, and cause the last line of the window be partially obscured.
324 That is, the window displays a non-integral number of text lines. If
325 you don't like this effect, you can disable the 3D appearence of the
326 mode line by customizing the attributes of the @code{mode-line} face in
327 your @file{.emacs} init file, like this:
328
329 @example
330 (set-face-attribute 'mode-line nil :box nil)
331 @end example
332
333 @noindent
334 Alternatively, you could turn off the box attribute in your
335 @file{.Xdefaults} file:
336
337 @example
338 Emacs.mode-line.AttributeBox: off
339 @end example
340
341 @node Text Display
342 @section How Text Is Displayed
343 @cindex characters (in text)
344
345 ASCII printing characters (octal codes 040 through 0176) in Emacs
346 buffers are displayed with their graphics. So are non-ASCII multibyte
347 printing characters (octal codes above 0400).
348
349 Some ASCII control characters are displayed in special ways. The
350 newline character (octal code 012) is displayed by starting a new line.
351 The tab character (octal code 011) is displayed by moving to the next
352 tab stop column (normally every 8 columns).
353
354 Other ASCII control characters are normally displayed as a caret
355 (@samp{^}) followed by the non-control version of the character; thus,
356 control-A is displayed as @samp{^A}.
357
358 Non-ASCII characters 0200 through 0237 (octal) are displayed with
359 octal escape sequences; thus, character code 0230 (octal) is displayed
360 as @samp{\230}. The display of character codes 0240 through 0377
361 (octal) may be either as escape sequences or as graphics. They do not
362 normally occur in multibyte buffers but if they do, they are displayed
363 as Latin-1 graphics. In unibyte mode, if you enable European display
364 they are displayed using their graphics (assuming your terminal supports
365 them), otherwise as escape sequences. @xref{Single-Byte Character
366 Support}.
367
368 @node Display Custom
369 @section Customization of Display
370
371 This section contains information for customization only. Beginning
372 users should skip it.
373
374 @vindex mode-line-inverse-video
375 The variable @code{mode-line-inverse-video} is an obsolete way of
376 controlling whether the mode line is displayed in inverse video; the
377 preferred way of doing this is to change the @code{mode-line} face.
378 @xref{Mode Line}. If you specify the foreground color for the
379 @code{mode-line} face, and @code{mode-line-inverse-video} is
380 non-@code{nil}, then the default background color for that face is the
381 usual foreground color. @xref{Faces}.
382
383 @vindex inverse-video
384 If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
385 to invert all the lines of the display from what they normally are.
386
387 @vindex visible-bell
388 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
389 to make the whole screen blink when it would normally make an audible bell
390 sound. This variable has no effect if your terminal does not have a way
391 to make the screen blink.@refill
392
393 @vindex no-redraw-on-reenter
394 When you reenter Emacs after suspending, Emacs normally clears the
395 screen and redraws the entire display. On some terminals with more than
396 one page of memory, it is possible to arrange the termcap entry so that
397 the @samp{ti} and @samp{te} strings (output to the terminal when Emacs
398 is entered and exited, respectively) switch between pages of memory so
399 as to use one page for Emacs and another page for other output. Then
400 you might want to set the variable @code{no-redraw-on-reenter}
401 non-@code{nil}; this tells Emacs to assume, when resumed, that the
402 screen page it is using still contains what Emacs last wrote there.
403
404 @vindex echo-keystrokes
405 The variable @code{echo-keystrokes} controls the echoing of multi-character
406 keys; its value is the number of seconds of pause required to cause echoing
407 to start, or zero meaning don't echo at all. @xref{Echo Area}.
408
409 @vindex ctl-arrow
410 If the variable @code{ctl-arrow} is @code{nil}, control characters in
411 the buffer are displayed with octal escape sequences, except for newline
412 and tab. Altering the value of @code{ctl-arrow} makes it local to the
413 current buffer; until that time, the default value is in effect. The
414 default is initially @code{t}. @xref{Display Tables,, Display Tables,
415 elisp, The Emacs Lisp Reference Manual}.
416
417 @vindex tab-width
418 Normally, a tab character in the buffer is displayed as whitespace which
419 extends to the next display tab stop position, and display tab stops come
420 at intervals equal to eight spaces. The number of spaces per tab is
421 controlled by the variable @code{tab-width}, which is made local by
422 changing it, just like @code{ctl-arrow}. Note that how the tab character
423 in the buffer is displayed has nothing to do with the definition of
424 @key{TAB} as a command. The variable @code{tab-width} must have an
425 integer value between 1 and 1000, inclusive.
426
427 @c @vindex truncate-lines @c No index entry here, because we have one
428 @c in the continuation section.
429 If the variable @code{truncate-lines} is non-@code{nil}, then each
430 line of text gets just one screen line for display; if the text line is
431 too long, display shows only the part that fits. If
432 @code{truncate-lines} is @code{nil}, then long text lines display as
433 more than one screen line, enough to show the whole text of the line.
434 @xref{Continuation Lines}. Altering the value of @code{truncate-lines}
435 makes it local to the current buffer; until that time, the default value
436 is in effect. The default is initially @code{nil}.
437
438 @c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
439 If the variable @code{truncate-partial-width-windows} is
440 non-@code{nil}, it forces truncation rather than continuation in any
441 window less than the full width of the screen or frame, regardless of
442 the value of @code{truncate-lines}. For information about side-by-side
443 windows, see @ref{Split Window}. See also @ref{Display,, Display,
444 elisp, The Emacs Lisp Reference Manual}.
445
446 @vindex baud-rate
447 The variable @code{baud-rate} holds the output speed of the
448 terminal, as far as Emacs knows. Setting this variable does not
449 change the speed of actual data transmission, but the value is used
450 for calculations. On terminals, it affects padding, and decisions
451 about whether to scroll part of the screen or redraw it instead.
452
453 On window-systems, @code{baud-rate} is only used to determine how
454 frequently to look for pending input during display updating. A
455 higher value of @code{baud-rate} means that check for pending input
456 will be done less frequently.
457
458 You can customize the way any particular character code is displayed
459 by means of a display table. @xref{Display Tables,, Display Tables,
460 elisp, The Emacs Lisp Reference Manual}.
461
462 @findex hl-line-mode
463 @findex blink-cursor-mode
464 @cindex cursor, locating visually
465 @cindex cursor, blinking
466 There are a number of ways to customize the display of the cursor.
467 @kbd{M-x hl-line-mode} enables or disables a global minor mode which
468 highlights the line around point. On window systems, the command
469 @kbd{M-x blink-cursor-mode} turns on or off the blinking of the
470 cursor. (On terminals, the terminal itself blinks the cursor, and
471 Emacs has no control over it.)
472
473 You can customize the cursor's color, and whether it blinks, using
474 the @code{cursor} Custom group (@pxref{Easy Customization}).