[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#78582: 30.1; which-key-mode overwrites custom key bindings
From: |
Gerd Möllmann |
Subject: |
bug#78582: 30.1; which-key-mode overwrites custom key bindings |
Date: |
Mon, 02 Jun 2025 14:49:43 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Gerd Möllmann <gerd.moellmann@gmail.com>
>>> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, murray.alex@gmail.com,
>>> luangruo@yahoo.com, 78582@debbugs.gnu.org
>>> Date: Mon, 02 Jun 2025 10:22:38 +0200
>>>
>>> Eli Zaretskii <eliz@gnu.org> writes:
>>>
>>> >> From: Gerd Möllmann <gerd.moellmann@gmail.com>
>>> >> Cc: Alex Murray <murray.alex@gmail.com>, Po Lu <luangruo@yahoo.com>,
>>> >> 78582@debbugs.gnu.org
>>> >> Date: Mon, 02 Jun 2025 06:24:12 +0200
>>> >>
>>> >> Gerd Möllmann <gerd.moellmann@gmail.com> 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?
>>>
>>> I don't follow. I didn't say it was done unintentionally, and being done
>>> intentionally doesn't mean it's right.
>>
>> Not it general, but please tell what is wrong with the logic I
>> described above that is at work in this particular case. Are you
>> saying that it is wrong to expect loaddefs not be loaded by a running
>> Emacs session? If so, please tell why.
>
> AFAICT, the code in Fdocumentation can reload doc strings from files. I
> showed reread_doc_file.
>
> doc.c:
> 310 static void
> 311 reread_doc_file (Lisp_Object file)
> 312 {
> 313 if (NILP (file))
> 314 Fsnarf_documentation (Vdoc_file_name);
> 315 else
> 316 save_match_data_load (file, Qt, Qt, Qt, Qnil);
> 317 }
>
> Secondly, doc strings can point to loaddefs.el
>
> (function-documentation 'rectangle-mark-mode)
> => ("loaddefs.elc" . 1059343)
>
> in the Emacs I'm writing this.
>
> Both together mean that loaddefs can be loaded when the path through
> reread_doc_file is taken. Not that I know why it happens, but it does
> happen, as this case demonstrates.
>
> Code that prevents loaddefs specifically from being loaded I can't find.
> Maybe it was just an assumption that this never happens and something
> was changed that made the assumption being wrong? Don't know.
Forgot to mention: kmacro and smerge seem to be the only ones using this
"global-set-key in loaddefs" mechanism.
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/01
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Eli Zaretskii, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Eli Zaretskii, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings,
Gerd Möllmann <=
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Stefan Monnier, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Robert Pluim, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Eli Zaretskii, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Stefan Monnier, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Stefan Monnier, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Gerd Möllmann, 2025/06/02
- bug#78582: 30.1; which-key-mode overwrites custom key bindings, Eli Zaretskii, 2025/06/03