Subject: bug#62207: 29.0.60; Trying to remove non-existent key binding instead adds a binding

From: Robert Pluim <[email-masked]>
Date: Wed, 15 Mar 2023 18:39:43 +0100

>>>>> On Wed, 15 Mar 2023 19:13:20 +0200, Eli Zaretskii <[email-masked]> said:

    >> From: Jonas Bernoulli <[email-masked]>
    >> Date: Wed, 15 Mar 2023 17:07:42 +0100
    >> 
    >> However if you try to remove a binding that does not actually exist,
    >> then the opposite happens, a "nil binding" is *added*:
    >> 
    >> (let ((map (make-sparse-keymap)))
    >> (keymap-unset map "i" t)
    >> map)
    >> => (keymap (105))

    Eli> The same happens when you call define-key with REMOVE non-nil.
    Eli> keymap-unset just calls define-key, and does little else.

    Eli> Stefan, it sounds like the part of store_in_keymap after the label
    Eli> keymap_end should do nothing if REMOVE is non-zero, am I right?

Thatʼs the conclusion I came to. See the patch in my other message.

Robert
--