From: Tobias C. R. <tc...@fr...> - 2009-08-26 20:00:55
Attachments:
pprint-thing.diff
|
* Refactor common code into a macro PPRINT-THING. Update some but not all possible places. * Special pretty-printing for COND, CASE, TYPECASE, RESTART-CASE and HANDLER-CASE. * Special pretty-printing for DEFSTRUCT. * Try to fit first argument of DESTRUCTURING-BIND / MULTIPLE-VALUE-BIND on the first line. * Pretty-print (DEFMACRO FOO (long lambda list) ...) not (DEFMACRO FOO (long lambda list) ...) |
From: Nikodemus S. <nik...@ra...> - 2009-09-15 20:42:31
|
2009/8/26 Tobias C. Rittweiler <tc...@fr...>: > * Special pretty-printing for DEFSTRUCT. Thank you! Unfortunately this bit has some problems: +(defun pprint-defstruct (stream list &rest noise) + (declare (ignore noise)) + (pprint-logical-block (stream list :prefix "(" :suffix ")") + (pprint-thing (pprint-pop) stream) + (pprint-spread-fun-call stream (pprint-pop) t t) + (pprint-exit-if-list-exhausted) + (pprint-indent :block 1 stream) + (pprint-newline :mandatory stream) + (loop for slot = (pprint-pop) do + (if (consp slot) + (pprint-fun-call-wrt-lambda-list + stream slot '(&optional init-form &key type read-only)) + (output-object slot stream)) + (pprint-exit-if-list-exhausted) + (write-char #\space stream) + (pprint-newline :linear stream)))) PPRINT-FUN-CALL-WRT-LAMBDA-LIST is not defined anywhere, and the build breaks with this patch applied. Cheers, -- Nikodemus |
From: Tobias C. R. <tc...@fr...> - 2009-09-15 21:35:20
|
Nikodemus Siivola <nik...@ra...> writes: > 2009/8/26 Tobias C. Rittweiler <tc...@fr...>: > >> * Special pretty-printing for DEFSTRUCT. > > Thank you! Unfortunately this bit has some problems: > > +(defun pprint-defstruct (stream list &rest noise) > + (declare (ignore noise)) > + (pprint-logical-block (stream list :prefix "(" :suffix ")") > + (pprint-thing (pprint-pop) stream) > + (pprint-spread-fun-call stream (pprint-pop) t t) > + (pprint-exit-if-list-exhausted) > + (pprint-indent :block 1 stream) > + (pprint-newline :mandatory stream) > + (loop for slot = (pprint-pop) do > + (if (consp slot) > + (pprint-fun-call-wrt-lambda-list > + stream slot '(&optional init-form &key type read-only)) > + (output-object slot stream)) > + (pprint-exit-if-list-exhausted) > + (write-char #\space stream) > + (pprint-newline :linear stream)))) > > PPRINT-FUN-CALL-WRT-LAMBDA-LIST is not defined anywhere, and the build > breaks with this patch applied. Right, that one comes with the patch in (3). [which, (3), also has a stale format expression in PPRINT-MACRO-ARGS-WRT-LAMBDA-LIST, search for "FOOF".] I can create updated patches for (1) -- moving PPRINT-DEFSTRUCT to (3) --, and (3) -- removing the format expression if you want me to do it. -T. |
From: Nikodemus S. <nik...@ra...> - 2009-09-16 07:17:03
|
>> PPRINT-FUN-CALL-WRT-LAMBDA-LIST is not defined anywhere, and the build >> breaks with this patch applied. > > Right, that one comes with the patch in (3). > > [which, (3), also has a stale format expression in > PPRINT-MACRO-ARGS-WRT-LAMBDA-LIST, search for "FOOF".] > > I can create updated patches for (1) -- moving PPRINT-DEFSTRUCT to (3) > --, and (3) -- removing the format expression if you want me to do it. As long as they apply and build cleanly in the order specified in the subject, yes please. :) (1 & 3 seem uncontroversial to me. Number 2 seems OK as well. Number 4... who are the intended users of these extensions? Unless they are ment as internal-only extensions they should be exported from SB-EXT: SB-PRETTY is an implementation package.) Cheers, -- Nikodemus |
From: Tobias C. R. <tc...@fr...> - 2009-09-16 19:39:44
|
Nikodemus Siivola <nik...@ra...> writes: >>> PPRINT-FUN-CALL-WRT-LAMBDA-LIST is not defined anywhere, and the build >>> breaks with this patch applied. >> >> Right, that one comes with the patch in (3). >> >> [which, (3), also has a stale format expression in >> PPRINT-MACRO-ARGS-WRT-LAMBDA-LIST, search for "FOOF".] >> >> I can create updated patches for (1) -- moving PPRINT-DEFSTRUCT to (3) >> --, and (3) -- removing the format expression if you want me to do it. > > As long as they apply and build cleanly in the order specified in the > subject, yes please. :) Updated patches can be found at http://common-lisp.net/~trittweiler/hacks/sbcl/pprint/ > (1 & 3 seem uncontroversial to me. Number 2 seems OK as well. Number > 4... who are the intended users of these extensions? Unless they are > ment as internal-only extensions they should be exported from SB-EXT: > SB-PRETTY is an implementation package.) I had cases for PPRINT-MANDATORY while writing some of the other code, but didn't want to add it as a strict requirement. PPRINT-FROM-FILE is handy to test the pretty-printer. I'm indecisive about the package issue. They can always be exported from SB-EXT as well in future, but not so easily dropped once there. -T. |