Here are the conventions for displaying each character code (in the absence of a display table, which can override these conventions; see Display Tables).
tab-widthcontrols the number of spaces per tab stop (see below).
ctl-arrow. If this variable is non-
nil(the default), these characters are displayed as sequences of two glyphs, where the first glyph is ‘^’ (a display table can specify a glyph to use instead of ‘^’); e.g., the DEL character is displayed as ‘^?’.
nil, these characters are displayed as
octal escapes (see below).
This rule also applies to carriage return (character code 13), if that character appears in the buffer. But carriage returns usually do not appear in buffer text; they are eliminated as part of end-of-line conversion (see Coding System Basics).
The above display conventions apply even when there is a display
table, for any character whose entry in the active display table is
nil. Thus, when you set up a display table, you need only
specify the characters for which you want special behavior.
The following variables affect how certain characters are displayed
on the screen. Since they change the number of columns the characters
occupy, they also affect the indentation functions. They also affect
how the mode line is displayed; if you want to force redisplay of the
mode line using the new values, call the function
force-mode-line-update (see Mode Line Format).
This buffer-local variable controls how control characters are
displayed. If it is non-
nil, they are displayed as a caret
followed by the character: ‘^A’. If it is
nil, they are
displayed as octal escapes: a backslash followed by three octal
digits, as in ‘\001’.
The value of this buffer-local variable is the spacing between tab
stops used for displaying tab characters in Emacs buffers. The value
is in units of columns, and the default is 8. Note that this feature
is completely independent of the user-settable tab stops used by the
tab-to-tab-stop. See Indent Tabs.