0.8.10.54:
[sbcl.git] / src / code / pp-backq.lisp
index bbc1e85..9c4c7c9 100644 (file)
                   (backq-unparse (car tail) t)))
         (push (backq-unparse (car tail)) accum)))
       (backq-append
-       (mapcan #'(lambda (el) (backq-unparse el t))
+       (mapcan (lambda (el) (backq-unparse el t))
               (cdr form)))
       (backq-nconc
-       (mapcan #'(lambda (el) (backq-unparse el :nconc))
+       (mapcan (lambda (el) (backq-unparse el :nconc))
               (cdr form)))
       (backq-cons
        (cons (backq-unparse (cadr form) nil)
      (princ ",@" stream))
     (backq-comma-dot
      (princ ",." stream)))
-  (write (cadr form) :stream stream))
+  ;; Ha!  an example of where the per-process specials for stream
+  ;; attributes rather than per-stream actually makes life easier.
+  ;; Since all of the attributes are shared in the dynamic state, we
+  ;; can do... -- CSR, 2003-09-30
+  ;;
+  ;; [...] above referred to the trick of printing to a string stream,
+  ;; and then simply printing the resulting sequence to the pretty
+  ;; stream, possibly with a space prepended.  However, this doesn't
+  ;; work for pretty streams which need to do margin calculations.  Oh
+  ;; well.  It was good while it lasted.  -- CSR, 2003-12-15
+  (let ((output (with-output-to-string (s)
+                 (write (cadr form) :stream s))))
+    (unless (= (length output) 0)
+      (when (and (eql (car form) 'backq-comma)
+                (or (char= (char output 0) #\.)
+                    (char= (char output 0) #\@)))
+       (write-char #\Space stream))
+      (write (cadr form) :stream stream))))
 
 ;;; This is called by !PPRINT-COLD-INIT, fairly late, because
 ;;; SET-PPRINT-DISPATCH doesn't work until the compiler works.
 ;;;
-;;; FIXME: It might be cleaner to just make these toplevel forms and
+;;; FIXME: It might be cleaner to just make these be toplevel forms and
 ;;; enforce the delay by putting this file late in the build sequence.
 (defun !backq-pp-cold-init ()
   (set-pprint-dispatch '(cons (eql backq-list)) #'pprint-backquote)