anchor.diff:     (prompter:constructor (lambda (source)
                              (tag-suggestions :extra-tags (extra-tags source)))))
     (:accessor-name-transformer (hu.dwim.defclass-star:make-name-transformer name)))
  -
  -;; (define-command insert-tag (&optional (minibuffer (current-prompt-buffer)))
  -;;   "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."
  
positive.code:                           :multi-selection-p t
                            :actions (list 'bookmark-current-page))))
  
  (define-command bookmark-url (&key url)
    "Allow the user to bookmark a URL via minibuffer input."
    (let ((url (or url
                   (prompt
  
negative.code:         (push entry bookmarks-without-url)
          (setf bookmarks bookmarks-without-url)))))
  
  (define-class bookmark-source (prompter:source)
    ((prompter:name "Bookmarks")
     (prompter:constructor (get-data (bookmarks-path (current-buffer))))
     (prompter:active-properties '(:url :title :tags))))
  
  (defun tag-suggestions (&key extra-tags)
    (with-data-unsafe (bookmarks (bookmarks-path (current-buffer)))
      (let ((tags (sort (append extra-tags
                                (mapcar (lambda (name) (make-tag :name name))
  