From 909de2ca6f7107ee4ba9779aa985fb5c91dfb445 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Tue, 4 Mar 2025 16:44:32 +0100 Subject: [PATCH] assistant2: Use `cmd-n` to create a new prompt editor when already in a prompt editor (#25935) This flips the keybindings that are used to create a new thread/prompt editor (only when you're already in a prompt editor) Release Notes: - N/A --- assets/keymaps/default-linux.json | 8 ++++++++ assets/keymaps/default-macos.json | 8 ++++++++ crates/assistant2/src/assistant_panel.rs | 14 ++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 91b236f5367b362d6aa1ed7c5c52a7e1f5101f64..46da421588591e453e73b76c225e52e0c63a9730 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -612,6 +612,14 @@ "ctrl-alt-e": "assistant2::RemoveAllContext" } }, + { + "context": "AssistantPanel2 && prompt_editor", + "use_key_equivalents": true, + "bindings": { + "cmd-n": "assistant2::NewPromptEditor", + "cmd-alt-t": "assistant2::NewThread" + } + }, { "context": "MessageEditor > Editor", "bindings": { diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 7313100500695029a2b42dc8616a9c4dd3836e04..b2bced5e7dc54ce58f4872677c22235c281822aa 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -256,6 +256,14 @@ "cmd-alt-e": "assistant2::RemoveAllContext" } }, + { + "context": "AssistantPanel2 && prompt_editor", + "use_key_equivalents": true, + "bindings": { + "cmd-n": "assistant2::NewPromptEditor", + "cmd-alt-t": "assistant2::NewThread" + } + }, { "context": "MessageEditor > Editor", "use_key_equivalents": true, diff --git a/crates/assistant2/src/assistant_panel.rs b/crates/assistant2/src/assistant_panel.rs index 500f9744f28f005238c2a3d719259a8d915e26de..ef04205e437de0c11bf6f2ae9e1a935b12b54b8c 100644 --- a/crates/assistant2/src/assistant_panel.rs +++ b/crates/assistant2/src/assistant_panel.rs @@ -15,7 +15,8 @@ use editor::Editor; use fs::Fs; use gpui::{ prelude::*, Action, AnyElement, App, AsyncWindowContext, Corner, Entity, EventEmitter, - FocusHandle, Focusable, FontWeight, Pixels, Subscription, Task, UpdateGlobal, WeakEntity, + FocusHandle, Focusable, FontWeight, KeyContext, Pixels, Subscription, Task, UpdateGlobal, + WeakEntity, }; use language::LanguageRegistry; use language_model::{LanguageModelProviderTosView, LanguageModelRegistry}; @@ -993,12 +994,21 @@ impl AssistantPanel { ) .into_any() } + + fn key_context(&self) -> KeyContext { + let mut key_context = KeyContext::new_with_defaults(); + key_context.add("AssistantPanel2"); + if matches!(self.active_view, ActiveView::PromptEditor) { + key_context.add("prompt_editor"); + } + key_context + } } impl Render for AssistantPanel { fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { v_flex() - .key_context("AssistantPanel2") + .key_context(self.key_context()) .justify_between() .size_full() .on_action(cx.listener(Self::cancel))