anchor.diff:     (prompter:constructor (get-data (bookmarks-path (current-buffer))))
      (prompter:active-properties '(:url :title :tags))))
   
  -;; (export-always 'tag-suggestion-filter)
  -;; (declaim (ftype (function (&key (:with-empty-tag boolean)
  -;;                                 (:extra-tags list-of-tags)))
  -;;                 tag-suggestion-filter))
  -(defun tag-suggestions (&key with-empty-tag extra-tags)
  -  "When with-empty-tag is non-nil, insert the empty string as the first tag.
  -This can be useful to let the user select no tag when returning directly."
  +(defun tag-suggestions ()
     (with-data-unsafe (bookmarks (bookmarks-path (current-buffer)))
       (let ((tags (sort (append extra-tags
                                 (mapcar (lambda (name) (make-tag :name name))
  
positive.code:         (let* ((body (with-current-buffer buffer
                         (ffi-buffer-get-document buffer)))
                 (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)
  
negative.code:                                        :test #'string-equal)))
                        #'string-lessp
                        :key #'tag-name)))
        tags)))
  
  (defun last-word (s)
    (if (uiop:emptyp s)
        ""
        (alex:last-elt (sera:words s))))
  
  (define-class tag-source (prompter:source)
    ((prompter:name "Tags")
     (extra-tags '())
     (prompter:filter-preprocessor (lambda (initial-suggestions-copy source input)
                                     (prompter:delete-inexact-matches
                                      initial-suggestions-copy
                                      source
                                      (last-word input))))
     (prompter:filter (lambda (input suggestion)
                        (prompter:fuzzy-match (last-word input) suggestion)))
     (prompter:multi-selection-p t)
     (prompter:constructor (lambda (source)
                             (tag-suggestions :extra-tags (extra-tags source)))))
  