#66246

WhichKey dismisses an open modal when a key chord is pending

Opendylanbmorganopened 2d ago

Reproduction steps

  1. Enable which-key with a short delay:
    "which_key": { "enabled": true, "delay_ms": 0 }
  2. In a file with a language server that supports call hierarchy, place the cursor on a function and press cmd-k cmd-h (call_hierarchy::ShowIncomingCalls).
  3. With the call hierarchy picker open, try any of its default chords: cmd-k right (menu::SelectChild), cmd-k left (menu::SelectParent) or cmd-k cmd-h (call_hierarchy::ToggleDirection).

Current vs. Expected behavior

Current: The picker closes as soon as the first cmd-k is pressed, and the second keystroke does nothing.

Expected: The chord runs inside the picker, and the picker stays open.

With a larger delay_ms (e.g. 1000) the chords work if the second key is pressed before which-key appears. If you pause, the picker still closes, so the delay only changes how often this happens.

Zed version and system specs

Zed: v1.25.3+stable.382.8dd255c3eafb5231056fe4e6f601cedd011f1c93 (Zed) OS: macOS 27.0.1 Memory: 48 GiB Architecture: aarch64

Attach Zed log file

N/A – nothing relevant

Relevant Zed settings

settings.json
  "which_key": {
    "delay_ms": 0,
    "enabled": true
  },

Relevant Keymap

N/A – nothing relevant

(for AI issues) Model provider details

No response

If you are using WSL on Windows, what flavor of Linux are you using?

None

Activity

1
yeskunall1d ago

I reproduced this with “Go to Line” on Nightly 1.27.0+nightly.3484 (5e8998a2), macOS 15.8.1. Cmd-K replaces the open modal with WhichKey, and Escape doesn’t bring it back. I haven’t tested call hierarchy itself.

Reproduction and timing control
"which_key": { "enabled": true, "delay_ms": 0 }
  1. Open a text file and press Ctrl-G to open “Go to Line”.
  2. Press Cmd-K. WhichKey appears and “Go to Line” disappears.
  3. Press Escape. WhichKey closes, but “Go to Line” stays closed.

With delay_ms: 1000, completing Cmd-K Cmd-Left quickly kept the modal open in my single-pane fixture. Pausing after Cmd-K lost the modal instead. I restored my settings after testing.

Screenshots