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 (arnesi:dolist
* (item (attribute-value attribute
))
10 (apply #'display
*display
* item
(slot-value attribute
'item-args
))))
12 (define-description list
()
13 ((list :attribute-class list-attribute
17 (define-description cons
(list)
18 ((car :label
"First" :function
#'car
)
19 (cdr :label
"Rest" :function
#'cdr
)
22 (define-description cons
()
23 ((editp :value t
:editp nil
)
24 (car :setter
#'rplaca
)
25 (cdr :setter
#'rplacd
))
26 (:in-description editable
))
28 (define-description cons
()
29 ((active-attributes :value
'(list)))
30 (:in-description inline
))
32 (define-layered-method description-of
((c cons
))
33 (find-description 'cons
))