19.6 Variables Affecting Output
variable
standard-output​
The value of this variable is the default output stream—the stream that print functions use when the stream
argument is nil
. The default is t
, meaning display in the echo area.
variable
print-quoted​
If this is non-nil
, that means to print quoted forms using abbreviated reader syntax, e.g., (quote foo)
prints as 'foo
, and (function foo)
as #'foo
. The default is t
.
variable
print-escape-newlines​
If this variable is non-nil
, then newline characters in strings are printed as ‘\n
’ and formfeeds are printed as ‘\f
’. Normally these characters are printed as actual newlines and formfeeds.
This variable affects the print functions prin1
and print
that print with quoting. It does not affect princ
. Here is an example using prin1
:
(prin1 "a\nb")
-| "a
-| b"
⇒ "a
b"
(let ((print-escape-newlines t))
(prin1 "a\nb"))
-| "a\nb"
⇒ "a
b"
In the second expression, the local binding of print-escape-newlines
is in effect during the call to prin1
, but not during the printing of the result.
variable
print-escape-control-characters​
If this variable is non-nil
, control characters in strings are printed as backslash sequences by the print functions prin1
and print
that print with quoting. If this variable and print-escape-newlines
are both non-nil
, the latter takes precedences for newlines and formfeeds.
variable
print-escape-nonascii​
If this variable is non-nil
, then unibyte non-ASCII characters in strings are unconditionally printed as backslash sequences by the print functions prin1
and print
that print with quoting.
Those functions also use backslash sequences for unibyte non-ASCII characters, regardless of the value of this variable, when the output stream is a multibyte buffer or a marker pointing into one.
variable
print-escape-multibyte​
If this variable is non-nil
, then multibyte non-ASCII characters in strings are unconditionally printed as backslash sequences by the print functions prin1
and print
that print with quoting.
Those functions also use backslash sequences for multibyte non-ASCII characters, regardless of the value of this variable, when the output stream is a unibyte buffer or a marker pointing into one.
variable
print-charset-text-property​
This variable controls printing of ‘charset’ text property on printing a string. The value should be nil
, t
, or default
.
If the value is nil
, charset
text properties are never printed. If t
, they are always printed.
If the value is default
, only print charset
text properties if there is an “unexpected" charset
property. For ascii characters, all charsets are considered “expected". Otherwise, the expected charset
property of a character is given by char-charset
.
variable
print-length​
The value of this variable is the maximum number of elements to print in any list, vector or bool-vector. If an object being printed has more than this many elements, it is abbreviated with an ellipsis.
If the value is nil
(the default), then there is no limit.
(setq print-length 2)
⇒ 2
(print '(1 2 3 4 5))
-| (1 2 ...)
⇒ (1 2 ...)
variable
print-level​
The value of this variable is the maximum depth of nesting of parentheses and brackets when printed. Any list or vector at a depth exceeding this limit is abbreviated with an ellipsis. A value of nil
(which is the default) means no limit.
user option
eval-expression-print-length​
user option
eval-expression-print-level​
These are the values for print-length
and print-level
used by eval-expression
, and thus, indirectly, by many interactive evaluation commands (see Evaluating Emacs Lisp Expressions in The GNU Emacs Manual).
These variables are used for detecting and reporting circular and shared structure:
variable
print-circle​
If non-nil
, this variable enables detection of circular and shared structure in printing. See Circular Objects.
variable
print-gensym​
If non-nil
, this variable enables detection of uninterned symbols (see Creating Symbols) in printing. When this is enabled, uninterned symbols print with the prefix ‘#:
’, which tells the Lisp reader to produce an uninterned symbol.
variable
print-continuous-numbering​
If non-nil
, that means number continuously across print calls. This affects the numbers printed for ‘#n=
’ labels and ‘#m#
’ references. Don’t set this variable with setq
; you should only bind it temporarily to t
with let
. When you do that, you should also bind print-number-table
to nil
.
variable
print-number-table​
This variable holds a vector used internally by printing to implement the print-circle
feature. You should not use it except to bind it to nil
when you bind print-continuous-numbering
.
variable
float-output-format​
This variable specifies how to print floating-point numbers. The default is nil
, meaning use the shortest output that represents the number without losing information.
To control output format more precisely, you can put a string in this variable. The string should hold a ‘%
’-specification to be used in the C function sprintf
. For further restrictions on what you can use, see the variable’s documentation string.