anchor.diff:                        &allow-other-keys)
                  (let ((existing-instance (find-submode name buffer)))
                    (unless explicit?
  -                   (setf activate (not existing-instance)))
  +                   (setf activate (or (not existing-instance)
  +                                      (not (slot-value existing-instance 'enabled-p)))))
                    (if activate
  -                     (unless existing-instance
  -                       (enable (apply #'make-instance name
  -                                      :buffer buffer
  -                                      args)))
  +                     ;; TODO: Shall we pass args to `make-instance' or `enable'?  Have 2 args parameters?
  +                     (enable (or existing-instance
  +                                 (apply #'make-instance name
  +                                        :buffer buffer
  +                                        args)))
                        (when existing-instance
                          (disable existing-instance))))))
           (delete-command name))))
  
positive.code:         (print-status))
      ;; TODO: Should we move mode to the front when it already exists?
      (push mode (modes (buffer mode))))
    (log:debug "~a enabled." mode))
  
  (export-always 'disable)
  
negative.code:                  buffer))
          (prompt-render-prompt buffer)
          (print-status)))
    (setf (slot-value mode 'enabled-p) nil)
    (log:debug "~a disabled." mode))
  
  (export-always 'define-mode)
  