2010-08-23 4 views
18

Emacs Lisp non sembra avere una funzione PPRINT. Come si stampa un S-EXP in modo elisp come si può in Common Lisp?PPRINT in Emacs Lisp?

+0

Vedo che cl-prettyprint stamperà sul buffer corrente. Sto cercando qualcosa che funzioni con un flusso di output come fa PPRINT di Common Lisp. – anthonyf

risposta

8

Supponendo che il risultato di cl-prettyprint sia sufficiente per voi, ecco come ottenere l'output in un flusso.

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

utilizzare la libreria pp che fa parte di GNU Emacs. Ad esempio è possibile utilizzare pp-macroexpand-last-sexp per la stimolazione di un sexp.

+0

Il modo più semplice è usare semplicemente '(oggetto pp)' –

+2

Mio ... quella libreria sembra familiare. Oh sì, l'ho scritto. :) –

+0

Ottimo lavoro, Randal, hai salvato la mia giornata. – Seraph