anchor.diff:                   :multi-selection-p t
                    :annotate-visible-only-p annotate-visible-only-p)))
   
  -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  -(in-package :nyxt/minibuffer-mode)
  -(define-mode element-hint-mode (nyxt/minibuffer-mode:minibuffer-mode)
  -  "Minibuffer mode for setting the tag of a bookmark."
  -  ((keymap-scheme
  -    (define-scheme "set-tag"
  -      scheme:cua
  -      (list
  -       "M-i" 'toggle-hints-transparency
  -       "M-n" 'select-next-follow
  -       "M-p" 'select-previous-follow)))))
  -
   (define-command toggle-hints-transparency (&key (buffer (current-buffer)))
     "Toggle the on-screen element hints transparency."
     (pflet ((toggle-transparent ()
  
positive.code:     (ps:dolist (e old-elements)
        (setf (ps:@ e class-name) "nyxt-hint"))))
  
  (defun query-hints (prompt function &key multi-selection-p annotate-visible-only-p)
    (let* ((buffer (current-buffer))
           minibuffer)
      (let ((elements-json (add-element-hints :annotate-visible-only-p annotate-visible-only-p)))
        ;; TODO: Add offscreen hints in background from full document annotation
        (let ((result (prompt-minibuffer
                       :input-prompt prompt
                       :default-modes '(element-hint-mode minibuffer-mode)
                       :history nil
                       :multi-selection-p multi-selection-p
                       :suggestion-function
                       (hint-suggestion-filter (elements-from-json elements-json))
                       :changed-callback
                       (let ((subsequent-call nil))
                         (lambda ()
                           ;; when the minibuffer initially appears, we don't
                           ;; want update-selection-highlight-hint to scroll
                           ;; but on subsequent calls, it should scroll
                           (update-selection-highlight-hint
                            :scroll subsequent-call
                            :buffer buffer
                            :minibuffer minibuffer)
                           (setf subsequent-call t)))
                       :cleanup-function
                       (lambda ()
                         (with-current-buffer buffer
                           (remove-element-hints))))))
          (funcall-safely function result)))))
  
  (defun hint-suggestion-filter (hints)
    (lambda (minibuffer)
      (let* ((matched-hints (remove-if-not (lambda (x) (str:starts-with-p (input-buffer minibuffer) (hint x) :ignore-case t)) hints))
             (fuzzy-matched-hints (fuzzy-match (input-buffer minibuffer) (set-difference hints matched-hints))))
        (append matched-hints fuzzy-matched-hints))))
  
  (defun elements-from-json (elements-json)
    (loop for element in (cl-json:decode-json-from-string elements-json)
  
negative.code:          :documentation "The body of the anchor tag."))
    (:accessor-name-transformer (hu.dwim.defclass-star:make-name-transformer name)))
  
  (defmethod prompter:object-properties ((hint hint))
    (list :hint (hint hint)
          :body (body hint)
          :url (when (slot-exists-p hint 'url) (url hint))))
  
  (define-class clickable-hint (hint) ())
  
  (define-class focusable-hint (hint) ())
  