Changes from maxclaims branch (git).
[clinton/lisp-on-lines.git] / src / standard-descriptions / list.lisp
index 71c65f2..133ee69 100644 (file)
@@ -1,8 +1,23 @@
 (in-package :lisp-on-lines)
 
-(define-description cons ()
+
+(define-layered-class list-attribute (standard-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))))
+
+(define-description list ()
+ ((list :attribute-class list-attribute
+        :function #'identity
+        :attributes nil)))
+
+(define-description cons (list)
   ((car :label "First" :function #'car)
-   (cdr :label "Rest"  :function #'cdr)))
+   (cdr :label "Rest"  :function #'cdr)
+   ))
 
 (define-description cons ()
   ((editp :value t :editp nil)
    (cdr :setter #'rplacd))
   (:in-description editable))
 
+(define-description cons ()
+  ((active-attributes :value '(list)))
+  (:in-description inline))
+
 (define-layered-method description-of ((c cons))
  (find-description 'cons))