anchor.diff:          (echo "Buffer has no URL.")
           (let* ((body (with-current-buffer buffer
                          (ffi-buffer-get-document buffer)))
  -               (tags (prompt-minibuffer
  -                      :input-prompt "Space-separated tag(s)"
  -                      :default-modes '(set-tag-mode minibuffer-mode)
  -                      :input-buffer (url-bookmark-tags (url buffer))
  -                      :suggestion-function (tag-suggestion-filter
  -                                            :extra-tags (make-tags (extract-keywords body 5))))))
  +               (tags (prompt
  +                      :prompt "Space-separated tag(s)"
  +                      ;; :default-modes '(set-tag-mode minibuffer-mode) ; TODO: Replace completion.
  +                      :input (url-bookmark-tags (url buffer))
  +                      :sources (make-instance 'tag-source
  +                                              :extra-tags (make-tags (extract-keywords body 5))))))
             (bookmark-add (url buffer)
                           :title (title buffer)
                           :tags tags)
  
positive.code:                       :key #'tag-name)))
        (when with-empty-tag
          (push "" tags))
        (lambda (minibuffer)
          (fuzzy-match (text-buffer::word-at-cursor (input-cursor minibuffer)) tags)))))
  
  (define-command insert-tag (&optional (minibuffer (current-minibuffer)))
    "Replace current word with selected tag."
    (let ((selection (get-suggestion minibuffer)))
      (unless (uiop:emptyp selection)
        (text-buffer::replace-word-at-cursor (input-cursor minibuffer) (str:concat selection " "))
        (update-display minibuffer))))
  
  (define-mode set-tag-mode (nyxt/minibuffer-mode:minibuffer-mode)
    "Minibuffer mode for setting the tag of a bookmark."
    ((keymap-scheme
      (define-scheme "set-tag"
        scheme:cua
        (list "tab" 'insert-tag
              ;; TODO: RETURN
              )))))
  
  (define-command list-bookmarks ()
    "List all bookmarks in a new buffer."
  
negative.code:   (:export-accessor-names-p t)
    (:accessor-name-transformer (hu.dwim.defclass-star:make-name-transformer name)))
  
  (defmethod prompter:object-properties ((entry bookmark-entry))
    ;; TODO: Add more slots?
    `(:url ,(quri:render-uri (url entry))
      :title ,(title entry)
      :tags ,(format nil "~{~a ~}" (tags entry))
      :date ,(date entry)))
  
  (defmethod object-string ((entry bookmark-entry)) ; TODO: Delete?
    (object-string (url entry)))
  
  (defmethod object-display ((entry bookmark-entry))
  