X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fpprint.lisp;h=f5428786c00f5bac79d83a541258fc2293f1482b;hb=447788f1b408a8e9ec15ca822851dcd0bee52f82;hp=d0f7b57e6c1a80f7ab75f60f6dc054a3d600c82f;hpb=2a1df4bcc815f763fac346f32fbe535b39a0d2e1;p=sbcl.git diff --git a/src/code/pprint.lisp b/src/code/pprint.lisp index d0f7b57..f542878 100644 --- a/src/code/pprint.lisp +++ b/src/code/pprint.lisp @@ -1003,14 +1003,15 @@ line break." ;;;; standard pretty-printing routines (defun pprint-array (stream array) - (cond ((or (and (null *print-array*) (null *print-readably*)) - (stringp array) - (bit-vector-p array)) + (cond ((and (null *print-array*) (null *print-readably*)) (output-ugly-object array stream)) ((and *print-readably* (not (array-readably-printable-p array))) - (let ((*print-readably* nil)) - (error 'print-not-readable :object array))) + (if *read-eval* + (if (vectorp array) + (sb!impl::output-unreadable-vector-readably array stream) + (sb!impl::output-unreadable-array-readably array stream)) + (print-not-readable-error array stream))) ((vectorp array) (pprint-vector stream array)) (t @@ -1139,7 +1140,10 @@ line break." (declare (ignore noise)) (if (and (consp list) (consp (cdr list)) - (cddr list)) + (cddr list) + ;; Filter out (FLET FOO :IN BAR) names. + (and (consp (cddr list)) + (not (eq :in (third list))))) (funcall (formatter "~:<~^~W~^ ~@_~:<~@{~:<~^~W~^~3I ~:_~/SB!PRETTY:PPRINT-LAMBDA-LIST/~1I~:@_~@{~W~^ ~_~}~:>~^ ~_~}~:>~1I~@:_~@{~W~^ ~_~}~:>") stream @@ -1261,6 +1265,17 @@ line break." stream list)) +(defun pprint-defmethod (stream list &rest noise) + (declare (ignore noise)) + (if (and (consp (cdr list)) + (consp (cddr list)) + (consp (third list))) + (pprint-defun stream list) + (funcall (formatter + "~:<~^~W~^ ~@_~:I~W~^ ~W~^ ~:_~/SB!PRETTY:PPRINT-LAMBDA-LIST/~1I~@{ ~_~W~}~:>") + stream + list))) + (defun pprint-defpackage (stream list &rest noise) (declare (ignore noise)) (funcall (formatter @@ -1361,7 +1376,7 @@ line break." (declare (ignore noise)) (destructuring-bind (loop-symbol . clauses) list (declare (ignore loop-symbol)) - (if (or (null clauses) (consp (car clauses))) + (if (or (atom clauses) (consp (car clauses))) (pprint-spread-fun-call stream list) (pprint-extended-loop stream list)))) @@ -1471,7 +1486,7 @@ line break." (let ((*print-pprint-dispatch* *initial-pprint-dispatch-table*) (*building-initial-table* t)) (/show0 "doing SET-PPRINT-DISPATCH for regular types") - (set-pprint-dispatch 'array #'pprint-array) + (set-pprint-dispatch '(and array (not (or string bit-vector))) #'pprint-array) (set-pprint-dispatch '(cons (and symbol (satisfies mboundp))) #'pprint-macro-call -1) (set-pprint-dispatch '(cons (and symbol (satisfies fboundp))) @@ -1518,6 +1533,7 @@ line break." (define-modify-macro pprint-defun) (define-setf-expander pprint-defun) (defmacro pprint-defun) + (defmethod pprint-defmethod) (defpackage pprint-defpackage) (defparameter pprint-block) (defsetf pprint-defun) @@ -1581,5 +1597,6 @@ line break." (setf *standard-pprint-dispatch-table* (copy-pprint-dispatch *initial-pprint-dispatch-table*)) - (setf *print-pprint-dispatch* *initial-pprint-dispatch-table*) + (setf *print-pprint-dispatch* + (copy-pprint-dispatch *initial-pprint-dispatch-table*)) (setf *print-pretty* t))