19.2.11 Edebug 中的打印

如果程序中的表达式生成的值包含循环列表结构,Edebug 尝试打印该值时可能会报错。

处理循环结构的一种方法是设置 print-lengthprint-level 来截断打印内容。 Edebug 会自动帮你完成这一操作: 它会将 print-lengthprint-level 绑定为变量 edebug-print-lengthedebug-print-level 的值(只要这些值为非nil)。 详见 See 影响输出的变量

User Option: edebug-print-length

若值为非nil,Edebug 在打印结果时会将 print-length 绑定为此值。默认值为 50

User Option: edebug-print-level

若值为非nil,Edebug 在打印结果时会将 print-level 绑定为此值。默认值为 50

你也可以将 print-circle 绑定为非nil 值, 从而更清晰地打印循环结构和包含共享元素的结构。

以下是创建循环结构的代码示例:

(setq a (list 'x 'y))
(setcar a a)

如果 print-circle 为非nil,打印函数(如 prin1)会将 a 打印为 ‘#1=(#1# y)’。 其中 ‘#1=’ 标记其后的结构为标签 ‘1’,而 ‘#1#’ 则引用此前标记的该结构。 这种标记法也适用于列表或向量中所有共享的元素。

User Option: edebug-print-circle

若值为非nil,Edebug 在打印结果时会将 print-circle 绑定为此值。默认值为 t

关于如何自定义打印行为的更多细节,见 see 输出函数


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike