"Robert J. Macomber" slime@rojoma.com writes:
This patch adds two variables to swank: *listener-print-level* and *listener-print-length*, analogous to the standard Lisp variables *print-level* and *print-length*, used to control how much of a form's return values get printed at the REPL but not of things printed directly by user code. If they're bound (by default, they aren't) then swank uses them when preparing the presentation of an evaluation's result for sending to Emacs. When they're unbound, the values of the standard CL depth and length variables instead.
While I symphatize with the motivation, I also strongly disagree with this patch on two grounds:
1. *PRINT-LEVEL* &co are the right tools to use for affecting the REPL. If your code assumes magic values of *PRINT-LEVEL* it is more-or-less broken, and should bind them explicitly, for which you will find WITH-STANDARD-IO-SYNTAX convenient.
2. If this really really must go in, please let us make it *PRESENTATION-PRINT-ALIST* instead, and use a PROGV:
(let ((bindings (reverse *listener-print-alist*))) (progv (mapcar #'car bindings) (mapcar #'cdr bindings) ...))
This way when someone needs *PRINT-RADIX* or similar they don't have to add and document another variable.
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."