2010-08-23 19 views
18

Emacs Lisp scheint keine PPRINT-Funktion zu haben. Wie druckst du ein S-EXP in Elisp so gut wie in Common Lisp?PPRINT in Emacs Lisp?

+0

Ich sehe Cl-Prettyprint wird in den aktuellen Puffer drucken. Ich suche nach etwas, das mit einem Ausgabestream wie Common Lisp's PPRINT funktioniert. – anthonyf

Antwort

8

Angenommen, das Ergebnis von cl-prettyprint ist gut genug für Sie, hier ist, wie Sie die Ausgabe in einem Stream erhalten.

(defun pprint (form &optional output-stream) 
    (princ (with-temp-buffer 
      (cl-prettyprint form) 
      (buffer-string)) 
     output-stream)) 
21

über die pp Bibliothek, den Teil des GNU Emacs ist. Zum Beispiel können Sie pp-macroexpand-last-sexp für die Verschönerung eines Sexp verwenden.

+0

Der einfachste Weg ist, '(pp object)' –

+2

Meine ... diese Bibliothek bekannt zu verwenden. Oh ja, ich habe es geschrieben. :) –

+0

Tolle Arbeit, Randal, du hast meinen Tag gerettet. – Seraph