Fix missing `without-special-symbol-access' in `funcall-with-attribute-context'
[clinton/lisp-on-lines.git] / src / standard-descriptions / t.lisp
index 5baf369..bc2c367 100644 (file)
@@ -1,5 +1,8 @@
 (in-package :lisp-on-lines)
 
+(defmethod described-object ((attribute standard-attribute))
+  (described-object (attribute-description attribute)))
+
 (define-description T ()
   ((label :label nil 
          :function (lambda (object)
@@ -46,6 +49,7 @@
     (funcall (attribute-label-formatter attribute) (attribute-label attribute))))
           
 (define-layered-function display-attribute-value (attribute)
+  (:method-combination arnesi:wrapping-standard)
   (:method (attribute)
     (flet ((disp (val &rest args)
             (apply #'display *display* val 
     (display-attribute-label attribute))
   (display-attribute-value attribute))
 
-(define-layered-method display-attribute :around
-  ((attribute standard-attribute))
-    (funcall-with-layer-context 
+(define-layered-method display-attribute :around ((attribute standard-attribute))
+  (with-attribute-context (attribute)
+    (call-next-method))
+    #+nil(funcall-with-layer-context 
    (modify-layer-context (current-layer-context) 
                         :activate (attribute-active-descriptions attribute)
                         :deactivate (attribute-inactive-descriptions attribute))
 
 (define-display ((description t))
  (let ((attributes (attributes description)))
-   (display-attribute (first attributes))
+   (when (first attributes)(display-attribute (first attributes)))
    (dolist (attribute (rest attributes) (values))
      (generic-format *display* 
       (attribute-value 
 
 (define-display :around ((description t) (display null) object)
  (with-output-to-string (*standard-output*)
-   (call-next-layered-method description t object))
-)              
+   (apply #'call-next-layered-method description t object args)))
+