(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)
(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)))
+