anchor.diff:        scheme:cua
         (list
          "C-R" 'reload-with-modes)))
  -   (prompt-on-mode-toggle nil
  -                          :type boolean
  -                          :documentation "Whether the user is asked to confirm
  -adding the rule corresponding to a mode toggle.")
  -   (previous-url nil
  -                 :type (or quri:uri null)
  -                 :documentation "The last URL for which `auto-mode-handler' was fired.
  -We need to know if the auto mode rule has been applied before to avoid
  -re-applying a rule for a sequence of pages that match the same rule.
  -
  -We can'rely on the previous history entry because
  -dead buffers and session-restored buffers may have a history with a previous URL
  -matching the same rule while obviously the rule has never been applied for the
  -new-born buffer.")
  -
  -   (last-active-modes-url nil
  -                          :type (or quri:uri null)
  -                          :documentation "The last URL that the active modes were saved for.
  -We need to store this to not overwrite the `last-active-modes' for a given URL,
  -if `auto-mode-handler' is fired more than once.")
  -   (last-active-modes '()
  -                      :type (or (cons mode-invocation *) null)
  -                      :documentation "The list of `mode-invocation's that were enabled
  -on the last URL not covered by `auto-mode'.
  -This is useful when alternative between rule-less and ruled pages.
  -Example browse sequence:
  +   (prompt-on-mode-toggle
  +    nil
  +    :type boolean
  +    :documentation "Whether the user is asked to confirm adding the rule
  +corresponding to a mode toggle.")
  +   (previous-url 
  +    nil
  +    :type (or quri:uri null)
  +    :documentation "The last URL for which `auto-mode-handler' was fired.  We
  +need to know if the auto mode rule has been applied before to avoid re-applying
  +a rule for a sequence of pages that match the same rule.
  +
  +We can'rely on the previous history entry because dead buffers and
  +session-restored buffers may have a history with a previous URL matching the
  +same rule while obviously the rule has never been applied for the new-born
  +buffer.")
  +   (last-active-modes-url
  +    nil
  +    :type (or quri:uri null)
  +    :documentation "The last URL that the active modes were saved for.  We need
  +to store this to not overwrite the `last-active-modes' for a given URL, if
  +`auto-mode-handler' is fired more than once.")
  +   (last-active-modes
  +    '()
  +    :type (or (cons mode-invocation *) null)
  +    :documentation "The list of `mode-invocation's that were enabled on the last
  +URL not covered by `auto-mode'.  This is useful when alternative between
  +rule-less and ruled pages.  Example browse sequence:
   
   - https://example.org (no-script-mode no-image-mode) ; No rule.
   - https://nyxt.atlas.engineer (dark-mode) ; Rule
  
positive.code:   (mode-invocations (sera:filter #'rememberable-p modes)))
  
  (define-class auto-mode-rule ()
    ((test (error "Slot `test' should be set.")
           :type list)
     (included '()
               :type (or (cons mode-invocation *) null)
               :documentation "The list of `mode-invocation's to enable on rule activation.")
     (excluded '()
               :type (or (cons mode-invocation *) null)
               :documentation "The list of `mode-invocation's to disable on rule activation.")
     (exact-p nil
              :type boolean
              :documentation "Whether to exclusively enable the `included' modes."))
    (:export-class-name-p t)
    (:export-accessor-names-p t)
    (:accessor-name-transformer (class*:make-name-transformer name)))
  
negative.code:   (use-nyxt-package-nicknames))
  
  (define-class mode-invocation ()
    ((name
      (error "Mode invocation should have a name to call mode through.")
      :type symbol
      :documentation "Mode symbol to call the mode with.
  Package prefix is optional.")
     (arguments
      nil
      :type list
      :documentation "Arguments to activate the mode with."))
    (:export-class-name-p t)
    (:export-accessor-names-p t)
    (:accessor-name-transformer (class*:make-name-transformer name)))
  