anchor.diff:      (return-from has-exported-symbols-p t))
     nil)
   
  +(defun needs-documentation (package)
  +  (loop for what in *categories*
  +     for names = (names package what)
  +     when names nconc
  +       (loop for sym in names unless (docs-for sym what) collect (list sym what))))
  +
  +(defun documentation-templates (package)
  +  (loop for (name what) in (needs-documentation package)
  +       collect
  +       (ecase what
  +         (:slot-accessor
  +          `(setf (documentation #',name t) "WRITE ME!"))
  +         (:class
  +          `(setf (documentation (find-class ',name) t) "WRITE ME!")))))
  +
  +
  +
   (defun readme-text (package-name)
     (let ((dir (ignore-errors (asdf:system-relative-pathname package-name nil))))
       (when dir
  
positive.code: 
  (defvar *manifest-server* nil)
  
  (defparameter *categories* '(:function :generic-function :accessor :variable :class :condition :constant))
  
  (defun start (&key (port 0))
    "Start the manifest server and return the URL to browse. By default
  
negative.code:                  (setf some-docs-p t)
                   (format s "~&<h2>~:(~a~)</h2>~&<table>" (pluralization what))
                   (loop for sym in names do
                        (format s "~&<tr><td class='symbol'>~(~a~)</td>
  <td class='docs'>~a</td></tr>"
                                (escape-for-html (princ-to-string sym))
                                (escape-for-html (or (docs-for sym what) "NO DOCS!"))))
                   (format s "~&</table>"))
  
  