www.delorie.com/gnu/docs/elisp-manual-21/elisp_246.html   search  
 
Buy the book!


GNU Emacs Lisp Reference Manual

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18.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 50 if they were nil. (Actually, the variables edebug-print-length and edebug-print-level specify the values to use within Edebug.) See section 19.6 Variables Affecting Output.

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 nil.

Other programs can also use custom printing; see `cust-print.el' for details.


  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003