anchor.diff:  	  ,message
   	  ,@args))))
   
  +(defmacro when-logging (category-spec &body body)
  +  (if (member :no-logging *features*)
  +      `(values)
  +      `(let ((category (load-time-value 
  +			(update-category-spec nil ',category-spec)
  +			t)))
  +	 (when (active-category-p (category-id category))
  +	   ,@body))))
  +
   ;;?? if I'm right, it would be faster to call the log-test first and
   ;; then the predicate only if we're logging...
   (defmacro log-if (predicate category-spec message &rest args)
  
positive.code:     ',sender-type 
      ,@args))
      
  (defun start-sender-fn (name category-spec output-spec 
  			sender-type &rest args)
    ;; stop any current one with the same name... warn?
  
negative.code: 			       (apply #'format nil message args) message))))
  	(values t)))))
  
  ;;?? see above, merge / refactor
  (defun active-category-p (id)
    (some (lambda (sender)
  	  ;; check for new category and fix things up
  	  (when (>= id (length (active-categories sender)))
  	    ;;?? how pricy is this?
  	    (update-active-categories sender id))
  	  (= (aref (active-categories sender) id) 1))
  	(log5-senders (log-manager))))
  	
  
  #|
  (defcategory :error)
  