The previous section (see Output Functions) lists the numerous
variables that control how the Emacs Lisp printer formats data for
outputs. These are generally available for users to change, but
sometimes you want to output data in the default format, or override
the user settings in some other way. For instance, if you’re storing
Emacs Lisp data in a file, you don’t want that data to be shortened by
a print-length
setting.
The prin1
and prin1-to-string
functions therefore have
an optional overrides argument. This argument can either be
t
(which means that all printing variables should be reset to
the default values), or a list of settings for some of the variables.
Each element in the list can be either t
(which means “reset
to defaults”, and will usually be the first element of the list), or
a pair whose car
is a symbol that stands for an output variable
and whose cdr
is the value for that variable.
For instance, this prints using nothing but defaults:
(prin1 object nil t)
This prints object using the current printing settings, but
overrides the value of print-length
to be 5:
(prin1 object nil '((length . 5)))
And finally, this prints object using only default settings, but
with print-length
bound to 5:
(prin1 object nil '(t (length . 5)))
Below is a list of symbols that can be used, and which variables they map to:
length
This overrides print-length
.
level
This overrides print-level
.
circle
This overrides print-circle
.
quoted
This overrides print-quoted
.
escape-newlines
This overrides print-escape-newlines
.
escape-control-characters
This overrides print-escape-control-characters
.
escape-nonascii
This overrides print-escape-nonascii
.
escape-multibyte
This overrides print-escape-multibyte
.
charset-text-property
This overrides print-charset-text-property
.
unreadeable-function
This overrides print-unreadable-function
.
gensym
This overrides print-gensym
.
continuous-numbering
This overrides print-continuous-numbering
.
number-table
This overrides print-number-table
.
float-format
This overrides float-output-format
.
integers-as-characters
This overrides print-integers-as-characters
.
In the future, more overrides may be offered that do not map directly to a variable, but can only be used via this parameter.