From 2957263b23c8f28cf437508e0b54cca692a99f84 Mon Sep 17 00:00:00 2001
From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Date: Thu, 26 Dec 2024 10:22:08 -0300
Subject: [PATCH] pane: Add keybinding to "Close Left" and "Close Right"
actions (#22402)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Was super missing these as I use these actions all the time 😄
Release Notes:
- Add keybinding to "Close Left" and "Close Right" actions
---
assets/keymaps/default-linux.json | 2 ++
assets/keymaps/default-macos.json | 2 ++
crates/workspace/src/pane.rs | 20 ++++++++++++++++----
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json
index 45804909abb6d94517a21090ab39ec02f5ad7b05..3996faf3b582b30aed5b363d7d395dfb7e5b44a4 100644
--- a/assets/keymaps/default-linux.json
+++ b/assets/keymaps/default-linux.json
@@ -260,6 +260,8 @@
"ctrl-f4": "pane::CloseActiveItem",
"alt-ctrl-t": ["pane::CloseInactiveItems", { "close_pinned": false }],
"alt-ctrl-shift-w": "workspace::CloseInactiveTabsAndPanes",
+ "ctrl-k e": ["pane::CloseItemsToTheLeft", { "close_pinned": false }],
+ "ctrl-k t": ["pane::CloseItemsToTheRight", { "close_pinned": false }],
"ctrl-k u": ["pane::CloseCleanItems", { "close_pinned": false }],
"ctrl-k w": ["pane::CloseAllItems", { "close_pinned": false }],
"ctrl-shift-f": "project_search::ToggleFocus",
diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json
index 041b75f0823f77021916c65aceb0baaf54ed4ee0..748d99447a265ed277fc561a10ccebceec8ddcdb 100644
--- a/assets/keymaps/default-macos.json
+++ b/assets/keymaps/default-macos.json
@@ -327,6 +327,8 @@
"cmd-w": "pane::CloseActiveItem",
"alt-cmd-t": ["pane::CloseInactiveItems", { "close_pinned": false }],
"ctrl-alt-cmd-w": "workspace::CloseInactiveTabsAndPanes",
+ "cmd-k e": ["pane::CloseItemsToTheLeft", { "close_pinned": false }],
+ "cmd-k t": ["pane::CloseItemsToTheRight", { "close_pinned": false }],
"cmd-k u": ["pane::CloseCleanItems", { "close_pinned": false }],
"cmd-k cmd-w": ["pane::CloseAllItems", { "close_pinned": false }],
"cmd-f": "project_search::ToggleFocus",
diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs
index fd14755d3852f1387935725340e5a1443de5f243..169369868444d3fa9c987a37a50216ec06cf926f 100644
--- a/crates/workspace/src/pane.rs
+++ b/crates/workspace/src/pane.rs
@@ -1234,12 +1234,13 @@ impl Pane {
}
let active_item_id = self.items[self.active_item_index].item_id();
let non_closeable_items = self.get_non_closeable_item_ids(action.close_pinned);
- Some(self.close_items_to_the_left_by_id(active_item_id, non_closeable_items, cx))
+ Some(self.close_items_to_the_left_by_id(active_item_id, action, non_closeable_items, cx))
}
pub fn close_items_to_the_left_by_id(
&mut self,
item_id: EntityId,
+ action: &CloseItemsToTheLeft,
non_closeable_items: Vec,
cx: &mut ViewContext,
) -> Task> {
@@ -1249,7 +1250,9 @@ impl Pane {
.map(|item| item.item_id())
.collect();
self.close_items(cx, SaveIntent::Close, move |item_id| {
- item_ids.contains(&item_id) && !non_closeable_items.contains(&item_id)
+ item_ids.contains(&item_id)
+ && !action.close_pinned
+ && !non_closeable_items.contains(&item_id)
})
}
@@ -1263,12 +1266,13 @@ impl Pane {
}
let active_item_id = self.items[self.active_item_index].item_id();
let non_closeable_items = self.get_non_closeable_item_ids(action.close_pinned);
- Some(self.close_items_to_the_right_by_id(active_item_id, non_closeable_items, cx))
+ Some(self.close_items_to_the_right_by_id(active_item_id, action, non_closeable_items, cx))
}
pub fn close_items_to_the_right_by_id(
&mut self,
item_id: EntityId,
+ action: &CloseItemsToTheRight,
non_closeable_items: Vec,
cx: &mut ViewContext,
) -> Task> {
@@ -1279,7 +1283,9 @@ impl Pane {
.map(|item| item.item_id())
.collect();
self.close_items(cx, SaveIntent::Close, move |item_id| {
- item_ids.contains(&item_id) && !non_closeable_items.contains(&item_id)
+ item_ids.contains(&item_id)
+ && !action.close_pinned
+ && !non_closeable_items.contains(&item_id)
})
}
@@ -2244,6 +2250,9 @@ impl Pane {
cx.handler_for(&pane, move |pane, cx| {
pane.close_items_to_the_left_by_id(
item_id,
+ &CloseItemsToTheLeft {
+ close_pinned: false,
+ },
pane.get_non_closeable_item_ids(false),
cx,
)
@@ -2258,6 +2267,9 @@ impl Pane {
cx.handler_for(&pane, move |pane, cx| {
pane.close_items_to_the_right_by_id(
item_id,
+ &CloseItemsToTheRight {
+ close_pinned: false,
+ },
pane.get_non_closeable_item_ids(false),
cx,
)