GNU bug report logs - #38843
define-globalized-minor-mode enable boolean will prevent loading with :require

Previous Next

Package: emacs;

Reported by: "Paul W. Rankin" <hello <at> paulwrankin.com>

Date: Wed, 1 Jan 2020 07:11:01 UTC

Severity: normal

Tags: fixed

Fixed in version 28.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 38843 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: "Paul W. Rankin" <hello <at> paulwrankin.com>
Cc: 38843 <at> debbugs.gnu.org
Subject: Re: bug#38843: define-globalized-minor-mode enable boolean will
 prevent loading with :require
Date: Fri, 30 Oct 2020 15:49:20 +0100
"Paul W. Rankin" <hello <at> paulwrankin.com> writes:

> If a global minor modes is based on local minor modes, it may use a
> :require keyword in the global minor mode definition, e.g. from
> page-break-lines:
>
>     ;;;###autoload
>     (define-global-minor-mode global-page-break-lines-mode
>       page-break-lines-mode page-break-lines-mode-maybe
>       :require 'page-break-lines
>       :group 'page-break-lines)
>
> Toggling the option global-page-break-lines-mode in this case will add
> the following to the user's init:
>
>     '(global-page-break-lines-mode t nil (page-break-lines))
>
> The problem occurs when page-break-lines is for whatever reason
> unavailable, it will prevent Emacs from loading.

So the problem is basically that you've switched a minor mode on via
Customize, but then deleted the minor mode.  I'm actually not sure
whether it makes sense for Emacs to signal an error or not here: You've
asked to have a mode switched on, but then Emacs can't do that because
it can't find the file it's defined in.

So this is, in some ways, no different from having a `require' in your
.emacs that no longer exists.

On the other hand, it's a bit unfriendly, and doing the same with other
mode variables doesn't bug out.  The following patch fixes the problem.

Does anybody have an opinion here?

diff --git a/lisp/custom.el b/lisp/custom.el
index cc445fe765..94c36dedd9 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1010,7 +1010,9 @@ custom-theme-set-variables
 	       set)
 	  (when requests
 	    (put symbol 'custom-requests requests)
-            (mapc #'require requests))
+            (mapc (lambda (lib) (ignore-error file-missing
+                                  (require lib)))
+                  requests))
           (setq set (or (get symbol 'custom-set) #'custom-set-default))
 	  (put symbol 'saved-value (list value))
 	  (put symbol 'saved-variable-comment comment)


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




This bug report was last modified 4 years and 206 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.