From 27d57ba3b6b2ed0a2878c92eb11693e02cd5ef29 Mon Sep 17 00:00:00 2001 From: Cole Miller Date: Mon, 27 Jan 2025 16:58:09 -0500 Subject: [PATCH] git: First stab at adding Linux and Vim keybindings (#23738) Release Notes: - N/A --- Cargo.lock | 1 + assets/keymaps/default-linux.json | 29 +++++++++++++++++++++++++ assets/keymaps/vim.json | 15 +++++++++++++ crates/vim/Cargo.toml | 1 + crates/vim/src/test/vim_test_context.rs | 1 + 5 files changed, 47 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index ec6d1dd38c..771bd34efb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14417,6 +14417,7 @@ dependencies = [ "command_palette_hooks", "editor", "futures 0.3.31", + "git_ui", "gpui", "indoc", "itertools 0.14.0", diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 4fd1956b00..2fc6c3c344 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -426,6 +426,7 @@ "ctrl-shift-m": "diagnostics::Deploy", "ctrl-shift-e": "project_panel::ToggleFocus", "ctrl-shift-b": "outline_panel::ToggleFocus", + "ctrl-shift-g": "git_panel::ToggleFocus", "ctrl-?": "assistant::ToggleFocus", "alt-save": "workspace::SaveAll", "ctrl-alt-s": "workspace::SaveAll", @@ -692,6 +693,34 @@ "space": "project_panel::Open" } }, + { + "context": "GitPanel && !CommitEditor", + "use_key_equivalents": true, + "bindings": { + "escape": "git_panel::Close" + } + }, + { + "context": "GitPanel && ChangesList", + "use_key_equivalents": true, + "bindings": { + "up": "menu::SelectPrev", + "down": "menu::SelectNext", + "enter": "menu::Confirm", + "space": "git::ToggleStaged", + "ctrl-space": "git::StageAll", + "ctrl-shift-space": "git::UnstageAll" + } + }, + { + "context": "GitPanel && CommitEditor > Editor", + "use_key_equivalents": true, + "bindings": { + "escape": "git_panel::FocusChanges", + "ctrl-enter": "git::CommitChanges", + "ctrl-shift-enter": "git::CommitAllChanges" + } + }, { "context": "CollabPanel && not_editing", "bindings": { diff --git a/assets/keymaps/vim.json b/assets/keymaps/vim.json index e8c4dc1d31..c45a71ff7e 100644 --- a/assets/keymaps/vim.json +++ b/assets/keymaps/vim.json @@ -668,5 +668,20 @@ "shift-g": "menu::SelectLast", "g g": "menu::SelectFirst" } + }, + { + "context": "GitPanel && ChangesList", + "use_key_equivalents": true, + "bindings": { + "k": "menu::SelectPrev", + "j": "menu::SelectNext", + "g g": "menu::SelectFirst", + "shift-g": "menu::SelectLast", + "g f": "menu::Confirm", + "i": "git_panel::FocusEditor", + "x": "git::ToggleStaged", + "shift-x": "git::StageAll", + "shift-u": "git::UnstageAll" + } } ] diff --git a/crates/vim/Cargo.toml b/crates/vim/Cargo.toml index 46915c9f6e..d368fc102e 100644 --- a/crates/vim/Cargo.toml +++ b/crates/vim/Cargo.toml @@ -51,6 +51,7 @@ zed_actions.workspace = true assets.workspace = true command_palette.workspace = true editor = { workspace = true, features = ["test-support"] } +git_ui.workspace = true gpui = { workspace = true, features = ["test-support"] } indoc.workspace = true language = { workspace = true, features = ["test-support"] } diff --git a/crates/vim/src/test/vim_test_context.rs b/crates/vim/src/test/vim_test_context.rs index bed11af589..a9b9f40352 100644 --- a/crates/vim/src/test/vim_test_context.rs +++ b/crates/vim/src/test/vim_test_context.rs @@ -22,6 +22,7 @@ impl VimTestContext { release_channel::init(SemanticVersion::default(), cx); command_palette::init(cx); project_panel::init(Assets, cx); + git_ui::init(cx); crate::init(cx); search::init(cx); });