anchor.diff:      (ffi-buffer-evaluate-javascript-async help-buffer insert-help)
       (set-current-buffer help-buffer)))
   
  -(defun configure-slot (slot class &key (value nil new-value-supplied-p))
  +(defun configure-slot (slot class &key (value nil new-value-supplied-p) (type nil))
     "Set the value of a slot in a users auto-config.lisp."
     (flet ((set-slot (slot class input)
              (echo "Slot ~a updated with value ~s." slot input)
  
positive.code:                     "Use vi"))
              (:h2 "Default new buffer URL")
              (:a :class "button"
                  :href (lisp-url `(nyxt::configure-slot 'default-new-buffer-url 'web-buffer))
                  "Set default new buffer URL")
              (:h2 "Default zoom ratio")
              (:a :class "button"
  
negative.code:           (set-slot slot class value)
            (eval `(define-configuration ,class
                     ((,slot ,value)))))
          (let ((accepted-input
                  (loop while t do
                           (let ((input (prompt-minibuffer
                                         :input-prompt (format nil "Configure slot value ~a" slot))))
                             ;; no type specified, no need to keep querying
                             (unless type (return input))
                             (when (typep (read-from-string input) type)
                               (return input))))))
            (set-slot slot class accepted-input)
            (eval `(define-configuration ,class
                     ((,slot (read-from-string ,accepted-input)))))))))
  
  (defun append-configuration (form)
    (with-data-file (file *auto-config-file-path*
  