anchor.diff:                                        :print-function 'completion-item-label
                                         :focus-attribute 'completion-attribute
                                         :non-focus-attribute 'non-focus-completion-attribute)
  -           (start-completion-mode function)))))
  +           (start-completion-mode completion-spec)))))
   
   (defun run-completion (completion)
  -  (run-completion-1 (if (typep completion 'completion-spec)
  -                        (spec-function completion)
  -                        completion)
  +  (run-completion-1 (typecase completion
  +                      (completion-spec
  +                       completion)
  +                      (otherwise
  +                       (make-completion-spec (alexandria:ensure-function completion))))
                       nil))
   
   (defun minibuffer-completion (comp-f start)
  
positive.code:               (t
                 (completion-next-line)))))))
  
  (defun start-completion-mode (restart-function)
    (setf *completion-restart-function* restart-function)
    (completion-mode t))
  
  (defun completion-item-range (point item)
  
negative.code:       (delete-between-points start end)
        (insert-string point (subseq (completion-item-label item) 0 begin)))))
  
  (defun run-completion-1 (completion-spec repeat)
    (let ((items (funcall (spec-function completion-spec) (current-point))))
      (setf *last-items* items)
      (cond ((null items)
             (when repeat (completion-end)))
  