上一节(see 影响输出的变量)列出了大量控制 Emacs Lisp 打印器如何格式化输出数据的变量。
这些变量通常允许用户修改,但有时你希望以默认格式输出数据,或以其他方式覆盖用户设置。
例如,当你将 Emacs Lisp 数据保存到文件中时,不希望数据被 print-length 设置截断。
因此,prin1 和 prin1-to-string 函数提供了一个可选的 overrides 参数。
该参数可以是 t(表示将所有打印变量重置为默认值),也可以是一个包含部分变量设置的列表。
列表中的每个元素可以是 t(表示 “重置为默认值(reset to defaults)”,通常作为列表的第一个元素),
或是一个点对,其 car 为代表输出变量的符号,cdr 为该变量要设置的值。
例如,以下代码仅使用默认设置进行打印:
(prin1 object nil t)
这会使用当前打印设置来打印 object,但会将 print-length 的值覆盖为 5:
(prin1 object nil '((length . 5)))
最后,这段代码仅使用默认设置打印 object,但将 print-length 绑定为 5:
(prin1 object nil '(t (length . 5)))
下面列出了可以使用的符号及其对应的变量:
length覆盖 print-length。
level覆盖 print-level。
circle覆盖 print-circle。
quoted覆盖 print-quoted。
escape-newlines覆盖 print-escape-newlines。
escape-control-characters覆盖 print-escape-control-characters。
escape-nonascii覆盖 print-escape-nonascii。
escape-multibyte覆盖 print-escape-multibyte。
charset-text-property覆盖 print-charset-text-property。
unreadeable-function覆盖 print-unreadable-function。
gensym覆盖 print-gensym。
continuous-numbering覆盖 print-continuous-numbering。
number-table覆盖 print-number-table。
float-format覆盖 float-output-format。
integers-as-characters覆盖 print-integers-as-characters。
未来可能会提供更多覆盖选项,这些选项不会直接对应到某个变量,只能通过此参数使用。