1 (in-package :lisp-on-lines
)
4 (define-layered-class list-attribute
(standard-attribute)
5 ((item-args :initform nil
:initarg
:item
:layered t
:special t
)))
7 (define-layered-method display-attribute-value
8 ((attribute list-attribute
))
9 (generic-format *display
* "(")
10 (let ((list (attribute-value attribute
)))
14 :do
(let ((item (first cons
16 (break "Display T ~A" item
)
17 (dletf (((attribute-object attribute
) item
))
18 (apply #'display
*display
* item
(slot-value attribute
'item-args
))
19 (unless (endp (cdr cons
))
20 (generic-format *display
* " "))))))
21 (generic-format *display
* ")"))
28 (define-description list
()
29 ((list :attribute-class list-attribute
33 (define-description cons
(list)
34 ((car :label
"First" :function
#'car
)
35 (cdr :label
"Rest" :function
#'cdr
)
38 (define-description cons
()
39 ((editp :value t
:editp nil
)
40 (car :setter
#'rplaca
)
41 (cdr :setter
#'rplacd
))
42 (:in-description editable
))
44 (define-description cons
()
45 ((active-attributes :value
'(list)))
46 (:in-description inline
))
48 (define-layered-method description-of
((c cons
))
49 (find-description 'cons
))