20.7 覆盖输出变量

上一节(see 影响输出的变量)列出了大量控制 Emacs Lisp 打印器如何格式化输出数据的变量。 这些变量通常允许用户修改,但有时你希望以默认格式输出数据,或以其他方式覆盖用户设置。 例如,当你将 Emacs Lisp 数据保存到文件中时,不希望数据被 print-length 设置截断。

因此,prin1prin1-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

未来可能会提供更多覆盖选项,这些选项不会直接对应到某个变量,只能通过此参数使用。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike