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

From: Ship Mints <[email-masked]>
Date: Wed, 29 Jan 2025 12:52:18 -0500

Right. How about I get rid of tab-bar-mode--tab-key-bind and just bind
normally? I'll submit a revised patch shortly, if so.

On Wed, Jan 29, 2025 at 12:35 PM Juri Linkov <[email-masked]> wrote:

> >>> 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.
>