anchor.diff:              :type ring:ring
               :documentation "History of inputs for the minibuffer.
   If nil, no history is used.")
  +   (multi-selection-p :initarg :multi-selection-p :accessor multi-selection-p
  +                      :initform nil
  +                      :type boolean
  +                      :documentation "If non-nil, allow for selecting multiple
  +candidates.")
      (completions :accessor completions :initform nil)
  +   (marked-completions :accessor marked-completions :initform nil)
      (completion-head :accessor completion-head :initform 0)
      (completion-cursor :accessor completion-cursor :initform 0) ; TODO: Rename to completion-index?
      (content :initform ""
  
positive.code: @export
  @export-accessors
  (defclass minibuffer (buffer)
    ((default-modes :initarg :default-modes :initform '(minibuffer-mode))
     (completion-function :initarg :completion-function :accessor completion-function :initform nil
                          :documentation "Function that takes the user input
  string and returns a list of candidate strings")
     (callback :initarg :callback :accessor callback :initform nil
               :documentation "Function to call over the selected candidate.")
     (callback-buffer :initarg :callback-buffer :accessor callback-buffer :initform (when *interface* (current-buffer))
                      :documentation "The active buffer when the minibuffer was
  brought up.  This can be useful to know which was the original buffer in the
  `callback' in case the buffer was changed.")
     (setup-function :initarg :setup-function :accessor setup-function :initform #'setup-default
                     :documentation "Function of no argument that fills the
  `content' on when the minibuffer is created.  Called only once.")
     (cleanup-function :initarg :cleanup-function :accessor cleanup-function :initform nil
                       :documentation "Function run after a completion has been selected.
  This should not rely on the minibuffer's content.")
     (empty-complete-immediate :initarg :empty-complete-immediate :accessor empty-complete-immediate ; TODO: Rename?
  
negative.code:         "C-w" #'copy-candidate
          "TAB" #'insert-candidate
          "M-p" #'minibuffer-history
          "C-SPACE" #'minibuffer-toggle-mark
          "M-a" #'minibuffer-mark-all
          "M-u" #'minibuffer-unmark-all
          :keymap map)
        (list :emacs map
              ;; TODO: We could have VI bindings for the minibuffer too.
  