elisp: Printing in Edebug
17.2.11 Printing in Edebug
--------------------------
If an expression in your program produces a value containing circular
list structure, you may get an error when Edebug attempts to print it.
One way to cope with circular structure is to set ‘print-length’ or
‘print-level’ to truncate the printing. Edebug does this for you; it
binds ‘print-length’ and ‘print-level’ to the values of the variables
‘edebug-print-length’ and ‘edebug-print-level’ (so long as they have
non-‘nil’ values). Output Variables.
-- User Option: edebug-print-length
If non-‘nil’, Edebug binds ‘print-length’ to this value while
printing results. The default value is ‘50’.
-- User Option: edebug-print-level
If non-‘nil’, Edebug binds ‘print-level’ to this value while
printing results. The default value is ‘50’.
You can also print circular structures and structures that share
elements more informatively by binding ‘print-circle’ to a non-‘nil’
value.
Here is an example of code that creates a circular structure:
(setq a '(x y))
(setcar a a)
Custom printing prints this as ‘Result: #1=(#1# y)’. The ‘#1=’ notation
labels the structure that follows it with the label ‘1’, and the ‘#1#’
notation references the previously labeled structure. This notation is
used for any shared elements of lists or vectors.
-- User Option: edebug-print-circle
If non-‘nil’, Edebug binds ‘print-circle’ to this value while
printing results. The default value is ‘t’.
Other programs can also use custom printing; see ‘cust-print.el’ for
details.