anchor.diff:    (t))
   
   (defvar *completion-restart-function* nil)
  +(defvar *last-items* nil)
   
   (defun completion-end ()
  +  (setf *last-items* nil)
     (completion-mode nil)
     (lem-if:popup-menu-quit (implementation)))
   
  
positive.code:   (insert-character (current-point) #\space)
    (completion-end))
  
  (defun start-completion-mode (restart-function)
    (setf *completion-restart-function* restart-function)
    (completion-mode t))
  
  (defun completion-insert (point item)
    (when item
      (cond ((and (completion-item-start item)
                  (completion-item-end item))
             (move-point point (completion-item-start item))
             (delete-between-points (completion-item-start item)
                                    (completion-item-end item))
             (insert-string point (completion-item-label item)))
            (t
             (with-point ((start point))
               (skip-chars-backward start #'syntax-symbol-char-p)
               (delete-between-points start point)
               (insert-string start (completion-item-label item)))))))
  
  (defun run-completion-1 (function repeat)
    (let ((items (funcall function (current-point))))
      (cond ((null items)
             (when repeat (completion-end)))
            ((and (not repeat) (null (rest items)))
  
negative.code: 
  (define-key *completion-mode-keymap* 'next-line 'completion-next-line)
  (define-key *completion-mode-keymap* "M-n"    'completion-next-line)
  (define-key *completion-mode-keymap* "C-i"    completion-narrowing-down-or-next-line)
  (define-key *completion-mode-keymap* 'previous-line 'completion-previous-line)
  (define-key *completion-mode-keymap* "M-p"    'completion-previous-line)
  (define-key *completion-mode-keymap* 'move-to-end-of-buffer 'completion-end-of-buffer)
  