X-Git-Url: https://git.hcoop.net/clinton/lisp-on-lines.git/blobdiff_plain/2548f0540da69973512f1827b2bfd2360470bb27..ddf67d6be45e1ea2d58aef8cceeba26f73ed1a0c:/src/standard-descriptions/list.lisp diff --git a/src/standard-descriptions/list.lisp b/src/standard-descriptions/list.lisp index 133ee69..33e9ca2 100644 --- a/src/standard-descriptions/list.lisp +++ b/src/standard-descriptions/list.lisp @@ -1,13 +1,28 @@ (in-package :lisp-on-lines) -(define-layered-class list-attribute (standard-attribute) +(define-layered-class list-attribute (define-description-attribute) ((item-args :initform nil :initarg :item :layered t :special t))) (define-layered-method display-attribute-value ((attribute list-attribute)) - (arnesi:dolist* (item (attribute-value attribute)) - (apply #'display *display* item (slot-value attribute 'item-args)))) + (generic-format *display* "(") + (let ((list (attribute-value attribute))) + + (loop + :for cons :on list + :do (let ((item (first cons +))) + (dletf (((attribute-object attribute) item)) + (apply #'display *display* item (slot-value attribute 'item-args)) + (unless (endp (cdr cons)) + (generic-format *display* " ")))))) + (generic-format *display* ")")) + + + + + (define-description list () ((list :attribute-class list-attribute