Subject: bug#69107: 30.0.50; mouse movement commands exit repeat maps

From: StrawberryTea <[email-masked]>
Date: Wed, 14 Feb 2024 10:38:03 -0600

Okay, so as a follow-up, the previous solution did not work. I had to remove the
<mouse-movement> event altogether with

(setq-hook! ’post-command-hook track-mouse nil)

Now they don’t trigger randomly for me anymore.
StrawberryTea <[email-masked]> writes:

> Thanks, I just finally realized that I can map mouse movement to nil.
>
> (after! lsp-ui-doc
>   (map! :map lsp-ui-doc-mode-map
>         “<mouse-movement>” nil))
>
> I never use that feature so this worked fine for me rather than digging into why
> the <mouse-movement> events were being generated.
>
> Thank you,
> StrawberryTea
> Eli Zaretskii <[email-masked]> writes:
>
>>> From: StrawberryTea <[email-masked]>
>>> Date: Tue, 13 Feb 2024 12:53:18 -0600
>>>
>>> Hi. I’m using LSP mode which defines a <mouse-movement> command. I have
>>> noticed that in some special situation involving switching workspaces in
>>> Doom Emacs while using EXWM (Emacs X Window Manager), the
>>> <mouse-movement> command is triggered after switching workspaces which
>>> triggers the repeat map to exit even though the mouse wasn’t actually
>>> visibly moved. I think it might be reasonable to exclude mouse movement
>>> commands from exiting the repeat map by default or as an option.
>>
>> You can do that yourself for commands you want to repeat, can’t you?
>> From the node “Creating Keymaps” in the ELisp Reference manual:
>>
>>      Each command in the keymap can be marked as ’repeatable’, i.e.
>>      usable in ‘repeat-mode’, by putting a ‘repeat-map’ property on it,
>>      e.g.
>>
>>           (put ’undo ’repeat-map ’undo-repeat-map)
>>
>>      where the value of the property is the map to be used by
>>      ‘repeat-mode’.
>>
>> There’s no way the default configuration can ever anticipate all of
>> the known and unknown commands that some users could want to be
>> repeatable.  But each user can add commands to the set of repeatable
>> ones by using the above technique.