- (unless (and filter (not (funcall filter obj)))
- (fmt-obj-start obj view strm indent)
- (fmt-obj-data obj view strm (1+ indent) refvars link-printer)
- (fmt-obj-end obj view strm indent)
- (fmt-subobj-start obj view strm indent)
- (when (and subobjects (hyperobject-class-subobjects obj))
- (dolist (subobj (hyperobject-class-subobjects obj))
- (aif (slot-value obj (name-slot subobj))
- (view-hyperobject it
- (get-category-view (car (mklist it))
- category)
- category strm (1+ indent) filter
- subobjects refvars link-printer))))
- (fmt-subobj-end obj view strm indent)))
+ (awhen (printer view)
+ (funcall it obj strm))
+ (unless (and filter (not (funcall filter obj)))
+ (fmt-obj-start obj view strm indent)
+ (fmt-obj-data obj view strm (1+ indent) refvars link-printer)
+ (fmt-obj-end obj view strm indent)
+ (when subobjects
+ (fmt-subobj-start obj view strm indent)
+ (view-subobjects obj category strm indent filter subobjects
+ refvars link-printer)
+ (fmt-subobj-end obj view strm indent))))