2010-08-23 6 views
18

Emacs Lisp ne semble pas avoir de fonction PPRINT. Comment est-ce que vous imprimez un S-EXP dans Elisp comme vous pouvez dans Common Lisp?PPRINT dans Emacs Lisp?

+0

Je vois que cl-prettyprint va imprimer dans le tampon courant. Je cherche quelque chose qui fonctionne avec un flux de sortie comme le PPRINT de Common Lisp. – anthonyf

Répondre

8

En supposant que le résultat de cl-prettyprint est assez bon pour vous, voici comment obtenir sa sortie dans un flux.

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

utiliser la bibliothèque pp qui fait partie de GNU Emacs. Par exemple, vous pouvez utiliser pp-macroexpand-last-sexp pour prétendre un sexp.

+0

Le plus simple est d'utiliser juste '(objet pp)' –

+2

Mon ... cette bibliothèque semble familière. Ah oui, je l'ai écrit. :) –

+0

Excellent travail, Randal, vous avez sauvé ma journée. – Seraph

Questions connexes