anchor.diff:                 (not (str:emptyp input-buffer)))
         ;; Don't add input-buffer to completions that don't accept arbitrary
         ;; inputs (i.e. empty-complete-immediate is nil).
  -      (push input-buffer completions))
  +      (push input-buffer completions))))
  +
  +(defmethod (setf input-buffer) (value (minibuffer minibuffer))
  +  "Reset the minibuffer state on every input change.
  +  This is necessary or else completion cursor / head could be beyond
  +  the updated list length."
  +  (with-slots (input-buffer completion-cursor completion-head) minibuffer
  +    (setf input-buffer value)
  +    (update-candidates minibuffer)
       (setf completion-cursor 0)
       (setf completion-head 0)))
   
  
positive.code: 
  (defmethod setup-default ((minibuffer minibuffer))
    (erase-document minibuffer)
    ;; Invoke updating of the minibuffer by setf'ing the input-buffer
    (setf (input-buffer minibuffer) (input-buffer minibuffer))
    (setf (input-cursor-position minibuffer) 0)
    (setf (content minibuffer)
          (markup:markup
  
negative.code:                  `(:multi-selection-p ,multi-selection-p)
                   '()))))
  
  (defmethod update-candidates ((minibuffer minibuffer))
    (with-slots (completion-function completions input-buffer empty-complete-immediate )
        minibuffer
      (if completion-function
          (setf completions (funcall completion-function input-buffer))
          (setf completions nil))
  