anchor.diff:    (when *completion-flag*
       (setq *completion-flag* nil)
       (let ((*current-window* (find *completion-window* *window-list*)))
  -      (info-quit))))
  +      (assert *current-window*)
  +      (when (buffer-get (window-buffer *current-window*)
  +                        :completion-buffer-p)
  +        (info-quit)))))
   
   (defun preceding-word ()
     (let ((chars))
  
positive.code: (defvar *comp-buffer-name* "*Completion*")
  (defvar *completion-window* nil)
  (defvar *completion-flag* nil)
  (defvar *comp-popup-window* nil)
  
  (defun completion (name list)
    (let ((strings
  
negative.code:   (multiple-value-bind (result strings) (funcall comp-f str)
      (when strings
        (setq *completion-flag* t)
        (let ((buffer (get-buffer-create *comp-buffer-name*)))
          (info-popup buffer
                      #'(lambda (out)
                          (setq *completion-window* *current-window*)
                          (dolist (s strings)
                            (format out "~a~%" s)))
                      nil)
          (buffer-put buffer :completion-buffer-p t))
        (window-update-all))
      (or result str)))
  
  