Emacs Lisp does not seem to have a PPRINT function. How do you pretty print an S-EXP in elisp the way you can in Common Lisp?
Asked
Active
Viewed 5,621 times
23
-
I see cl-prettyprint will print to the current buffer. I am looking for something that works with an output stream like Common Lisp's PPRINT does. – anthonyf Aug 23 '10 at 22:17
2 Answers
27
Use the pp
library which is part of GNU Emacs. For example you can use pp-macroexpand-last-sexp
for prettifying an sexp.

Jérôme Radix
- 10,285
- 4
- 34
- 40
13
Assuming that the result of cl-prettyprint
is good enough for you, here's how to get its output in a stream.
(defun pprint (form &optional output-stream)
(princ (with-temp-buffer
(cl-prettyprint form)
(buffer-string))
output-stream))

Gilles 'SO- stop being evil'
- 104,111
- 38
- 209
- 254
-
1When you are a buffer how can you get cl-prettyprint to replace a defun with its pretty printed version? Can – vfclists Oct 31 '20 at 10:45
-
Thanks for this. It's weird to me that `cl-prettyprint` doesn't return a string in the first place. – Chris Clark Jun 01 '21 at 17:18