* sieve-manage.el (sieve-manage-parse-capability-1): Loosely match OK response.
[bpt/emacs.git] / doc / emacs / display.texi
CommitLineData
802b0ea7 1@c This is part of the Emacs manual.
b65d8176 2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001,
6ed161e1 3@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
6bf7aab6
DL
4@c See file emacs.texi for copying conditions.
5@node Display, Search, Registers, Top
6@chapter Controlling the Display
7
8 Since only part of a large buffer fits in the window, Emacs tries to
43d67313 9show a part that is likely to be interesting. Display-control
956c76ef
CY
10commands and variables allow you to specify which part of the text you
11want to see, and how to display it.
6bf7aab6
DL
12
13@menu
43d67313
RS
14* Scrolling:: Commands to move text up and down in a window.
15* Auto Scrolling:: Redisplay scrolls text automatically when needed.
54952612
RS
16* Horizontal Scrolling:: Moving text left and right in a window.
17* Follow Mode:: Follow mode lets two windows scroll as one.
b8f3a9e3 18* Faces:: How to change the display style using faces.
43d08eb9 19* Standard Faces:: Emacs' predefined faces.
956c76ef 20* Temporary Face Changes:: Commands to temporarily modify the default text face
b8f3a9e3 21* Font Lock:: Minor mode for syntactic highlighting using faces.
b8f3a9e3 22* Highlight Interactively:: Tell Emacs what text to highlight.
fad78d58 23* Fringes:: Enabling or disabling window fringes.
9d2908a6 24* Displaying Boundaries:: Displaying top and bottom of the buffer.
fad78d58 25* Useless Whitespace:: Showing possibly-spurious trailing whitespace.
6bf7aab6
DL
26* Selective Display:: Hiding lines with lots of indentation.
27* Optional Mode Line:: Optional mode line display features.
28* Text Display:: How text characters are normally displayed.
099bfef9 29* Cursor Display:: Features for displaying the cursor.
9d2908a6
RS
30* Line Truncation:: Truncating lines to fit the screen width instead
31 of continuing them to multiple screen lines.
458db4b6 32* Visual Line Mode:: Word wrap and screen line-based editing.
0015d677 33* Display Custom:: Information on variables for customizing display.
6bf7aab6
DL
34@end menu
35
dc917bd9
RS
36@node Scrolling
37@section Scrolling
38
39 If a buffer contains text that is too large to fit entirely within a
40window that is displaying the buffer, Emacs shows a contiguous portion of
41the text. The portion shown always contains point.
42
43@cindex scrolling
44 @dfn{Scrolling} means moving text up or down in the window so that
45different parts of the text are visible. Scrolling ``forward'' or
46``up'' means that text moves up, and new text appears at the bottom.
47Scrolling ``backward'' or ``down'' moves text down, and new text
48appears at the top.
49
50 Scrolling happens automatically if you move point past the bottom or
956c76ef
CY
51top of the window. You can also scroll explicitly with these
52commands:
dc917bd9
RS
53
54@table @kbd
55@item C-l
91ed7ea8
CY
56Scroll the selected window so that the current line is the center-most
57text line; on subsequent consecutive invocations, make the current
58line the top-most line, the bottom-most line, and so forth in cyclic
59order; also, maybe redisplay the screen (@code{recenter-top-bottom}).
dc917bd9 60@item C-v
b5700de6
CY
61@itemx @key{next}
62@itemx @key{PageDown}
956c76ef 63Scroll forward by nearly a full window (@code{scroll-up}).
dc917bd9 64@item M-v
b5700de6
CY
65@itemx @key{prior}
66@itemx @key{PageUp}
956c76ef 67Scroll backward (@code{scroll-down}).
dc917bd9
RS
68@item C-M-l
69Scroll heuristically to bring useful information onto the screen
70(@code{reposition-window}).
71@end table
72
73@kindex C-l
956c76ef 74@findex recenter-top-bottom
91ed7ea8
CY
75 @kbd{C-l} (@code{recenter-top-bottom}) is a basic scrolling command.
76It @dfn{recenters} the selected window, scrolling it so that the
77current screen line is exactly in the center of the window, or as
78close to the center as possible.
956c76ef
CY
79
80 Typing @kbd{C-l} twice in a row (@kbd{C-l C-l}) scrolls the window
81so that point is on the topmost screen line. Typing a third @kbd{C-l}
82scrolls the window so that point is on the bottom-most screen line.
83Each successive @kbd{C-l} cycles through these three screen positions.
91ed7ea8
CY
84
85@vindex recenter-positions
86 You can change the cycling order by customizing the list variable
87@code{recenter-positions}. Each list element should be the symbol
88@code{top}, @code{middle}, or @code{bottom}, or a number; an integer
89number means to move the line to the specified screen line, while a
90floating-point number between 0.0 and 1.0 specifies a percentage of
91the screen space from the top. The default, @code{(middle top
92bottom)}, is the cycling order described above. Furthermore, if you
93change the variable @code{scroll-margin} to a non-zero value @var{n},
94Emacs always leaves @var{n} screen lines between point and the top or
95bottom of the window (@pxref{Auto Scrolling}).
956c76ef
CY
96
97 You can also supply @kbd{C-l} with a prefix argument. With a plain
98prefix argument, @kbd{C-u C-l}, Emacs simply recenters point. With a
99positive argument @var{n}, it scrolls to place point @var{n} lines
100down from the top of the window. An argument of zero puts point on
101the topmost line. A negative argument @var{-n} puts point @var{n}
102lines from the bottom of the window. For example, @kbd{C-u - 1 C-l}
103puts point on the bottom line, and @kbd{C-u - 5 C-l} puts it five
104lines from the bottom. When given an argument, @kbd{C-l} does not
105clear the screen or cycle through different screen positions.
dc917bd9 106
91ed7ea8
CY
107 The more primitive command @code{recenter} behaves like
108@code{recenter-top-bottom}, but does not cycle among screen positions.
109Prior to Emacs 23, @kbd{C-l} was bound to @code{recenter}.
110
666e158e 111@vindex recenter-redisplay
91ed7ea8
CY
112 If the variable @code{recenter-redisplay} has a non-@code{nil}
113value, Emacs clears and redisplays the screen each time @kbd{C-l}
114recenters the window; the special value @code{tty} (the default) says
115to do this on text-terminal frames only. Redisplaying is useful in
116case the screen becomes garbled for any reason (@pxref{Screen
117Garbled}).
666e158e 118
dc917bd9
RS
119@kindex C-v
120@kindex M-v
b5700de6
CY
121@kindex next
122@kindex prior
123@kindex PageDown
124@kindex PageUp
dc917bd9
RS
125@findex scroll-up
126@findex scroll-down
91ed7ea8 127 To read the buffer a windowful at a time, type @kbd{C-v}
956c76ef
CY
128(@code{scroll-up}). This scrolls forward by nearly the whole window
129height. The effect is to take the two lines at the bottom of the
130window and put them at the top, followed by lines that were not
131previously visible. If point was in the text that scrolled off the
132top, it ends up at the new top of the window.
133
134 @kbd{M-v} (@code{scroll-down}) scrolls backward in a similar way.
dc917bd9 135
43d67313 136@vindex next-screen-context-lines
956c76ef
CY
137 The variable @code{next-screen-context-lines} controls the number of
138lines of overlap left by @kbd{C-v} or @kbd{M-v}; by default, it is 2.
b5700de6 139The function keys @key{next} and @key{prior}, or @key{PageDown} and
956c76ef
CY
140@key{PageUp}, are equivalent to @kbd{C-v} and @kbd{M-v} respectively.
141
142 You can supply @kbd{C-v} or @kbd{M-v} with a numeric prefix argument
143@var{n}. This scrolls the window by @var{n} lines, while attempting
144to leave point unchanged (so that the text and point move up or down
145together). @kbd{C-v} with a negative argument is like @kbd{M-v} and
146vice versa.
dc917bd9
RS
147
148 The names of scroll commands are based on the direction that the
149text moves in the window. Thus, the command to scroll forward is
150called @code{scroll-up} because it moves the text upward on the
956c76ef 151screen. The keys @key{PageUp} and @key{PageDown} derive their names
dc917bd9 152and customary meanings from a different convention that developed
956c76ef 153elsewhere; hence the strange result that @key{PageDown} runs
dc917bd9
RS
154@code{scroll-up}.
155
156@vindex scroll-preserve-screen-position
157 Some users like the full-screen scroll commands to keep point at the
956c76ef
CY
158same screen position. To enable this behavior, set the variable
159@code{scroll-preserve-screen-position} to a non-@code{nil} value.
160Then, whenever a command scrolls the text around point offscreen (or
161within @code{scroll-margin} lines of the edge), Emacs moves point to
162keep it at the same vertical and horizontal position within the
163window. This mode is convenient for browsing through a file by
164scrolling by screenfuls; if you come back to the screen where you
165started, point goes back to the line where it started.
dc917bd9
RS
166
167@kindex C-M-l
168@findex reposition-window
169 The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current
170window heuristically in a way designed to get useful information onto
171the screen. For example, in a Lisp file, this command tries to get the
172entire current defun onto the screen if possible.
173
43d67313
RS
174@node Auto Scrolling
175@section Automatic Scrolling
176
956c76ef
CY
177 Emacs performs @dfn{automatic scrolling} when point moves out of the
178visible portion of the text.
179
dc917bd9 180@vindex scroll-conservatively
956c76ef
CY
181 Normally, this centers point vertically within the window. However,
182if you set @code{scroll-conservatively} to a small number @var{n},
183then if you move point just a little off the screen (less than @var{n}
184lines), Emacs scrolls the text just far enough to bring point back on
185screen. By default, @code{scroll-conservatively} is@tie{}0.
dc917bd9
RS
186
187@cindex aggressive scrolling
188@vindex scroll-up-aggressively
189@vindex scroll-down-aggressively
190 When the window does scroll by a longer distance, you can control
956c76ef 191how aggressively it scrolls by setting the variables
dc917bd9
RS
192@code{scroll-up-aggressively} and @code{scroll-down-aggressively}.
193The value of @code{scroll-up-aggressively} should be either
194@code{nil}, or a fraction @var{f} between 0 and 1. A fraction
956c76ef
CY
195specifies where on the screen to put point when scrolling upward: when
196a window scrolls up because point is above the window start, the new
197start position is chosen to put point @var{f} parts of the window
198height from the top. Thus, larger @var{f} means more aggressive
199scrolling. The default value, @code{nil}, is equivalent to 0.5.
dc917bd9
RS
200
201 Likewise, @code{scroll-down-aggressively} is used for scrolling
956c76ef
CY
202down. The value specifies how far point should be placed from the
203bottom of the window; thus, as with @code{scroll-up-aggressively}, a
204larger value is more aggressive.
dc917bd9
RS
205
206@vindex scroll-margin
207 The variable @code{scroll-margin} restricts how close point can come
208to the top or bottom of a window. Its value is a number of screen
956c76ef
CY
209lines; if point comes within that many lines of the top or bottom of
210the window, Emacs performs automatic scrolling. By default,
211@code{scroll-margin} is 0.
dc917bd9
RS
212
213@node Horizontal Scrolling
214@section Horizontal Scrolling
215@cindex horizontal scrolling
216
956c76ef 217@vindex auto-hscroll-mode
dc917bd9 218 @dfn{Horizontal scrolling} means shifting all the lines sideways
956c76ef
CY
219within a window, so that some of the text near the left margin is not
220displayed. When the text in a window is scrolled horizontally, text
221lines are truncated rather than continued (@pxref{Line Truncation}).
222If a window shows truncated lines, Emacs performs automatic horizontal
223scrolling whenever point moves off the left or right edge of the
224screen. To disable automatic horizontal scrolling, set the variable
6308321a
EZ
225@code{auto-hscroll-mode} to @code{nil}. Note that when the automatic
226horizontal scrolling is turned off, if point moves off the edge of the
227screen, the cursor disappears to indicate that. (On text-mode
228terminals, the cursor is left at the edge instead.)
956c76ef
CY
229
230@vindex hscroll-margin
231 The variable @code{hscroll-margin} controls how close point can get
6308321a
EZ
232to the window's edges before automatic scrolling occurs. It is
233measured in columns. For example, if the value is 5, then moving
234point within 5 columns of an edge causes horizontal scrolling away
235from that edge.
956c76ef
CY
236
237@vindex hscroll-step
238 The variable @code{hscroll-step} determines how many columns to
239scroll the window when point gets too close to the edge. Zero, the
240default value, means to center point horizontally within the window.
241A positive integer value specifies the number of columns to scroll by.
242A floating-point number specifies the fraction of the window's width
243to scroll by.
244
245 You can also perform explicit horizontal scrolling with the
246following commands:
dc917bd9
RS
247
248@table @kbd
249@item C-x <
250Scroll text in current window to the left (@code{scroll-left}).
251@item C-x >
252Scroll to the right (@code{scroll-right}).
253@end table
254
255@kindex C-x <
256@kindex C-x >
257@findex scroll-left
258@findex scroll-right
6308321a
EZ
259 @kbd{C-x <} (@code{scroll-left}) scrolls text in the selected window
260to the left by the full width of the window, less two columns. (In
261other words, the text in the window moves left relative to the
262window.) With a numeric argument @var{n}, it scrolls by @var{n}
263columns.
264
265 If the text is scrolled to the left, and point moves off the left
266edge of the window, the cursor will freeze at the left edge of the
267window, until point moves back to the displayed portion of the text.
268This is independent of the current setting of
269@code{auto-hscroll-mode}, which, for text scrolled to the left, only
270affects the behavior at the right edge of the window.
956c76ef
CY
271
272 @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right.
273The window cannot be scrolled any farther to the right once it is
274displayed normally, with each line starting at the window's left
275margin; attempting to do so has no effect. This means that you don't
276have to calculate the argument precisely for @w{@kbd{C-x >}}; any
277sufficiently large argument will restore the normal display.
dc917bd9
RS
278
279 If you use those commands to scroll a window horizontally, that sets
280a lower bound for automatic horizontal scrolling. Automatic scrolling
281will continue to scroll the window, but never farther to the right
282than the amount you previously set by @code{scroll-left}.
283
dc917bd9
RS
284@node Follow Mode
285@section Follow Mode
286@cindex Follow mode
287@cindex mode, Follow
288@findex follow-mode
289@cindex windows, synchronizing
290@cindex synchronizing windows
291
292 @dfn{Follow mode} is a minor mode that makes two windows, both
293showing the same buffer, scroll as a single tall ``virtual window.''
294To use Follow mode, go to a frame with just one window, split it into
295two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x
296follow-mode}. From then on, you can edit the buffer in either of the
297two windows, or scroll either one; the other window follows it.
298
299 In Follow mode, if you move point outside the portion visible in one
300window and into the portion visible in the other window, that selects
301the other window---again, treating the two as if they were parts of
302one large window.
303
304 To turn off Follow mode, type @kbd{M-x follow-mode} a second time.
305
b8f3a9e3 306@node Faces
b18a8f7f 307@section Faces: Controlling Text Display Style
b8f3a9e3
GM
308@cindex faces
309
956c76ef 310 Emacs can display text in several different styles, which are called
0015d677 311@dfn{faces}. Each face can specify various @dfn{face attributes},
956c76ef
CY
312such as the font, height, weight and slant, the foreground and
313background color, and underlining or overlining. A face does not have
314to specify all of these attributes; often it inherits most of them
315from another face.
306da12e 316
956c76ef
CY
317 On a text-only terminal, not all face attributes are meaningful.
318Some text-only terminals support inverse video, bold, and underline
319attributes; some support colors. Text-only terminals generally do not
320support changing the height, width or font.
c1b45553 321
b18a8f7f
RS
322 Most major modes assign faces to the text automatically through the
323work of Font Lock mode. @xref{Font Lock}, for more information about
324Font Lock mode and syntactic highlighting. You can print the current
325buffer with the highlighting that appears on your screen using the
326command @code{ps-print-buffer-with-faces}. @xref{PostScript}.
43d08eb9 327
956c76ef 328 Enriched mode, the mode for editing formatted text, provides
0073fd65 329commands and menus for specifying faces for text in the buffer.
956c76ef 330@xref{Format Faces}.
b8f3a9e3
GM
331
332@cindex face colors, setting
0073fd65
RS
333 To alter the appearance of a face, use the customization buffer.
334@xref{Face Customization}. You can also use X resources to specify
956c76ef
CY
335attributes of any particular face (@pxref{Resources}). When
336displaying a character, any attribute that isn't specified by its face
337is taken from the @code{default} face, whose attributes reflect the
338default settings of the frame itself.
339
340@findex set-face-foreground
341@findex set-face-background
342 You can also change the foreground and background colors of a
343specific face with @kbd{M-x set-face-foreground} and @kbd{M-x
344set-face-background}. These commands prompt in the minibuffer for a
345face name and a color name, with completion, and then set that face to
346use the specified color. @xref{Face Customization}, for information
347about color names. These commands affect the face colors on all
348frames, both existing and those to be created in the future. These
349changes do not, however, persist for future Emacs sessions; to make
350lasting changes, use the customization buffer (@pxref{Face
351Customization}).
352
353 You can also set foreground and background colors for the current
354frame only; see @ref{Frame Parameters}.
355
356 Emacs can display variable-width fonts, but some of the Emacs
357commands that calculate width and indentation do not know how to
358calculate variable widths. This can sometimes lead to incorrect
359results when you use variable-width fonts. In particular, indentation
360commands can give inconsistent results, so we recommend you avoid
361variable-width fonts, especially for editing program source code.
b8f3a9e3 362
43d08eb9
RS
363@node Standard Faces
364@section Standard Faces
365
b8f3a9e3 366@findex list-faces-display
43d08eb9
RS
367 To see what faces are currently defined, and what they look like,
368type @kbd{M-x list-faces-display}. It's possible for a given face to
369look different in different frames; this command shows the appearance
93339ade
CY
370in the frame in which you type it. With a prefix argument, this
371prompts for a regular expression, and displays only faces with names
372matching that regular expression.
3b91a16d 373
54952612
RS
374 Here are the standard faces for specifying text appearance. You can
375apply them to specific text when you want the effects they produce.
b8f3a9e3
GM
376
377@table @code
378@item default
54952612 379This face is used for ordinary text that doesn't specify any face.
43d08eb9 380@item bold
956c76ef 381This face uses a bold variant of the default font.
43d08eb9 382@item italic
956c76ef 383This face uses an italic variant of the default font.
43d08eb9 384@item bold-italic
956c76ef 385This face uses a bold italic variant of the default font.
43d08eb9
RS
386@item underline
387This face underlines text.
388@item fixed-pitch
956c76ef
CY
389This face forces use of a fixed-width font. It's reasonable to
390customize this face to use a different fixed-width font, if you like,
391but you should not make it a variable-width font.
43d08eb9 392@item variable-pitch
956c76ef 393This face forces use of a variable-width font.
3b91a16d
JL
394@item shadow
395This face is used for making the text less noticeable than the surrounding
396ordinary text. Usually this can be achieved by using shades of gray in
397contrast with either black or white default foreground color.
43d08eb9
RS
398@end table
399
400 Here's an incomplete list of faces used to highlight parts of the
401text temporarily for specific purposes. (Many other modes define
402their own faces for this purpose.)
403
404@table @code
405@item highlight
406This face is used for highlighting portions of text, in various modes.
407For example, mouse-sensitive text is highlighted using this face.
43d08eb9 408@item isearch
956c76ef
CY
409This face is used for highlighting the current Isearch match
410(@pxref{Incremental Search}).
54952612 411@item query-replace
956c76ef
CY
412This face is used for highlighting the current Query Replace match
413(@pxref{Replace}).
43d08eb9
RS
414@item lazy-highlight
415This face is used for lazy highlighting of Isearch and Query Replace
416matches other than the current one.
417@item region
04eaab7d 418This face is used for displaying a selected region (@pxref{Mark}).
43d08eb9
RS
419@item secondary-selection
420This face is used for displaying a secondary X selection (@pxref{Secondary
421Selection}).
422@item trailing-whitespace
3b91a16d
JL
423The face for highlighting excess spaces and tabs at the end of a line
424when @code{show-trailing-whitespace} is non-@code{nil}; see
425@ref{Useless Whitespace}.
43d08eb9 426@item nobreak-space
5a7f4c1b 427The face for displaying the character ``nobreak space.''
43d08eb9
RS
428@item escape-glyph
429The face for highlighting the @samp{\} or @samp{^} that indicates
430a control character. It's also used when @samp{\} indicates a
431nobreak space or nobreak (soft) hyphen.
43d08eb9
RS
432@end table
433
43d08eb9
RS
434 These faces control the appearance of parts of the Emacs frame.
435They exist as faces to provide a consistent way to customize the
436appearance of these parts of the frame.
437
438@table @code
b8f3a9e3 439@item mode-line
3b91a16d
JL
440This face is used for the mode line of the currently selected window,
441and for menu bars when toolkit menus are not used. By default, it's
54952612 442drawn with shadows for a ``raised'' effect on graphical displays, and
3b91a16d 443drawn as the inverse of the default face on non-windowed terminals.
b9e58bf2
EZ
444@item mode-line-inactive
445Like @code{mode-line}, but used for mode lines of the windows other
446than the selected one (if @code{mode-line-in-non-selected-windows} is
ac6875fc
RS
447non-@code{nil}). This face inherits from @code{mode-line}, so changes
448in that face affect mode lines in all windows.
d545c9fd
JL
449@item mode-line-highlight
450Like @code{highlight}, but used for portions of text on mode lines.
451@item mode-line-buffer-id
452This face is used for buffer identification parts in the mode line.
b8f3a9e3 453@item header-line
54952612
RS
454Similar to @code{mode-line} for a window's header line, which appears
455at the top of a window just as the mode line appears at the bottom.
456Most windows do not have a header line---only some special modes, such
457Info mode, create one.
53abc3bf 458@item vertical-border
58f1b4d8
JL
459This face is used for the vertical divider between windows.
460By default this face inherits from the @code{mode-line-inactive} face
54952612 461on character terminals. On graphical displays the foreground color of
58f1b4d8
JL
462this face is used for the vertical line between windows without
463scrollbars.
3094ad7a 464@item minibuffer-prompt
3b91a16d
JL
465@cindex @code{minibuffer-prompt} face
466@vindex minibuffer-prompt-properties
3094ad7a 467This face is used for the prompt strings displayed in the minibuffer.
3b91a16d
JL
468By default, Emacs automatically adds this face to the value of
469@code{minibuffer-prompt-properties}, which is a list of text
43d67313
RS
470properties used to display the prompt text. (This variable takes
471effect when you enter the minibuffer.)
b8f3a9e3 472@item fringe
3b91a16d 473@cindex @code{fringe} face
b8f3a9e3
GM
474The face for the fringes to the left and right of windows on graphic
475displays. (The fringes are the narrow portions of the Emacs frame
940627fe 476between the text area and the window's right and left borders.)
43d08eb9 477@xref{Fringes}.
b8f3a9e3
GM
478@item scroll-bar
479This face determines the visual appearance of the scroll bar.
43d08eb9 480@xref{Scroll Bars}.
b8f3a9e3
GM
481@item border
482This face determines the color of the frame border.
483@item cursor
484This face determines the color of the cursor.
485@item mouse
486This face determines the color of the mouse pointer.
487@item tool-bar
54952612 488This face determines the color of tool bar icons. @xref{Tool Bars}.
b8f3a9e3 489@item tooltip
43d08eb9 490This face is used for tooltips. @xref{Tooltips}.
b8f3a9e3 491@item menu
9e6bb19f
EZ
492@cindex menu bar appearance
493@cindex @code{menu} face, no effect if customized
494@cindex customization of @code{menu} face
495This face determines the colors and font of Emacs's menus. @xref{Menu
956c76ef
CY
496Bars}. This has no effect in Emacs built with GTK and in the
497MS-Windows/Mac ports; you need to use system-wide styles and options
498to change the appearance of GTK, Windows, or Mac menus. Setting the
499font of LessTif/Motif menus is currently not supported; attempts to
500set the font are ignored in this case.
b8f3a9e3
GM
501@end table
502
956c76ef
CY
503@node Temporary Face Changes
504@section Temporary Face Changes
505
506The following commands change the default face within a buffer.
507
508@cindex adjust buffer face height
509@findex text-scale-adjust
510@kindex C-x C-+
511@kindex C-x C--
512@kindex C-x C-=
513@kindex C-x C-0
514 To increase the height of the default face in the current buffer,
515type @kbd{C-x C-+} or @kbd{C-x C-=}. To decrease it, type @kbd{C-x
516C--}. To restore the default (global) face height, type @kbd{C-x
517C-0}. These keys are all bound to the same command,
518@code{text-scale-adjust}, which looks at the last key typed to
519determine which action to take.
520
521 The final key of these commands may be repeated without the leading
522@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face
523height by three steps. Each step scales the height of the default
524face by the value of the variable @code{text-scale-mode-step}. As a
525special case, an argument of 0 removes any scaling currently active.
526
527@cindex increase buffer face height
528@findex text-scale-increase
529@cindex decrease buffer face height
530@findex text-scale-decrease
531 The commands @code{text-scale-increase} and
532@code{text-scale-decrease} increase or decrease the height of the
533default face, just like @kbd{C-x C-+} and @kbd{C-x C--} respectively.
534You may find it convenient to bind to these commands, rather than
535@code{text-scale-adjust}.
536
05fbc4a9
MB
537@cindex set buffer face height
538@findex text-scale-set
539The command @code{text-scale-set} sets the height of the default face
540in the current buffer to an absolute level specified by its prefix
541argument.
542
956c76ef
CY
543@findex text-scale-mode
544 The above commands automatically enable or disable the minor mode
545@code{text-scale-mode}, depending on whether the current font scaling
546is other than 1 or not.
547
548@cindex variable pitch mode
549@findex variable-pitch-mode
550 To temporarily change the face in the current buffer to a
551variable-pitch (``proportional'') font, use the command @kbd{M-x
552variable-pitch-mode} to enable or disable the Variable Pitch minor
553mode.
554
b8f3a9e3
GM
555@node Font Lock
556@section Font Lock mode
557@cindex Font Lock mode
558@cindex mode, Font Lock
559@cindex syntax highlighting and coloring
560
8cc11660 561 Font Lock mode is a minor mode, always local to a particular buffer,
0015d677 562which highlights (or ``fontifies'') the buffer contents according to
8cc11660 563the syntax of the text you are editing. It can recognize comments and
956c76ef
CY
564strings in most programming languages; in several languages, it can
565also recognize and properly highlight various other important
566constructs, such as names of functions being defined or reserved
567keywords. Some special modes, such as Occur mode and Info mode, have
568completely specialized ways of assigning fonts for Font Lock mode.
b8f3a9e3
GM
569
570@findex font-lock-mode
c4e8acbc
CY
571 Font Lock mode is turned on by default in all modes which support it.
572You can toggle font-lock for each buffer with the command @kbd{M-x
573font-lock-mode}. Using a positive argument unconditionally turns Font
574Lock mode on, and a negative or zero argument turns it off.
b8f3a9e3
GM
575
576@findex global-font-lock-mode
577@vindex global-font-lock-mode
c4e8acbc
CY
578 If you do not wish Font Lock mode to be turned on by default,
579customize the variable @code{global-font-lock-mode} using the Customize
580interface (@pxref{Easy Customization}), or use the function
d239287a 581@code{global-font-lock-mode} in your @file{.emacs} file, like this:
b8f3a9e3
GM
582
583@example
c4e8acbc 584(global-font-lock-mode 0)
b8f3a9e3
GM
585@end example
586
43d67313
RS
587@noindent
588This variable, like all the variables that control Font Lock mode,
589take effect whenever fontification is done; that is, potentially at
590any time.
591
c4e8acbc 592@findex turn-on-font-lock
54952612
RS
593 If you have disabled Global Font Lock mode, you can still enable Font
594Lock for specific major modes by adding the function
c4e8acbc
CY
595@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For
596example, to enable Font Lock mode for editing C files, you can do this:
597
598@example
599(add-hook 'c-mode-hook 'turn-on-font-lock)
600@end example
0015d677 601
b8f3a9e3
GM
602 Font Lock mode uses several specifically named faces to do its job,
603including @code{font-lock-string-face}, @code{font-lock-comment-face},
54952612
RS
604and others. The easiest way to find them all is to use @kbd{M-x
605customize-group @key{RET} font-lock-faces @key{RET}}. You can then
606use that customization buffer to customize the appearance of these
607faces. @xref{Face Customization}.
b8f3a9e3 608
b8f3a9e3
GM
609@vindex font-lock-maximum-decoration
610 The variable @code{font-lock-maximum-decoration} specifies the
611preferred level of fontification, for modes that provide multiple
612levels. Level 1 is the least amount of fontification; some modes
613support levels as high as 3. The normal default is ``as high as
614possible.'' You can specify an integer, which applies to all modes, or
615you can specify different numbers for particular major modes; for
616example, to use level 1 for C/C++ modes, and the default level
617otherwise, use this:
618
619@example
620(setq font-lock-maximum-decoration
621 '((c-mode . 1) (c++-mode . 1)))
622@end example
623
624@vindex font-lock-maximum-size
625 Fontification can be too slow for large buffers, so you can suppress
54952612
RS
626it for buffers above a certain size. The variable
627@code{font-lock-maximum-size} specifies a buffer size, beyond which
628buffer fontification is suppressed.
b8f3a9e3
GM
629
630@c @w is used below to prevent a bad page-break.
631@vindex font-lock-beginning-of-syntax-function
e07e854d
EZ
632@cindex incorrect fontification
633@cindex parenthesis in column zero and fontification
634@cindex brace in column zero and fontification
b8f3a9e3
GM
635 Comment and string fontification (or ``syntactic'' fontification)
636relies on analysis of the syntactic structure of the buffer text. For
174862cf
RS
637the sake of speed, some modes, including Lisp mode, rely on a special
638convention: an open-parenthesis or open-brace in the leftmost column
639always defines the @w{beginning} of a defun, and is thus always
640outside any string or comment. (@xref{Left Margin Paren}.) If you
641don't follow this convention, Font Lock mode can misfontify the text
642that follows an open-parenthesis or open-brace in the leftmost column
643that is inside a string or comment.
b8f3a9e3 644
6bb2ed9b 645@cindex slow display during scrolling
b8f3a9e3
GM
646 The variable @code{font-lock-beginning-of-syntax-function} (always
647buffer-local) specifies how Font Lock mode can find a position
648guaranteed to be outside any comment or string. In modes which use the
649leftmost column parenthesis convention, the default value of the variable
650is @code{beginning-of-defun}---that tells Font Lock mode to use the
651convention. If you set this variable to @code{nil}, Font Lock no longer
652relies on the convention. This avoids incorrect results, but the price
653is that, in some cases, fontification for a changed text must rescan
6bb2ed9b
EZ
654buffer text from the beginning of the buffer. This can considerably
655slow down redisplay while scrolling, particularly if you are close to
656the end of a large buffer.
b8f3a9e3
GM
657
658@findex font-lock-add-keywords
659 Font Lock highlighting patterns already exist for many modes, but you
660may want to fontify additional patterns. You can use the function
661@code{font-lock-add-keywords}, to add your own highlighting patterns for
662a particular mode. For example, to highlight @samp{FIXME:} words in C
663comments, use this:
664
665@example
a152877d
SM
666(add-hook 'c-mode-hook
667 (lambda ()
668 (font-lock-add-keywords nil
669 '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t)))))
b8f3a9e3
GM
670@end example
671
4063fff3
EZ
672@findex font-lock-remove-keywords
673 To remove keywords from the font-lock highlighting patterns, use the
cd77ce13 674function @code{font-lock-remove-keywords}. @xref{Search-based
956c76ef 675Fontification,,, elisp, The Emacs Lisp Reference Manual}.
4063fff3 676
3be9b0ca
EZ
677@cindex just-in-time (JIT) font-lock
678@cindex background syntax highlighting
679 Fontifying large buffers can take a long time. To avoid large
680delays when a file is visited, Emacs fontifies only the visible
681portion of a buffer. As you scroll through the buffer, each portion
956c76ef
CY
682that becomes visible is fontified as soon as it is displayed; this
683type of Font Lock is called @dfn{Just-In-Time} (or @dfn{JIT}) Lock.
684You can control how JIT Lock behaves, including telling it to perform
685fontification while idle, by customizing variables in the
686customization group @samp{jit-lock}. @xref{Specific Customization}.
3be9b0ca 687
b8f3a9e3 688@node Highlight Interactively
54952612 689@section Interactive Highlighting
b8f3a9e3
GM
690@cindex highlighting by matching
691@cindex interactive highlighting
54952612 692@cindex Highlight Changes mode
b8f3a9e3 693
54952612 694@findex highlight-changes-mode
956c76ef
CY
695Highlight Changes mode is a minor mode that @dfn{highlights} the parts
696of the buffer were changed most recently, by giving that text a
697different face. To enable or disable Highlight Changes mode, use
698@kbd{M-x highlight-changes-mode}.
b8f3a9e3 699
54952612 700@cindex Hi Lock mode
b8f3a9e3 701@findex hi-lock-mode
956c76ef
CY
702 Hi Lock mode is a minor mode that highlights text that matches
703regular expressions you specify. For example, you can use it to
704highlight all the references to a certain variable in a program source
705file, highlight certain parts in a voluminous output of some program,
706or highlight certain names in an article. To enable or disable Hi
707Lock mode, use the command @kbd{M-x hi-lock-mode}. To enable Hi Lock
708mode for all buffers, use @kbd{M-x global-hi-lock-mode} or place
709@code{(global-hi-lock-mode 1)} in your @file{.emacs} file.
54952612
RS
710
711 Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except
712that you specify explicitly the regular expressions to highlight. You
713control them with these commands:
b8f3a9e3
GM
714
715@table @kbd
716@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET}
717@kindex C-x w h
718@findex highlight-regexp
cedf175b 719Highlight text that matches @var{regexp} using face @var{face}
54952612
RS
720(@code{highlight-regexp}). The highlighting will remain as long as
721the buffer is loaded. For example, to highlight all occurrences of
722the word ``whim'' using the default face (a yellow background)
723@kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for
724highlighting, Hi Lock provides several of its own and these are
29a483ac
JL
725pre-loaded into a list of default values. While being prompted
726for a face use @kbd{M-n} and @kbd{M-p} to cycle through them.
54952612
RS
727
728You can use this command multiple times, specifying various regular
729expressions to highlight in different ways.
b8f3a9e3
GM
730
731@item C-x w r @var{regexp} @key{RET}
732@kindex C-x w r
733@findex unhighlight-regexp
630acdcc 734Unhighlight @var{regexp} (@code{unhighlight-regexp}).
54952612
RS
735
736If you invoke this from the menu, you select the expression to
737unhighlight from a list. If you invoke this from the keyboard, you
738use the minibuffer. It will show the most recently added regular
739expression; use @kbd{M-p} to show the next older expression and
740@kbd{M-n} to select the next newer expression. (You can also type the
741expression by hand, with completion.) When the expression you want to
742unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit
743the minibuffer and unhighlight it.
b8f3a9e3
GM
744
745@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET}
746@kindex C-x w l
747@findex highlight-lines-matching-regexp
748@cindex lines, highlighting
749@cindex highlighting lines of text
04d0b662 750Highlight entire lines containing a match for @var{regexp}, using face
b8f3a9e3
GM
751@var{face} (@code{highlight-lines-matching-regexp}).
752
753@item C-x w b
754@kindex C-x w b
755@findex hi-lock-write-interactive-patterns
756Insert all the current highlighting regexp/face pairs into the buffer
757at point, with comment delimiters to prevent them from changing your
54952612
RS
758program. (This key binding runs the
759@code{hi-lock-write-interactive-patterns} command.)
b8f3a9e3 760
3173ce7e
RS
761These patterns are extracted from the comments, if appropriate, if you
762invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while
763Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}).
b8f3a9e3
GM
764
765@item C-x w i
766@kindex C-x w i
767@findex hi-lock-find-patterns
3173ce7e
RS
768Extract regexp/face pairs from comments in the current buffer
769(@code{hi-lock-find-patterns}). Thus, you can enter patterns
770interactively with @code{highlight-regexp}, store them into the file
771with @code{hi-lock-write-interactive-patterns}, edit them (perhaps
cedf175b 772including different faces for different parenthesized parts of the
3173ce7e
RS
773match), and finally use this command (@code{hi-lock-find-patterns}) to
774have Hi Lock highlight the edited patterns.
b8f3a9e3 775
3173ce7e 776@vindex hi-lock-file-patterns-policy
d439bcd8
CY
777The variable @code{hi-lock-file-patterns-policy} controls whether Hi
778Lock mode should automatically extract and highlight patterns found in
779a file when it is visited. Its value can be @code{nil} (never
780highlight), @code{t} (highlight the patterns), @code{ask} (query the
781user), or a function. If it is a function,
3173ce7e 782@code{hi-lock-find-patterns} calls it with the patterns as argument;
d439bcd8
CY
783if the function returns non-@code{nil}, the patterns are used. The
784default is @code{nil}. Note that patterns are always highlighted if
785you call @code{hi-lock-find-patterns} directly, regardless of the
786value of this variable.
3173ce7e
RS
787
788@vindex hi-lock-exclude-modes
789Also, @code{hi-lock-find-patterns} does nothing if the current major
790mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
b8f3a9e3
GM
791@end table
792
fad78d58
RS
793@node Fringes
794@section Window Fringes
795@cindex fringes
796
797 On a graphical display, each Emacs window normally has narrow
956c76ef
CY
798@dfn{fringes} on the left and right edges. The fringes are used to
799display symbols that provide information about the text in the window.
fad78d58
RS
800
801 The most common use of the fringes is to indicate a continuation
802line, when one line of text is split into multiple lines on the
803screen. The left fringe shows a curving arrow for each screen line
804except the first, indicating that ``this is not the real beginning.''
805The right fringe shows a curving arrow for each screen line except the
806last, indicating that ``this is not the real end.''
807
566da2e7 808 The fringes indicate line truncation with short horizontal arrows
fad78d58 809meaning ``there's more text on this line which is scrolled
566da2e7
EZ
810horizontally out of view;'' clicking the mouse on one of the arrows
811scrolls the display horizontally in the direction of the arrow. The
d239287a 812fringes can also indicate other things, such as empty lines, or where a
566da2e7 813program you are debugging is executing (@pxref{Debuggers}).
fad78d58
RS
814
815@findex set-fringe-style
816@findex fringe-mode
817 You can enable and disable the fringes for all frames using
818@kbd{M-x fringe-mode}. To enable and disable the fringes
819for the selected frame, use @kbd{M-x set-fringe-style}.
820
9d2908a6
RS
821@node Displaying Boundaries
822@section Displaying Boundaries
823
824@vindex indicate-buffer-boundaries
825 On a graphical display, Emacs can indicate the buffer boundaries in
826the fringes. It indicates the first line and the last line with
827angle images in the fringes. This can be combined with up and down
828arrow images which say whether it is possible to scroll the window up
829and down.
830
831 The buffer-local variable @code{indicate-buffer-boundaries} controls
832how the buffer boundaries and window scrolling is indicated in the
833fringes. If the value is @code{left} or @code{right}, both angle and
834arrow bitmaps are displayed in the left or right fringe, respectively.
835
836 If value is an alist, each element @code{(@var{indicator} .
837@var{position})} specifies the position of one of the indicators.
838The @var{indicator} must be one of @code{top}, @code{bottom},
839@code{up}, @code{down}, or @code{t} which specifies the default
840position for the indicators not present in the alist.
841The @var{position} is one of @code{left}, @code{right}, or @code{nil}
842which specifies not to show this indicator.
843
844 For example, @code{((top . left) (t . right))} places the top angle
845bitmap in left fringe, the bottom angle bitmap in right fringe, and
846both arrow bitmaps in right fringe. To show just the angle bitmaps in
847the left fringe, but no arrow bitmaps, use @code{((top . left)
848(bottom . left))}.
849
fad78d58
RS
850@node Useless Whitespace
851@section Useless Whitespace
852
853@cindex trailing whitespace
854@cindex whitespace, trailing
855@vindex show-trailing-whitespace
856 It is easy to leave unnecessary spaces at the end of a line, or
857empty lines at the end of a file, without realizing it. In most
858cases, this @dfn{trailing whitespace} has no effect, but there are
956c76ef 859special circumstances where it matters, and it can be a nuisance.
fad78d58 860
956c76ef
CY
861 You can make trailing whitespace at the end of a line visible by
862setting the buffer-local variable @code{show-trailing-whitespace} to
863@code{t}. Then Emacs displays trailing whitespace, using the face
864@code{trailing-whitespace}.
fad78d58
RS
865
866 This feature does not apply when point is at the end of the line
867containing the whitespace. Strictly speaking, that is ``trailing
868whitespace'' nonetheless, but displaying it specially in that case
869looks ugly while you are typing in new text. In this special case,
870the location of point is enough to show you that the spaces are
871present.
872
873@findex delete-trailing-whitespace
956c76ef
CY
874 To delete all trailing whitespace within the buffer's accessible
875portion (@pxref{Narrowing}), type @kbd{M-x delete-trailing-whitespace
876@key{RET}}. This command does not remove newline characters.
fad78d58 877
23e3383d 878@vindex indicate-empty-lines
fad78d58 879@vindex default-indicate-empty-lines
877db12e
RS
880@cindex unused lines
881@cindex fringes, and unused line indication
882 Emacs can indicate unused lines at the end of the window with a
883small image in the left fringe (@pxref{Fringes}). The image appears
884for window lines that do not correspond to any buffer text. Blank
885lines at the end of the buffer then stand out because they do not have
886this image in the fringe.
887
888 To enable this feature, set the buffer-local variable
23e3383d 889@code{indicate-empty-lines} to a non-@code{nil} value. The default
877db12e 890value of this variable is controlled by the variable
23e3383d 891@code{default-indicate-empty-lines}; by setting that variable, you
877db12e 892can enable or disable this feature for all new buffers. (This feature
54952612 893currently doesn't work on text-only terminals.)
fad78d58 894
6bf7aab6
DL
895@node Selective Display
896@section Selective Display
4946337d 897@cindex selective display
6bf7aab6
DL
898@findex set-selective-display
899@kindex C-x $
900
956c76ef
CY
901 Emacs has the ability to hide lines indented more than a given
902number of columns. You can use this to get an overview of a part of a
903program.
6bf7aab6 904
d239287a
LT
905 To hide lines in the current buffer, type @kbd{C-x $}
906(@code{set-selective-display}) with a numeric argument @var{n}. Then
907lines with at least @var{n} columns of indentation disappear from the
908screen. The only indication of their presence is that three dots
909(@samp{@dots{}}) appear at the end of each visible line that is
910followed by one or more hidden ones.
6bf7aab6
DL
911
912 The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as
913if they were not there.
914
915 The hidden lines are still present in the buffer, and most editing
916commands see them as usual, so you may find point in the middle of the
917hidden text. When this happens, the cursor appears at the end of the
918previous line, after the three dots. If point is at the end of the
919visible line, before the newline that ends it, the cursor appears before
920the three dots.
921
922 To make all lines visible again, type @kbd{C-x $} with no argument.
923
924@vindex selective-display-ellipses
925 If you set the variable @code{selective-display-ellipses} to
926@code{nil}, the three dots do not appear at the end of a line that
927precedes hidden lines. Then there is no visible indication of the
928hidden lines. This variable becomes local automatically when set.
929
0015d677
RS
930 See also @ref{Outline Mode} for another way to hide part of
931the text in a buffer.
932
6bf7aab6
DL
933@node Optional Mode Line
934@section Optional Mode Line Features
935
b213b767
LK
936@cindex buffer size display
937@cindex display of buffer size
938@findex size-indication-mode
939 The buffer percentage @var{pos} indicates the percentage of the
940buffer above the top of the window. You can additionally display the
941size of the buffer by typing @kbd{M-x size-indication-mode} to turn on
942Size Indication mode. The size will be displayed immediately
943following the buffer percentage like this:
944
945@example
946@var{POS} of @var{SIZE}
947@end example
948
949@noindent
950Here @var{SIZE} is the human readable representation of the number of
951characters in the buffer, which means that @samp{k} for 10^3, @samp{M}
952for 10^6, @samp{G} for 10^9, etc., are used to abbreviate.
953
e598186c
RS
954@cindex line number display
955@cindex display of line number
6bf7aab6
DL
956@findex line-number-mode
957 The current line number of point appears in the mode line when Line
958Number mode is enabled. Use the command @kbd{M-x line-number-mode} to
959turn this mode on and off; normally it is on. The line number appears
b213b767 960after the buffer percentage @var{pos}, with the letter @samp{L} to
79199dd2
AM
961indicate what it is.
962
963@cindex Column Number mode
964@cindex mode, Column Number
965@findex column-number-mode
966 Similarly, you can display the current column number by turning on
967Column number mode with @kbd{M-x column-number-mode}. The column
968number is indicated by the letter @samp{C}. However, when both of
969these modes are enabled, the line and column numbers are displayed in
970parentheses, the line number first, rather than with @samp{L} and
971@samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more
972information about minor modes and about how to use these commands.
6bf7aab6 973
43f971ab
EZ
974@cindex narrowing, and line number display
975 If you have narrowed the buffer (@pxref{Narrowing}), the displayed
976line number is relative to the accessible portion of the buffer.
54952612
RS
977Thus, it isn't suitable as an argument to @code{goto-line}. (Use
978@code{what-line} command to see the line number relative to the whole
979file.)
43f971ab 980
6bf7aab6
DL
981@vindex line-number-display-limit
982 If the buffer is very large (larger than the value of
956c76ef
CY
983@code{line-number-display-limit}), Emacs won't compute the line
984number, because that would be too slow; therefore, the line number
985won't appear on the mode-line. To remove this limit, set
986@code{line-number-display-limit} to @code{nil}.
43f971ab
EZ
987
988@vindex line-number-display-limit-width
989 Line-number computation can also be slow if the lines in the buffer
956c76ef
CY
990are too long. For this reason, Emacs doesn't display line numbers if
991the average width, in characters, of lines near point is larger than
992the value of @code{line-number-display-limit-width}. The default
993value is 200 characters.
6bf7aab6 994
6bf7aab6
DL
995@findex display-time
996@cindex time (on mode line)
997 Emacs can optionally display the time and system load in all mode
4f00b8c1
DL
998lines. To enable this feature, type @kbd{M-x display-time} or customize
999the option @code{display-time-mode}. The information added to the mode
1000line usually appears after the buffer name, before the mode names and
1001their parentheses. It looks like this:
6bf7aab6
DL
1002
1003@example
1004@var{hh}:@var{mm}pm @var{l.ll}
1005@end example
1006
1007@noindent
1008@vindex display-time-24hr-format
1009Here @var{hh} and @var{mm} are the hour and minute, followed always by
1010@samp{am} or @samp{pm}. @var{l.ll} is the average number of running
1011processes in the whole system recently. (Some fields may be missing if
1012your operating system cannot support them.) If you prefer time display
1013in 24-hour format, set the variable @code{display-time-24hr-format}
1014to @code{t}.
1015
1016@cindex mail (on mode line)
72bd7b7b
DL
1017@vindex display-time-use-mail-icon
1018@vindex display-time-mail-face
fad78d58
RS
1019@vindex display-time-mail-file
1020@vindex display-time-mail-directory
6bf7aab6 1021 The word @samp{Mail} appears after the load level if there is mail
72bd7b7b
DL
1022for you that you have not read yet. On a graphical display you can use
1023an icon instead of @samp{Mail} by customizing
1024@code{display-time-use-mail-icon}; this may save some space on the mode
1025line. You can customize @code{display-time-mail-face} to make the mail
fad78d58
RS
1026indicator prominent. Use @code{display-time-mail-file} to specify
1027the mail file to check, or set @code{display-time-mail-directory}
1028to specify the directory to check for incoming mail (any nonempty regular
1029file in the directory is considered as ``newly arrived mail'').
6bf7aab6 1030
956c76ef
CY
1031@cindex mail (on mode line)
1032@findex display-battery-mode
1033@vindex display-battery-mode
1034@vindex battery-mode-line-format
1035 When running Emacs on a laptop computer, you can display the battery
1036charge on the mode-line, by using the command
1037@code{display-battery-mode} or customizing the variable
1038@code{display-battery-mode}. The variable
1039@code{battery-mode-line-format} determines the way the battery charge
1040is displayed; the exact mode-line message depends on the operating
1041system, and it usually shows the current battery charge as a
1042percentage of the total charge.
1043
47d7776c 1044@cindex mode line, 3D appearance
bd3ead08
EZ
1045@cindex attributes of mode line, changing
1046@cindex non-integral number of lines in a window
04d0b662
RS
1047 By default, the mode line is drawn on graphics displays with
10483D-style highlighting, like that of a button when it is not being
1049pressed. If you don't like this effect, you can disable the 3D
1050highlighting of the mode line, by customizing the attributes of the
54952612 1051@code{mode-line} face. @xref{Face Customization}.
bd3ead08 1052
b9e58bf2 1053@cindex non-selected windows, mode line appearance
ac6875fc 1054 By default, the mode line of nonselected windows is displayed in a
1c9f5f23 1055different face, called @code{mode-line-inactive}. Only the selected
ac6875fc
RS
1056window is displayed in the @code{mode-line} face. This helps show
1057which window is selected. When the minibuffer is selected, since
1058it has no mode line, the window from which you activated the minibuffer
1059has its mode line displayed using @code{mode-line}; as a result,
1060ordinary entry to the minibuffer does not change any mode lines.
1061
1062@vindex mode-line-in-non-selected-windows
1063 You can disable use of @code{mode-line-inactive} by setting variable
1c9f5f23
KS
1064@code{mode-line-in-non-selected-windows} to @code{nil}; then all mode
1065lines are displayed in the @code{mode-line} face.
b9e58bf2 1066
589a3f9f
RS
1067@vindex eol-mnemonic-unix
1068@vindex eol-mnemonic-dos
1069@vindex eol-mnemonic-mac
1070@vindex eol-mnemonic-undecided
1071 You can customize the mode line display for each of the end-of-line
1072formats by setting each of the variables @code{eol-mnemonic-unix},
1073@code{eol-mnemonic-dos}, @code{eol-mnemonic-mac}, and
54952612 1074@code{eol-mnemonic-undecided} to the strings you prefer.
589a3f9f 1075
6bf7aab6
DL
1076@node Text Display
1077@section How Text Is Displayed
1078@cindex characters (in text)
1079
76dd3692 1080 @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
06723f0f 1081buffers are displayed with their graphics, as are non-@acronym{ASCII} multibyte
6bf7aab6
DL
1082printing characters (octal codes above 0400).
1083
956c76ef
CY
1084@vindex tab-width
1085@vindex default-tab-width
1086 Some @acronym{ASCII} control characters are displayed in special
1087ways. The newline character (octal code 012) is displayed by starting
1088a new line. The tab character (octal code 011) is displayed by moving
1089to the next tab stop column (normally every 8 columns). The number of
1090spaces per tab is controlled by the variable @code{tab-width}, which
1091must have an integer value between 1 and 1000, inclusive, and is made
1092local by changing it. Note that how the tab character in the buffer
1093is displayed has nothing to do with the definition of @key{TAB} as a
1094command. The variable @code{default-tab-width} controls the default
1095value of this variable for buffers where you have not set it locally.
6bf7aab6 1096
76dd3692 1097 Other @acronym{ASCII} control characters are normally displayed as a caret
6bf7aab6 1098(@samp{^}) followed by the non-control version of the character; thus,
54952612
RS
1099control-A is displayed as @samp{^A}. The caret appears in face
1100@code{escape-glyph}.
1101
1102 Non-@acronym{ASCII} characters 0200 through 0237 (octal) are
1103displayed with octal escape sequences; thus, character code 0230
1104(octal) is displayed as @samp{\230}. The backslash appears in face
1105@code{escape-glyph}.
1106
1107@vindex ctl-arrow
1108 If the variable @code{ctl-arrow} is @code{nil}, control characters in
1109the buffer are displayed with octal escape sequences, except for newline
1110and tab. Altering the value of @code{ctl-arrow} makes it local to the
1111current buffer; until that time, the default value is in effect. The
1112default is initially @code{t}.
1113
1114 The display of character codes 0240 through 0377 (octal) may be
1115either as escape sequences or as graphics. They do not normally occur
1116in multibyte buffers, but if they do, they are displayed as Latin-1
1117graphics. In unibyte mode, if you enable European display they are
1118displayed using their graphics (assuming your terminal supports them),
662286c3 1119otherwise as escape sequences. @xref{Unibyte Mode}.
6bf7aab6 1120
470a11a3 1121@vindex nobreak-char-display
367aa52c
RS
1122@cindex no-break space, display
1123@cindex no-break hyphen, display
1124@cindex soft hyphen, display
470a11a3
RS
1125 Some character sets define ``no-break'' versions of the space and
1126hyphen characters, which are used where a line should not be broken.
1127Emacs normally displays these characters with special faces
1128(respectively, @code{nobreak-space} and @code{escape-glyph}) to
1129distinguish them from ordinary spaces and hyphens. You can turn off
1130this feature by setting the variable @code{nobreak-char-display} to
1131@code{nil}. If you set the variable to any other value, that means to
1132prefix these characters with an escape character.
b5cced4b 1133
54952612
RS
1134 You can customize the way any particular character code is displayed
1135by means of a display table. @xref{Display Tables,, Display Tables,
1136elisp, The Emacs Lisp Reference Manual}.
1137
0015d677
RS
1138@node Cursor Display
1139@section Displaying the Cursor
1140
1141@findex blink-cursor-mode
1142@vindex blink-cursor-alist
1143@cindex cursor, locating visually
1144@cindex cursor, blinking
1145 You can customize the cursor's color, and whether it blinks, using
1146the @code{cursor} Custom group (@pxref{Easy Customization}). On
098199b1 1147a graphical display, the command @kbd{M-x blink-cursor-mode} enables
0015d677
RS
1148or disables the blinking of the cursor. (On text terminals, the
1149terminal itself blinks the cursor, and Emacs has no control over it.)
1150You can control how the cursor appears when it blinks off by setting
1151the variable @code{blink-cursor-alist}.
1152
468160b7
SM
1153@vindex visible-cursor
1154 Some text terminals offer two different cursors: the normal cursor
1155and the very visible cursor, where the latter may be e.g. bigger or
43d67313
RS
1156blinking. By default Emacs uses the very visible cursor, and switches
1157to it when you start or resume Emacs. If the variable
1158@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it
1159doesn't switch, so it uses the normal cursor.
468160b7 1160
0015d677
RS
1161@cindex cursor in non-selected windows
1162@vindex cursor-in-non-selected-windows
93870ce2
RS
1163 Normally, the cursor appears in non-selected windows without
1164blinking, with the same appearance as when the blinking cursor blinks
5a7f4c1b 1165``off.'' For a box cursor, this is a hollow box; for a bar cursor,
0015d677 1166this is a thinner bar. To turn off cursors in non-selected windows,
93870ce2
RS
1167customize the variable @code{cursor-in-non-selected-windows} and
1168assign it a @code{nil} value.
0015d677
RS
1169
1170@vindex x-stretch-cursor
1171@cindex wide block cursor
098199b1 1172 On graphical displays, Emacs can optionally draw the block cursor
0015d677
RS
1173as wide as the character under the cursor---for example, if the cursor
1174is on a tab character, it would cover the full width occupied by that
1175tab character. To enable this feature, set the variable
1176@code{x-stretch-cursor} to a non-@code{nil} value.
1177
1178@findex hl-line-mode
1179@findex global-hl-line-mode
1180@cindex highlight current line
54952612
RS
1181 To make the cursor even more visible, you can use HL Line mode, a
1182minor mode that highlights the line containing point. Use @kbd{M-x
0015d677
RS
1183hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
1184global-hl-line-mode} enables or disables the same mode globally.
1185
9d2908a6
RS
1186@node Line Truncation
1187@section Truncation of Lines
0015d677
RS
1188
1189@cindex truncation
1190@cindex line truncation, and fringes
9c6361c9
MR
1191 As an alternative to continuation (@pxref{Continuation Lines}), Emacs
1192can display long lines by @dfn{truncation}. This means that all the
1193characters that do not fit in the width of the screen or window do not
1194appear at all. On graphical displays, a small straight arrow in the
1195fringe indicates truncation at either end of the line. On text-only
1196terminals, @samp{$} appears in the first column when there is text
1197truncated to the left, and in the last column when there is text
1198truncated to the right.
0015d677
RS
1199
1200@vindex truncate-lines
1201@findex toggle-truncate-lines
1202 Horizontal scrolling automatically causes line truncation
1203(@pxref{Horizontal Scrolling}). You can explicitly enable line
1204truncation for a particular buffer with the command @kbd{M-x
1205toggle-truncate-lines}. This works by locally changing the variable
1206@code{truncate-lines}. If that variable is non-@code{nil}, long lines
1207are truncated; if it is @code{nil}, they are continued onto multiple
1208screen lines. Setting the variable @code{truncate-lines} in any way
1209makes it local to the current buffer; until that time, the default
1210value is in effect. The default value is normally @code{nil}.
6bf7aab6
DL
1211
1212@c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
1213 If the variable @code{truncate-partial-width-windows} is
1214non-@code{nil}, it forces truncation rather than continuation in any
1215window less than the full width of the screen or frame, regardless of
956c76ef 1216the value of @code{truncate-lines}. See also @ref{Display,, Display,
6bf7aab6
DL
1217elisp, The Emacs Lisp Reference Manual}.
1218
80174a97
KS
1219@vindex overflow-newline-into-fringe
1220 If the variable @code{overflow-newline-into-fringe} is
54952612
RS
1221non-@code{nil} on a graphical display, then Emacs does not continue or
1222truncate a line which is exactly as wide as the window. Instead, the
1223newline overflows into the right fringe, and the cursor appears in the
1224fringe when positioned on that newline.
80174a97 1225
458db4b6
CY
1226@node Visual Line Mode
1227@section Visual Line Mode
1228
1229@cindex word wrap
1230 Another alternative to ordinary line continuation is to use
1231@dfn{word wrap}. Here, each long logical line is divided into two or
1232more screen lines, like in ordinary line continuation. However, Emacs
1233attempts to wrap the line at word boundaries near the right window
1234edge. This makes the text easier to read, as wrapping does not occur
1235in the middle of words.
1236
1237@cindex Visual Line mode
1238@findex visual-line-mode
1239@findex global-visual-line-mode
1240 Word wrap is enabled by Visual Line mode, an optional minor mode.
1241To turn on Visual Line mode in the current buffer, type @kbd{M-x
1242visual-line-mode}; repeating this command turns it off. You can also
1243turn on Visual Line mode using the menu bar: in the Options menu,
1244select the @samp{Line Wrapping in this Buffer} submenu, followed by
1245the @samp{Word Wrap (Visual Line Mode)} menu item. While Visual Line
1246mode is enabled, the mode-line shows the string @samp{wrap} in the
1247mode display. The command @kbd{M-x global-visual-line-mode} toggles
1248Visual Line mode in all buffers.
1249
1250@findex beginning-of-visual-line
1251@findex end-of-visual-line
1252@findex next-logical-line
1253@findex previous-logical-line
1254 In Visual Line mode, some editing commands work on screen lines
1255instead of logical lines: @kbd{C-a} (@code{beginning-of-visual-line})
1256moves to the beginning of the screen line, @kbd{C-e}
1257(@code{end-of-visual-line}) moves to the end of the screen line, and
1258@kbd{C-k} (@code{kill-visual-line}) kills text to the end of the
21927cd7
CY
1259screen line.
1260
1261 To move by logical lines, use the commands @kbd{M-x
1262next-logical-line} and @kbd{M-x previous-logical-line}. These move
1263point to the next logical line and the previous logical line
1264respectively, regardless of whether Visual Line mode is enabled. If
1265you use these commands frequently, it may be convenient to assign key
1266bindings to them. @xref{Init Rebinding}.
458db4b6
CY
1267
1268 By default, word-wrapped lines do not display fringe indicators.
1269Visual Line mode is often used to edit files that contain many long
1270logical lines, so having a fringe indicator for each wrapped line
1271would be visually distracting. You can change this by customizing the
1272variable @code{visual-line-fringe-indicators}.
1273
9d2908a6
RS
1274@node Display Custom
1275@section Customization of Display
80174a97 1276
9d2908a6
RS
1277 This section describes variables (@pxref{Variables}) that you can
1278change to customize how Emacs displays. Beginning users can skip
1279it.
1280@c the reason for that pxref is because an xref early in the
1281@c ``echo area'' section leads here.
62ea61af 1282
9d2908a6
RS
1283@vindex inverse-video
1284 If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts
1285to invert all the lines of the display from what they normally are.
62ea61af 1286
9d2908a6
RS
1287@vindex visible-bell
1288 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
1289to make the whole screen blink when it would normally make an audible bell
1290sound. This variable has no effect if your terminal does not have a way
1291to make the screen blink.
80174a97 1292
9d2908a6
RS
1293@vindex echo-keystrokes
1294 The variable @code{echo-keystrokes} controls the echoing of multi-character
1295keys; its value is the number of seconds of pause required to cause echoing
1296to start, or zero, meaning don't echo at all. The value takes effect when
1297there is someting to echo. @xref{Echo Area}.
80174a97 1298
6bf7aab6 1299@vindex baud-rate
54952612
RS
1300 The variable @anchor{baud-rate}@code{baud-rate} holds the output
1301speed of the terminal, as far as Emacs knows. Setting this variable
1302does not change the speed of actual data transmission, but the value
1303is used for calculations. On text-only terminals, it affects padding,
1304and decisions about whether to scroll part of the screen or redraw it
1305instead. It also affects the behavior of incremental search.
1306
1307 On graphical displays, @code{baud-rate} is only used to determine
1308how frequently to look for pending input during display updating. A
e598186c
RS
1309higher value of @code{baud-rate} means that check for pending input
1310will be done less frequently.
6bf7aab6 1311
62095f01
GM
1312@cindex hourglass pointer display
1313@vindex hourglass-delay
956c76ef 1314 On graphical displays, Emacs can optionally display the mouse pointer
099bfef9
RS
1315in a special shape to say that Emacs is busy. To turn this feature on
1316or off, customize the group @code{cursor}. You can also control the
1317amount of time Emacs must remain busy before the busy indicator is
62095f01 1318displayed, by setting the variable @code{hourglass-delay}.
099bfef9 1319
9d2908a6 1320@vindex overline-margin
956c76ef
CY
1321 On graphical displays, the variable @code{overline-margin} specifies
1322the vertical position of an overline above the text, including the
1323height of the overline itself, in pixels. The default value is 2.
9d2908a6
RS
1324
1325@vindex x-underline-at-descent-line
956c76ef 1326 On graphical displays, Emacs normally draws an underline at the
9d2908a6
RS
1327baseline level of the font. If @code{x-underline-at-descent-line} is
1328non-@code{nil}, Emacs draws the underline at the same height as the
1329font's descent line.
1330
a66b12be
RS
1331@findex tty-suppress-bold-inverse-default-colors
1332 On some text-only terminals, bold face and inverse video together
1333result in text that is hard to read. Call the function
1334@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
1335argument to suppress the effect of bold-face in this case.
1336
54952612
RS
1337@vindex no-redraw-on-reenter
1338 On a text-only terminal, when you reenter Emacs after suspending, Emacs
1339normally clears the screen and redraws the entire display. On some
1340terminals with more than one page of memory, it is possible to arrange
1341the termcap entry so that the @samp{ti} and @samp{te} strings (output
1342to the terminal when Emacs is entered and exited, respectively) switch
1343between pages of memory so as to use one page for Emacs and another
43d67313 1344page for other output. On such terminals, you might want to set the variable
54952612
RS
1345@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
1346assume, when resumed, that the screen page it is using still contains
1347what Emacs last wrote there.
1348
ab5796a9
MB
1349@ignore
1350 arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4
1351@end ignore