Subject: Re: bug#75918: [PATCH] Add new user option tab-bar-define-keys

From: Juri Linkov <[email-masked]>
Date: Wed, 29 Jan 2025 19:29:09 +0200

>>> This is useful to avoid key binding conflicts, such as when folding in
>>> outline mode using TAB keys, or when a user wants to define her own
>>> tab-bar keys without first having to remove the defaults.
>>
>> The current implementation was intended to allow removing the default keys
>> easily from 'tab-bar-mode-map'.  Here is the NEWS from bug#69578:
>>
>>  *** New keymap 'tab-bar-mode-map'.
>>  By default it contains a keybinding 'C-TAB' to switch tabs, but only
>>  when 'C-TAB' is not bound globally.  You can unbind it if it conflicts
>>  with 'C-TAB' in other modes.
>
> This strategy doesn't account for the key definition race condition, and
> relies on the user to have first defined global TAB keys before
> tab-bar-mode is enabled.

It checks for global-key-binding every time when the user types C-TAB.
So it could also check with local-key-binding and
minor-mode-key-binding in e.g. outline mode, etc.

But since you want to move the C-TAB keybinding from tab-bar-mode-map
back to tab-bar--define-keys, then :filter is not needed anymore,
so you can check for global-key-binding only once in tab-bar--define-keys.