diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-02-04 15:22:40 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-02-04 15:22:40 +0100 |
commit | e1d54bb638dfb017acb778a45092f97bb0d3427c (patch) | |
tree | 8c6f1c69188826ef7385f8da840bb19673e7f114 | |
parent | bd795dd659d6f67077f1870bbb775df15ce6001b (diff) | |
download | emacs-e1d54bb638dfb017acb778a45092f97bb0d3427c.tar.gz |
Allow a :variable keyword in define-globalized-minor-mode
* 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).
-rw-r--r-- | doc/lispref/modes.texi | 5 | ||||
-rw-r--r-- | lisp/emacs-lisp/easy-mmode.el | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index abc12546410..ce7727b87eb 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -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 diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 54c0cf08b78..2916ae4adea 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -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)) |