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).
This commit is contained in:
parent
bd795dd659
commit
e1d54bb638
2 changed files with 8 additions and 1 deletions
|
@ -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
|
Use @code{:group @var{group}} in @var{keyword-args} to specify the
|
||||||
custom group for the mode variable of the global minor mode.
|
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
|
Generally speaking, when you define a globalized minor mode, you should
|
||||||
also define a non-globalized version, so that people can use (or
|
also define a non-globalized version, so that people can use (or
|
||||||
disable) it in individual buffers. This also allows them to disable a
|
disable) it in individual buffers. This also allows them to disable a
|
||||||
|
|
|
@ -418,6 +418,7 @@ on if the hook has explicitly disabled it.
|
||||||
(pretty-global-name (easy-mmode-pretty-mode-name global-mode))
|
(pretty-global-name (easy-mmode-pretty-mode-name global-mode))
|
||||||
(group nil)
|
(group nil)
|
||||||
(extra-keywords nil)
|
(extra-keywords nil)
|
||||||
|
(MODE-variable mode)
|
||||||
(MODE-buffers (intern (concat global-mode-name "-buffers")))
|
(MODE-buffers (intern (concat global-mode-name "-buffers")))
|
||||||
(MODE-enable-in-buffers
|
(MODE-enable-in-buffers
|
||||||
(intern (concat global-mode-name "-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
|
(pcase keyw
|
||||||
(:group (setq group (nconc group (list :group (pop body)))))
|
(:group (setq group (nconc group (list :group (pop body)))))
|
||||||
(:global (pop body))
|
(:global (pop body))
|
||||||
|
(:variable (setq MODE-variable (pop body)))
|
||||||
(:predicate
|
(:predicate
|
||||||
(setq predicate (list (pop body)))
|
(setq predicate (list (pop body)))
|
||||||
(setq turn-on-function
|
(setq turn-on-function
|
||||||
|
@ -541,7 +543,7 @@ list."
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(unless ,MODE-set-explicitly
|
(unless ,MODE-set-explicitly
|
||||||
(unless (eq ,MODE-major-mode major-mode)
|
(unless (eq ,MODE-major-mode major-mode)
|
||||||
(if ,mode
|
(if ,MODE-variable
|
||||||
(progn
|
(progn
|
||||||
(,mode -1)
|
(,mode -1)
|
||||||
(funcall ,turn-on-function))
|
(funcall ,turn-on-function))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue