From: Lars Ingebrigtsen Date: Thu, 11 Mar 2021 23:41:50 +0000 (+0100) Subject: Make byte-compiled uses of `define-minor-mode' more compatible X-Git-Tag: emacs-28.0.90~3311 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d0125959d775fc8868b3c4cec78c4120eb67d643;p=emacs.git Make byte-compiled uses of `define-minor-mode' more compatible * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Be more defensive about accessing minor mode variables. --- diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 4a9e58083b0..addb58cdbbe 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -332,12 +332,20 @@ or call the function `%s'.")))) t))) ;; Keep minor modes list up to date. ,@(if globalp - `((setq global-minor-modes (delq ',modefun global-minor-modes)) + ;; When running this byte-compiled code in earlier + ;; Emacs versions, these variables may not be defined + ;; there. So check defensively, even if they're + ;; always defined in Emacs 28 and up. + `((when (boundp 'global-minor-modes) + (setq global-minor-modes + (delq ',modefun global-minor-modes)) + (when ,getter + (push ',modefun global-minor-modes)))) + ;; Ditto check. + `((when (boundp 'local-minor-modes) + (setq local-minor-modes (delq ',modefun local-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)))) + (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))