Previous: Cursor Display, Up: Display


19.15 Customization of Display

This section contains information for customization only. Beginning users should skip it.

If the variable inverse-video is non-nil, Emacs attempts to invert all the lines of the display from what they normally are.

If the variable visible-bell is non-nil, Emacs attempts to make the whole screen blink when it would normally make an audible bell sound. This variable has no effect if your terminal does not have a way to make the screen blink.

On a text terminal, when you reenter Emacs after suspending, Emacs normally clears the screen and redraws the entire display. On some terminals with more than one page of memory, it is possible to arrange the termcap entry so that the ‘ti’ and ‘te’ strings (output to the terminal when Emacs is entered and exited, respectively) switch between pages of memory so as to use one page for Emacs and another page for other output. Then you might want to set the variable no-redraw-on-reenter non-nil; this tells Emacs to assume, when resumed, that the screen page it is using still contains what Emacs last wrote there.

The variable echo-keystrokes controls the echoing of multi-character keys; its value is the number of seconds of pause required to cause echoing to start, or zero meaning don't echo at all. See Echo Area.

If the variable ctl-arrow is nil, all control characters in the buffer are displayed with octal escape sequences, except for newline and tab. Altering the value of ctl-arrow makes it local to the current buffer; until that time, the default value is in effect. The default is initially t. See Display Tables.

Normally, a tab character in the buffer is displayed as whitespace which extends to the next display tab stop position, and display tab stops come at intervals equal to eight spaces. The number of spaces per tab is controlled by the variable tab-width, which is made local by changing it, just like ctl-arrow. Note that how the tab character in the buffer is displayed has nothing to do with the definition of <TAB> as a command. The variable tab-width must have an integer value between 1 and 1000, inclusive. The variable default-tab-width controls the default value of this variable for buffers where you have not set it locally.

As an alternative to continuation, Emacs can display long lines by truncation. This means that all the characters that do not fit in the width of the screen or window do not appear at all. On graphical terminals, a small straight arrow in the fringe indicates truncation at either end of the line. On text terminals, ‘$’ appears in the first column when there is text truncated to the left, and in the last column when there is text truncated to the right.

Horizontal scrolling automatically causes line truncation (see Horizontal Scrolling). You can explicitly enable line truncation for a particular buffer with the command M-x toggle-truncate-lines. This works by locally changing the variable truncate-lines. If that variable is non-nil, long lines are truncated; if it is nil, they are continued onto multiple screen lines. Setting the variable truncate-lines in any way makes it local to the current buffer; until that time, the default value is in effect. The default value is normally nil.

If the variable truncate-partial-width-windows is non-nil, it forces truncation rather than continuation in any window less than the full width of the screen or frame, regardless of the value of truncate-lines. For information about side-by-side windows, see Split Window. See also Display.

If the variable overflow-newline-into-fringe is non-nil on a window system, it specifies that lines which are exactly as wide as the window (not counting the final newline character) shall not be broken into two lines on the display (with just the newline on the second line). Instead, the newline overflows into the right fringe, and the cursor will be displayed in the fringe when positioned on that newline.

On a window system, Emacs may indicate the buffer boundaries in the fringes. The buffer boundaries, i.e. first and last line in the buffer, can be marked with angle bitmaps in the left or right fringe. This can be combined with up and down arrow bitmaps shown at the top and bottom of the left or right fringe if the window can be scrolled in either direction.

The buffer-local variable indicate-buffer-boundaries controls how the buffer boundaries and window scrolling is indicated in the fringes.

If the value is left or right, both angle and arrow bitmaps are displayed in the left or right fringe, respectively.

If value is an alist, each element (indicator . position) specifies the position of one of the indicators. The indicator must be one of top, bottom, up, down, or t which specifies the default position for the indicators not present in the alist. The position is one of left, right, or nil which specifies not to show this indicator.

For example, ((top . left) (t . right)) places the top angle bitmap in left fringe, the bottom angle bitmap in right fringe, and both arrow bitmaps in right fringe. To show just the angle bitmaps in the left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)).

The value of the variable default-indicate-buffer-boundaries is the default value for indicate-buffer-boundaries in buffers that do not override it.

The variable baud-rate holds the output speed of the terminal, as far as Emacs knows. Setting this variable does not change the speed of actual data transmission, but the value is used for calculations. On terminals, it affects padding, and decisions about whether to scroll part of the screen or redraw it instead. It also affects the behavior of incremental search.

On window-systems, baud-rate is only used to determine how frequently to look for pending input during display updating. A higher value of baud-rate means that check for pending input will be done less frequently.

You can customize the way any particular character code is displayed by means of a display table. See Display Tables.

On a window system, Emacs can optionally display the mouse pointer in a special shape to say that Emacs is busy. To turn this feature on or off, customize the group cursor. You can also control the amount of time Emacs must remain busy before the busy indicator is displayed, by setting the variable hourglass-delay.

On some text-only terminals, bold face and inverse video together result in text that is hard to read. Call the function tty-suppress-bold-inverse-default-colors with a non-nil argument to suppress the effect of bold-face in this case.