summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-02-15 13:08:15 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-02-15 13:08:21 +0100
commitb535c8ba8735409b43ec9b1ce99a966cfa1383b1 (patch)
tree94fae987664b71a00ed74ebe3b32f90a4d554da3 /lisp
parent0bd846c17474b161b11fbe21545609cd545b1798 (diff)
downloademacs-b535c8ba8735409b43ec9b1ce99a966cfa1383b1.tar.gz
emacs-b535c8ba8735409b43ec9b1ce99a966cfa1383b1.tar.bz2
emacs-b535c8ba8735409b43ec9b1ce99a966cfa1383b1.zip
Add a new variable `global-minor-modes'
* doc/lispref/modes.texi (Minor Modes): Document it. * lisp/simple.el (global-minor-modes): New variable. (completion-in-mode-p): Use it. (completion-with-modes-p): Use it. * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Support it.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/easy-mmode.el13
-rw-r--r--lisp/simple.el13
2 files changed, 18 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index c48ec505ce0..4a9e58083b0 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -330,11 +330,14 @@ or call the function `%s'."))))
nil)
(t
t)))
- (unless ,globalp
- ;; Keep `local-minor-modes' up to date.
- (setq local-minor-modes (delq ',modefun local-minor-modes))
- (when ,getter
- (push ',modefun local-minor-modes)))
+ ;; Keep minor modes list up to date.
+ ,@(if globalp
+ `((setq global-minor-modes (delq ',modefun global-minor-modes))
+ (when ,getter
+ (push ',modefun global-minor-modes)))
+ `((setq local-minor-modes (delq ',modefun local-minor-modes))
+ (when ,getter
+ (push ',modefun local-minor-modes))))
,@body
;; The on/off hooks are here for backward compatibility only.
(run-hooks ',hook (if ,getter ',hook-on ',hook-off))
diff --git a/lisp/simple.el b/lisp/simple.el
index cb7496d37c5..aafbb3e1f88 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -138,6 +138,10 @@ messages are highlighted; this helps to see what messages were visited."
nil
"Overlay highlighting the current error message in the `next-error' buffer.")
+(defvar global-minor-modes nil
+ "A list of the currently enabled global minor modes.
+This is a list of symbols.")
+
(defcustom next-error-hook nil
"List of hook functions run by `next-error' after visiting source file."
:type 'hook
@@ -1985,14 +1989,16 @@ BUFFER, or any of the active minor modes in BUFFER."
(or (provided-mode-derived-p
(buffer-local-value 'major-mode buffer) (car modes))
(memq (car modes)
- (buffer-local-value 'local-minor-modes buffer)))
+ (buffer-local-value 'local-minor-modes buffer))
+ (memq (car modes) global-minor-modes))
;; Uncommon case: Multiple modes.
(apply #'provided-mode-derived-p
(buffer-local-value 'major-mode buffer)
modes)
(seq-intersection modes
(buffer-local-value 'local-minor-modes buffer)
- #'eq)))))
+ #'eq)
+ (seq-intersection modes global-minor-modes #'eq)))))
(defun completion-with-modes-p (modes buffer)
"Say whether MODES are in action in BUFFER.
@@ -2004,7 +2010,8 @@ or (if one of MODES is a minor mode), if it is switched on in BUFFER."
;; It's a minor mode.
(seq-intersection modes
(buffer-local-value 'local-minor-modes buffer)
- #'eq)))
+ #'eq)
+ (seq-intersection modes global-minor-modes #'eq)))
(defun completion-button-p (category buffer)
"Return non-nil if there's a button of CATEGORY at point in BUFFER."