]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow a :variable keyword in define-globalized-minor-mode
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Feb 2021 14:22:40 +0000 (15:22 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Feb 2021 14:22:40 +0000 (15:22 +0100)
* doc/lispref/modes.texi (Defining Minor Modes): Document it.
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Allow specifying a :variable to be used if the underlying mode has
a divergent variable to store the state (bug#29081).

doc/lispref/modes.texi
lisp/emacs-lisp/easy-mmode.el

index abc12546410d652efa062d63fa6bab36031f46ab..ce7727b87ebcb1b32071724f871ee81957ee6a8b 100644 (file)
@@ -1826,6 +1826,11 @@ starts, for example by providing a @code{:require} keyword.
 Use @code{:group @var{group}} in @var{keyword-args} to specify the
 custom group for the mode variable of the global minor mode.
 
+By default, the buffer-local minor mode variable that says whether the
+mode is switched on or off is the same as the name of the mode itself.
+Use @code{:variable @var{variable}} if that's not the case--some minor
+modes use a different variable to store this state information.
+
 Generally speaking, when you define a globalized minor mode, you should
 also define a non-globalized version, so that people can use (or
 disable) it in individual buffers.  This also allows them to disable a
index 54c0cf08b788a310e67158e0bfbce0f5879f9be7..2916ae4adea5fdc083e9816c2fad3b62b07282d2 100644 (file)
@@ -418,6 +418,7 @@ on if the hook has explicitly disabled it.
         (pretty-global-name (easy-mmode-pretty-mode-name global-mode))
         (group nil)
         (extra-keywords nil)
+         (MODE-variable mode)
         (MODE-buffers (intern (concat global-mode-name "-buffers")))
         (MODE-enable-in-buffers
          (intern (concat global-mode-name "-enable-in-buffers")))
@@ -439,6 +440,7 @@ on if the hook has explicitly disabled it.
       (pcase keyw
         (:group (setq group (nconc group (list :group (pop body)))))
         (:global (pop body))
+        (:variable (setq MODE-variable (pop body)))
         (:predicate
          (setq predicate (list (pop body)))
          (setq turn-on-function
@@ -541,7 +543,7 @@ list."
                (with-current-buffer buf
                  (unless ,MODE-set-explicitly
                    (unless (eq ,MODE-major-mode major-mode)
-                     (if ,mode
+                     (if ,MODE-variable
                          (progn
                            (,mode -1)
                            (funcall ,turn-on-function))