anchor.diff:  (defmethod object-display ((class class-suggestion))
     (object-string class))
   
  -(defun variable-suggestion-filter ()
  -  (let* ((variables (mapcar (lambda (v) (make-variable-suggestion :name v))
  -                            (package-variables))))
  -    (lambda (minibuffer)
  -      (fuzzy-match (input-buffer minibuffer) variables))))
  -
  -(defun function-suggestion-filter ()
  -  (let ((functions (mapcar (lambda (v) (make-function-suggestion :name v))
  -                           (package-functions))))
  -    (lambda (minibuffer)
  -      (fuzzy-match (input-buffer minibuffer) functions))))
  -
  -(defun class-suggestion-filter ()
  -  (let ((classes (mapcar (lambda (v) (make-class-suggestion :name v))
  -                         (package-classes))))
  -    (lambda (minibuffer)
  -      (fuzzy-match (input-buffer minibuffer) classes))))
  -
  -(defun slot-suggestion-filter ()
  -  (let ((slots (package-slots)))
  -    (lambda (minibuffer)
  -      (fuzzy-match (input-buffer minibuffer) slots))))
  +(define-class function-source (prompter:source)
  +  ((prompter:name "Functions")
  +   (prompter:must-match-p t)
  +   (prompter:initial-suggestions
  +    (mapcar (lambda (v) (make-function-suggestion :name v))
  +            (package-functions)))))
  +
  +(define-class class-source (prompter:source)
  +  ((prompter:name "Classes")
  +   (prompter:must-match-p t)
  +   (prompter:initial-suggestions
  +    (mapcar (lambda (v) (make-class-suggestion :name v))
  +            (package-classes)))))
  +
  +(define-class slot-source (prompter:source)
  +  ((prompter:name "Slots")
  +   (prompter:must-match-p t)
  +   (prompter:initial-suggestions (package-slots))))
  +
  +(define-class variable-source (prompter:source)
  +  ((prompter:name "Variables")
  +   (prompter:must-match-p t)
  +   (prompter:initial-suggestions (mapcar (lambda (v) (make-variable-suggestion :name v))
  +                                         (package-variables)))))
   
   (define-command describe-variable ()
     "Inspect a variable and show it in a help buffer."
     (let* ((input (variable-suggestion-name
  -                 (prompt-minibuffer
  -                  :suggestion-function (variable-suggestion-filter)
  -                  :input-prompt "Describe variable"))))
  +                 (prompt
  +                  :prompt "Describe variable:"
  +                  :sources (make-instance 'variable-source)))))
       (with-current-html-buffer (buffer
                                  (str:concat "*Help-" (symbol-name input) "*")
                                  'nyxt/help-mode:help-mode)
  
positive.code: 
  (define-command describe-slot ()
    "Inspect a slot and show it in a help buffer."
    (let* ((input (prompt-minibuffer
                   :input-prompt "Describe slot"
                   :suggestion-function (slot-suggestion-filter))))
      (with-current-html-buffer (buffer
                                 (str:concat "*Help-" (symbol-name (name input)) "*")
                                 'nyxt/help-mode:help-mode)
  
negative.code: (define-command describe-class ()
    "Inspect a class and show it in a help buffer."
    (let* ((input (class-suggestion-name
                   (prompt
                    :prompt "Describe class"
                    :sources (make-instance 'class-source)))))
      (with-current-html-buffer (buffer
                                 (str:concat "*Help-" (symbol-name input) "*")
                                 'nyxt/help-mode:help-mode)
  