GNU bug report logs -
#75933
29; Disabling smerge-command-prefix results in error
Previous Next
Full log
View this message in rfc822 format
> Ping! How should we proceed with this issue?
Maybe another way to look at it is that it's again bumping into
`define-keymap`s limitation that you can't easily "deactivate"
a binding.
We saw that back in the bug#68213: if a keymap is defined where some of
the key sequences are chosen dynamically (typically coming from a config
var), we tend to get into trouble where it can be difficult/inconvenient
to avoid duplicate key bindings (we fixed that problem by demoting that
error to a warning), and similarly there's no easy way for the user to
say "no key at all" (which was another way we could have fixed the
problem in bug#68213).
Maybe we should have an "impossible key sequence" (like we have the
`regexp-unmatchable`) and offer it in the customization interface?
And then arrange for `define-keymap` (and maybe others) to handle
it accordingly.
Not sure what that key sequence should be, but some choices that come to
mind would be:
- nil
- [] (a.k.a "")
- [impossible]
Stefan
>> Cc: 75933 <at> debbugs.gnu.org
>> Date: Thu, 06 Feb 2025 14:50:04 +0100
>> From: Jonas Bernoulli via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>>
>> >> (easy-mmode-defmap smerge-mode-map
>> >> `((,smerge-command-prefix . ,smerge-basic-map))
>> >> "Keymap for `smerge-mode'.")
>> >>
>> >> In Emacs 29.1 (after 2ae3b66fa80 and some fixup commits), the former
>> >> remained as it was in 28, but the latter was replaced with:
>> >>
>> >> (defvar-keymap smerge-mode-map
>> >> (key-description smerge-command-prefix) smerge-basic-map)
>> >>
>> >> Setting the option to "", to add no prefix command, results in:
>> >>
>> >> keymap--check: "" is not a valid key definition; see `key-valid-p'
>> >
>> > Emacs Emacs<29 setting the option to "" resulted in keeping
>> > `smerge-mode-map` empty, AFAICT. Is that what you wanted or did you
>> > expect all the bindings of `smerge-basic-map` to be made available
>> > without a prefix?
>>
>> Well *I* am perfectly happy with the defaults. But there's at least one
>> Magit user who never uses Smerge and thus doesn't want keymaps cluttered
>> with its bindings.
>>
>> > To my mind the value "" would be closer to meaning that all the bindings
>> > of `smerge-basic-map` should be made available without a prefix, and if
>> > we want to allow the bindings to be completely absent, it might make
>> > more sense to use a nil value.
>>
>> That does make sense to me too, but I don't think that users who have
>> set this to "", to not even use a top-level binding for Smerge commands,
>> would be happy if the meaning were changed to add *multiple* top-level
>> bindings, that's worse for them than the default of one prefix keymap.
>> So it might be better to use two new symbols, such as 'top-level and
>> 'none, and make "" a backward compatibility alias for 'none.
>>
>>
>>
>>
This bug report was last modified 112 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.