ZIm/crates
Dino e0fc767c11
Display case-sensitive keybindings for vim commands (#24322)
This Pull Request tackles the issue outline in #14287 by changing the
way `KeyBinding`s for vim mode are displayed in the command palette.
It's worth pointing out that this whole thing was pretty much
implemented by Conrad Irwin during a pairing session, I just tried to
clean up some other changes introduced for a different issue, while
improving some comments.

Here's a quick list of the changes introduced:

- Update `KeyBinding` with a new `vim_mode` field to determine whether
the keybinding should be displayed in vim mode.
- Update the way `KeyBinding` is rendered, so as to detect if the
keybinding is for vim mode, if it is, only display keys in uppercase if
they require the shift key.
- Introduce a new global state – `VimStyle(bool)` - use to determine
whether `vim_mode` should be enabled or disabled when creating a new
`KeyBinding` struct. This global state is automatically set by the `vim`
crate whenever vim mode is enabled or disabled.
- Since the app's context is now required when building a `KeyBinding` ,
update a lot of callers to correctly pass this context.

And before and after screenshots, for comparison:

| before | after |
|--------|-------|
| <img width="1050" alt="SCR-20250205-tyeq"
src="https://github.com/user-attachments/assets/e577206d-2a3d-4e06-a96f-a98899cc15c0"
/> | <img width="1050" alt="SCR-20250205-tylh"
src="https://github.com/user-attachments/assets/ebbf70a9-e838-4d32-aee5-0ffde94d65fb"
/> |

Closes #14287 

Release Notes:

- Fix rendering of vim commands to preserve case sensitivity

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2025-02-14 22:03:59 -07:00
..
activity_indicator Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
anthropic Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
assets Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
assistant2 Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
assistant_context_editor Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
assistant_settings Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
assistant_slash_command Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant_slash_commands windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
assistant_tool Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant_tools Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
audio Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
auto_update Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
auto_update_ui auto_update_ui: Show update notification across workspaces (#23458) 2025-02-06 08:05:41 +00:00
breadcrumbs Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
buffer_diff Implement staging and unstaging hunks (#24606) 2025-02-12 19:46:42 +00:00
call Use different commit author for collab project clients (#24058) 2025-01-31 23:25:58 +00:00
channel Rename model based variable names to entity (#24198) 2025-02-04 10:24:35 -08:00
cli Add build SHA to panic reports and zed --version (on nightly/dev) (#24258) 2025-02-06 02:09:24 -07:00
client Replace rustls-native-certs with rustls-platform-verifier (#24656) 2025-02-12 07:32:17 -08:00
clock chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
collab Git context menu (#24844) 2025-02-14 14:04:32 -07:00
collab_ui Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
collections chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
command_palette Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
command_palette_hooks vim: :set support (#24209) 2025-02-11 04:55:40 +00:00
component project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
component_preview ui: Update Label component (#24653) 2025-02-11 20:16:59 +00:00
context_server Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
context_server_settings Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
copilot project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
db Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
deepseek Add DeepSeek support (#23551) 2025-01-27 13:40:59 -05:00
diagnostics lsp: Send DidOpen notifications when changing selections in multi buffer (#22958) 2025-02-07 12:33:35 +01:00
docs_preprocessor Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
editor Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
evals Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
extension theme: Implement icon theme reloading (#24449) 2025-02-07 11:30:53 -05:00
extension_api chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
extension_cli extension_cli: Include the list of what an extension provides in the generated manifest (#24295) 2025-02-05 18:17:19 +00:00
extension_host project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
extensions_ui extensions_ui: Add general structure for filtering extensions by what they provide (#24325) 2025-02-06 00:09:37 +00:00
feature_flags zeta: Remove predict-edits-launch feature flag (#24829) 2025-02-13 21:48:09 +00:00
feedback edit predictions: Cache settings across renders (#24581) 2025-02-10 20:57:25 +00:00
file_finder Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
file_icons Allow icon themes to provide their own file associations (#24926) 2025-02-15 00:35:13 +00:00
fs git: Compute and synchronize diffs from HEAD (#23626) 2025-02-04 15:29:10 -05:00
fsevent Deflake fs::test_event_stream_simple (#24013) 2025-01-30 23:53:36 -07:00
fuzzy windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
git Git context menu (#24844) 2025-02-14 14:04:32 -07:00
git_hosting_providers Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
git_ui Git context menu (#24844) 2025-02-14 14:04:32 -07:00
go_to_line project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
google_ai google_ai: Add support for Gemini 2.0 models (#24448) 2025-02-07 11:18:18 -05:00
gpui linux: Fix reload hangs for several minutes (#24882) 2025-02-14 21:54:26 +05:30
gpui_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
gpui_tokio Make the gpui_tokio crate generic over the context it spawns (#23995) 2025-01-31 02:00:55 +00:00
html_to_markdown Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
http_client Replace rustls-native-certs with rustls-platform-verifier (#24656) 2025-02-12 07:32:17 -08:00
image_viewer ui: Update Label component (#24653) 2025-02-11 20:16:59 +00:00
indexed_docs Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
inline_completion edit predictions: Show user if current project is open source (#24587) 2025-02-10 22:28:56 -03:00
inline_completion_button inline_completion_button: Put "Eager Preview Mode" menu entry behind a feature flag (#24734) 2025-02-12 16:23:23 +00:00
install_cli Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
journal Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
language edit predictions: Fix cursor popover edit preview panic (#24866) 2025-02-14 15:44:45 +01:00
language_extension Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
language_model assistant: Add Mistral support (#24879) 2025-02-14 13:07:41 -05:00
language_model_selector Fix hover tooltips appearing after related element is pressed (#24540) 2025-02-10 00:16:12 +00:00
language_models assistant: Add Mistral support (#24879) 2025-02-14 13:07:41 -05:00
language_selector Refactor to use SharedString in more places (#23813) 2025-01-28 19:04:21 -05:00
language_tools Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
languages Use shell script language for bats files (#24877) 2025-02-14 17:34:43 -05:00
livekit_client Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
livekit_client_macos Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
livekit_server chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
lmstudio lmstudio: Support missing quantization in model metadata (#24054) 2025-01-31 22:28:11 +00:00
lsp project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
markdown markdown: Use parsed text (#24388) 2025-02-06 18:37:50 -08:00
markdown_preview Migrate more events to telemetry::event! macro (#24102) 2025-02-03 16:38:45 +00:00
media chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
menu chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
migrator migrator: Fix keymap task_name regression (#24898) 2025-02-15 01:33:30 +05:30
mistral assistant: Add Mistral support (#24879) 2025-02-14 13:07:41 -05:00
multi_buffer Fix scroll to top on multibuffer save (#24885) 2025-02-14 13:18:07 -05:00
node_runtime Pass extra CA certs to node process if env var exists (#23662) 2025-01-30 08:56:02 -08:00
notifications Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
ollama Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
open_ai open_ai: Include o3-mini in Model::from_id (#24261) 2025-02-05 16:45:38 -05:00
outline project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
outline_panel Allow icon themes to provide their own file associations (#24926) 2025-02-15 00:35:13 +00:00
panel git_ui: Update git panel commit editor, start on quick commit 2025-02-10 15:52:09 +00:00
paths Settings/keymap backup path next to files + update notification messages (#24517) 2025-02-09 16:51:37 -07:00
picker Migrate keymap and settings + edit predictions rename (#23834) 2025-02-07 21:17:07 +05:30
prettier project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
project Git context menu (#24844) 2025-02-14 14:04:32 -07:00
project_panel Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
project_symbols windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
prompt_library Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
proto Git context menu (#24844) 2025-02-14 14:04:32 -07:00
recent_projects Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
refineable windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
release_channel Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
remote Add SSH port forwards to settings (#24474) 2025-02-14 14:52:24 -07:00
remote_server remote_server: Remove unnecessary Box, prevent time-of-check time-of-use bug (#24730) 2025-02-12 20:55:22 -07:00
repl Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
reqwest_client Replace rustls-native-certs with rustls-platform-verifier (#24656) 2025-02-12 07:32:17 -08:00
rich_text Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
rope git: Compute and synchronize diffs from HEAD (#23626) 2025-02-04 15:29:10 -05:00
rpc extensions_ui: Add general structure for filtering extensions by what they provide (#24325) 2025-02-06 00:09:37 +00:00
schema_generator Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
search Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
semantic_index Update tree-sitter to 0.24 (#24492) 2025-02-10 10:52:27 -08:00
semantic_version chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
session Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
settings migrator: In-memory migration and improved UX (#24621) 2025-02-12 06:47:08 +05:30
settings_ui Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
snippet Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
snippet_provider snippets: Fix snippets not updating while containing comments (#23755) 2025-01-28 10:37:48 +01:00
snippets_ui Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
sqlez Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
sqlez_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
story Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
storybook ui: Update Label component (#24653) 2025-02-11 20:16:59 +00:00
streaming_diff chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
sum_tree Implement staging and unstaging hunks (#24606) 2025-02-12 19:46:42 +00:00
supermaven Include prediction ID on edit prediction accepted/discarded events (#24480) 2025-02-07 22:06:37 +00:00
supermaven_api Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
tab_switcher project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
task Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
tasks_ui Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
telemetry chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
telemetry_events Add build SHA to panic reports and zed --version (on nightly/dev) (#24258) 2025-02-06 02:09:24 -07:00
terminal Solve 50+ cargo doc warnings (#24071) 2025-02-01 06:19:29 +00:00
terminal_view Adds a way to toggle font size without settings adjustments (#24857) 2025-02-14 13:27:48 +02:00
text Fix unnecessarily large edits emitted from multi buffer on diff recalculation (#23753) 2025-01-27 18:11:15 -08:00
theme theme: Add file icon associations for .rdata and .RData files (#24925) 2025-02-15 02:04:35 +00:00
theme_extension theme: Implement icon theme reloading (#24449) 2025-02-07 11:30:53 -05:00
theme_importer Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
theme_selector theme: Add support for setting light/dark icon themes (#24702) 2025-02-11 23:45:37 +00:00
time_format Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
title_bar Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
toolchain_selector Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
ui Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
ui_input Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
ui_macros component: Add component and component_preview crates to power UI components (#24456) 2025-02-09 13:25:03 -05:00
util Fix linux zeta modifiers display (#24764) 2025-02-12 14:46:42 -08:00
util_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
vim Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
vim_mode_setting Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
welcome welcome: Try Zed Edit Prediction (#24876) 2025-02-14 10:28:07 -05:00
workspace Move git status updates to a background thread #2 (#24722) 2025-02-14 16:47:11 +02:00
worktree Move git status updates to a background thread #2 (#24722) 2025-02-14 16:47:11 +02:00
zed Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00
zed_actions Adds a way to toggle font size without settings adjustments (#24857) 2025-02-14 13:27:48 +02:00
zeta Display case-sensitive keybindings for vim commands (#24322) 2025-02-14 22:03:59 -07:00