GNU bug report logs - #78995
[PATCH] ;;;autoload-expand for special macros

Previous Next

Package: emacs;

Reported by: JD Smith <jdtsmith <at> gmail.com>

Date: Fri, 11 Jul 2025 19:29:02 UTC

Severity: normal

Tags: patch

Fixed in version 31

Done: "J.D. Smith" <jdtsmith <at> gmail.com>

Full log


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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "J.D. Smith" <jdtsmith <at> gmail.com>
Cc: 78995 <at> debbugs.gnu.org
Subject: Changes to `loaddefs.el` for define-minor-mode
Date: Wed, 20 Aug 2025 07:17:45 -0400
AFAICT, the new code seems to change the contents of `loaddefs.el` for
`define-minor-mode`, e.g.:

    % grep '(.*global-auto-revert-mode' **/*defs*.el
    lisp/ldefs-boot.el:(defvar global-auto-revert-mode nil "\
    lisp/ldefs-boot.el:(custom-autoload 'global-auto-revert-mode "autorevert" nil)
    lisp/ldefs-boot.el:(autoload 'global-auto-revert-mode "autorevert" "\
    lisp/ldefs-boot.el:evaluate `(default-value \\='global-auto-revert-mode)'.
    lisp/loaddefs.el:(autoload 'global-auto-revert-mode "autorevert" "\
    % 

As you can see the `global-auto-revert-mode` variable ends up
not preloaded.  I'm generally opposed to preloading variables, but the
change introduces a backward incompatibility with packages which presume
they can take the value of `global-auto-revert-mode` without resorting
to any `boundp` check, such as Magit.

So I suggest the patch below,


        Stefan


diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el
index 9e91a11204d..e0b3859136c 100644
--- a/lisp/emacs-lisp/loaddefs-gen.el
+++ b/lisp/emacs-lisp/loaddefs-gen.el
@@ -155,7 +155,7 @@ loaddefs-generate--shorten-autoload
 ;; employing :autoload-end to omit unneeded forms).
 (defconst loaddefs--defining-macros
   '( define-skeleton define-derived-mode define-compilation-mode
-     define-generic-mode define-globalized-minor-mode define-minor-mode
+     define-generic-mode define-globalized-minor-mode
      cl-defun defun* cl-defmacro defmacro* define-overloadable-function
      transient-define-prefix transient-define-suffix transient-define-infix
      transient-define-argument transient-define-group





This bug report was last modified 27 days ago.

Previous Next


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