[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
pretty-printing
- To: info-mcl
- Subject: pretty-printing
- From: hal@si.no (Hallvard Tretteberg)
- Date: 23 Feb 93 12:21:46 GMT
- Newsgroups: comp.lang.lisp.mcl
- Organization: Center for Industrial Research (SI), Oslo, Norway
- Sender: usenet@si.sintef.no (Usenet News Poster)
Hi, I'm having problems with pretty-printing, not with the
pretty-printing itself but getting something to pretty-print. The
problem seems to be with the dispatch table. BTW, I have Macintosh
Common Lisp Version 2.0p2.
The code below first makes a dummy package, then a dispatch table
based on the default one. Then I have a function that prints symbols
in the dummy package with the short nickname instead of the full
package name. At the bottom I install the pretty-printing function and
try both pretty-print and pprint-dispatch. None of these work. The
output is (the second two values are return values from
pprint-dispatch).
(PRETTY-PRINT-TEST::DEFINE-PPT-1 PPT :KEY1 1 :KEY2 2)
#<Compiled-function CCL::DEFUN-LIKE #x4C6E0E>
T
When I inspect *ppt-dispatch-table* I find references to the ppt::
symbols but it's hard to figure out what's wrong. Can someone please
enlighten me?
Hallvard Traetteberg
;;; the code
(defpackage "PRETTY-PRINT-TEST"
(:nicknames :ppt)
)
(defvar *ppt-pprint-dispatch* (copy-pprint-dispatch nil))
(defun pprint-def-name (stream def-name)
(flet ((package-prefix (symbol)
(if (eq (symbol-package symbol) (find-package :ppt))
"PPT"
nil))
)
(let ((package-prefix (package-prefix def-name)))
(if package-prefix
(format stream "~a::~a ~@_~:i" package-prefix def-name)
(format stream "~w ~@_~:i" def-name)))
))
(defun pprint-ppt-form (stream form)
(pprint-logical-block (stream form :prefix "(" :suffix ")")
(pprint-def-name stream (car form))
(mapc #'pprint (cdr form))
))
(let ((*print-pprint-dispatch* *ppt-pprint-dispatch*))
(set-pprint-dispatch '(cons (member ppt::define-ppt-1 ppt::define-ppt-2))
#'pprint-ppt-form)
)
(let ((*print-pretty* t)
(*print-pprint-dispatch* *ppt-pprint-dispatch*))
(pprint '(ppt::define-ppt-1 ppt :key1 1 :key2 2))
(pprint-dispatch '(ppt::define-ppt-1 ppt :key1 1 :key2 2)))
--
Hallvard Traetteberg
Dept. of Knowledge Based Systems
SINTEF SI (Center for Industrial Research)
Box 124 Blindern, 0314 Oslo 3
NORWAY
Tlf: +47 22 06 79 83 or +47 22 06 73 00
Fax: +47 22 06 73 50
Email: Hallvard.Tretteberg@si.sintef.no