Centralize logic around which keybind to display (#25215)

Closes #24931

We've flipped back and forth at least once on whether the last or first
added keybinding should be shown in different contexts (See
[this](https://github.com/zed-industries/zed/issues/23621#issuecomment-2614061385)
as well as #23621 and the subsequent #23660)

This PR attempts to pick a side to stick with so that we are at least
consistent until #23660 is resolved and we have a way to determine which
keybinds to display in a manner that is both consistent and not
confusing

Release Notes:

- N/A
This commit is contained in:
Ben Kunkle 2025-02-20 09:08:12 -05:00 committed by GitHub
parent d4392aaf2d
commit b84aec0fae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 19 deletions

View file

@ -290,15 +290,10 @@ impl MacPlatform {
action,
os_action,
} => {
// Note that this is not the standard logic for selecting which keybinding to
// display. Typically the last binding takes precedence for display. However, in
// this case the menus are not updated on context changes. To make these bindings
// more likely to be correct, the first binding instead takes precedence (typically
// from the base keymap).
let keystrokes = keymap
.bindings_for_action(action.as_ref())
.next()
.map(|binding| binding.keystrokes());
let keystrokes = crate::Keymap::binding_to_display_from_bindings(
keymap.bindings_for_action(action.as_ref()),
)
.map(|binding| binding.keystrokes());
let selector = match os_action {
Some(crate::OsAction::Cut) => selector("cut:"),