[slime-devel] Re: slime-toggle-trace-fdefinition (C-c C-t)

Antonio Menezes Leitao aml at gia.ist.utl.pt
Sun Mar 13 12:33:32 UTC 2005


Luke Gorrie <luke at synap.se> writes:

> Antonio Menezes Leitao <aml at gia.ist.utl.pt> writes:
>
>> ... and I wonder if the macroexpand could bind *print-circle* to nil
>> so that the macroexpansion command does not show a sexp full of #n=
>> and #n# that I find harder to understand.  OTOH, it allows us to see
>> structure sharing in the code but that doesn't seem to be terribly
>> useful...
>
> You can do something like this:
>
>   (setf (cdr (assoc '*print-circle* swank:*swank-pprint-bindings*)) nil)
>
> I haven't noticed #n# problems with CMUCL but I don't macroexpand all
> that often.
>

But that would affect all output.  I've been using the following
patch:

Index: swank.lisp
===================================================================
RCS file: /project/slime/cvsroot/slime/swank.lisp,v
retrieving revision 1.286
diff -u -r1.286 swank.lisp
--- swank.lisp	12 Mar 2005 16:02:04 -0000	1.286
+++ swank.lisp	13 Mar 2005 12:24:08 -0000
@@ -2138,7 +2138,9 @@
 (defun apply-macro-expander (expander string)
   (declare (type function expander))
   (with-buffer-syntax ()
-    (swank-pprint (list (funcall expander (from-string string))))))
+    (let ((*swank-pprint-bindings*
+           `(,@*swank-pprint-bindings* (*print-circle* . nil))))
+      (swank-pprint (list (funcall expander (from-string string)))))))
 
 (defslimefun swank-macroexpand-1 (string)
   (apply-macro-expander #'macroexpand-1 string))



Given the fact that *swank-pprint-bindings* is an alist, it would be
better to just rebind *swank-pprint-bindings* with 
(acons '*print-circle* 'nil *swank-pprint-bindings*)
but that would only work if call-with-bindings reversed the alist
before the progv.

António Leitão.



More information about the slime-devel mailing list