anchor.diff:      (up (parent-directory name))))
   
   
  -(defun merge-alists (a1 a2)
  -  (flet ((combine (acc next)
  -           (destructuring-bind (k . v) next
  -             (let ((in-a1 (assoc k acc)))
  -               (if in-a1
  -                   (cons `(,k ,@(cdr in-a1) ,@v) (remove k acc :key #'car))
  -                   (cons `(,k ,@v) acc))))))
  -    (nreverse (reduce #'combine a2 :initial-value a1))))
  -
  -(defun default-output-config (filename)
  -  (if (file-exists-p "./web/")
  -      (make-pathname :directory (list :relative "web" (pathname-name filename)) :name "index")
  -      filename))
  -
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;; Link rewriting
   
  -(defun links (doc)
  +(defun links (doc config)
  +  (declare (ignore config))
     "Rewrite the doc so :link elements are expanded into :a tags with the
   appropriate link."
     (let ((linkdefs (get-linkdefs doc)))
  
positive.code:           (twitter-widget has-tweets))
           doc)))))
  
  (defun spans-rewriter (spans)
    (flet ((apply-spanner (d s) (funcall (rewriter s #'spanner) d)))
      #'(lambda (doc)
          (reduce #'apply-spanner spans :initial-value doc))))
  
  (defun section-rewriter (sections config)
    (labels ((apply-section (d s)
               (destructuring-bind (tag sym) s
                 (funcall (rewriter :section (if-section-p tag (symbol-function sym))) d)))
  
negative.code:     (labels ((walk (x)
                 (typecase x
                   (string (write-string x s))
                   (cons (mapcar #'walk (rest x))))))
        (walk sexp))))
  
  ;; Used in config files
  