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 ec6d1dd38c2c47c3aba296bc02105b67b043fd61..771bd34efb626585d18af245c9f86b37fa07a1d8 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 4fd1956b0029e441c56a298ef460e4610b1c5670..2fc6c3c344dfe71c20b3c5fc044409c918d5c658 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 e8c4dc1d3104ffc6f829065d7bcb14443e6c04bb..c45a71ff7e7fdf17f1eefdde3321531987867534 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 46915c9f6eb87947ee061accd2ed70b8df97394c..d368fc102e6e82ad18bdf30db79688880e0c6da4 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 bed11af589c3dc153124c724afcea2dda59e9f16..a9b9f40352165220596cef93a173eade97a7ad51 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); });