Subject: Re: bug#78582: 30.1; which-key-mode overwrites custom key bindings

From: Eli Zaretskii <[email-masked]>
Date: Mon, 02 Jun 2025 10:33:18 +0300

> From: Gerd Möllmann <[email-masked]>
> Cc: Alex Murray <[email-masked]>,  Po Lu <[email-masked]>,
>   [email-masked]
> Date: Mon, 02 Jun 2025 06:24:12 +0200
> 
> Gerd Möllmann <[email-masked]> writes:
> 
> > I have no idea how to fix this.
> 
> In any case, code that changes global state like global-set-key does
> looks wrong in loaddefs.el.

What's wrong with it?  It's a direct effect of this part of kmacro.el:

  ;;; Provide some binding for startup:
  ;;;###autoload (global-set-key "\C-x(" #'kmacro-start-macro)
  ;;;###autoload (global-set-key "\C-x)" #'kmacro-end-macro)
  ;;;###autoload (global-set-key "\C-xe" #'kmacro-end-and-call-macro)
  ;;;###autoload (global-set-key [f3] #'kmacro-start-macro-or-insert-counter)
  ;;;###autoload (global-set-key [f4] #'kmacro-end-or-call-macro)
  ;;;###autoload (global-set-key "\C-x\C-k" #'kmacro-keymap)
  ;;;###autoload (autoload 'kmacro-keymap "kmacro" "Keymap for keyboard macro commands." t 'keymap)

IOW, we do this on purpose, for the reasons explained in the comment.
Given that loaddefs is supposed toe be loaded just once, during
dumping, why is that wrong?