From 8a0c22c3bf76f5c2b516fc0af888bc7e1066de64 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Thu, 16 Jan 2025 13:02:22 -0300 Subject: [PATCH] assistant2: Add `ChatMode` action (#23243) This PR makes the assistant 2 panel switch work with the keyboard via the `cmd-e` keybinding. Release Notes: - N/A --------- Co-authored-by: Agus Zubiaga --- assets/keymaps/default-linux.json | 1 + assets/keymaps/default-macos.json | 1 + crates/assistant2/src/assistant.rs | 1 + crates/assistant2/src/message_editor.rs | 15 +++++++++++++-- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 109f95878fa9f68ff13a85e194152f974ddc7460..c29a961841a1053b504ef271f82652ab207b4912 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -574,6 +574,7 @@ "ctrl-shift-h": "assistant2::OpenHistory", "ctrl-alt-/": "assistant2::ToggleModelSelector", "ctrl-shift-a": "assistant2::ToggleContextPicker", + "ctrl-e": "assistant2::ChatMode", "ctrl-alt-e": "assistant2::RemoveAllContext" } }, diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index c04167a7840af8fce17bcc909adbe239967174ee..627dc1095637a297426ba2ef762fd70d7d85536e 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -229,6 +229,7 @@ "cmd-shift-h": "assistant2::OpenHistory", "cmd-alt-/": "assistant2::ToggleModelSelector", "cmd-shift-a": "assistant2::ToggleContextPicker", + "cmd-e": "assistant2::ChatMode", "cmd-alt-e": "assistant2::RemoveAllContext" } }, diff --git a/crates/assistant2/src/assistant.rs b/crates/assistant2/src/assistant.rs index 1397a2b62f070177748baab205e6030187724675..c68ce8e377143ef35a9b8c29cee9d95c86ce08ee 100644 --- a/crates/assistant2/src/assistant.rs +++ b/crates/assistant2/src/assistant.rs @@ -43,6 +43,7 @@ actions!( RemoveAllContext, OpenHistory, Chat, + ChatMode, CycleNextInlineAssist, CyclePreviousInlineAssist, FocusUp, diff --git a/crates/assistant2/src/message_editor.rs b/crates/assistant2/src/message_editor.rs index e7ac35415f7beef233210e3eef0df65bce7c8477..49e75a5a347668ea57522e66e90a5425ffe7a668 100644 --- a/crates/assistant2/src/message_editor.rs +++ b/crates/assistant2/src/message_editor.rs @@ -23,7 +23,7 @@ use crate::context_store::{refresh_context_store_text, ContextStore}; use crate::context_strip::{ContextStrip, ContextStripEvent, SuggestContextKind}; use crate::thread::{RequestKind, Thread}; use crate::thread_store::ThreadStore; -use crate::{Chat, RemoveAllContext, ToggleContextPicker, ToggleModelSelector}; +use crate::{Chat, ChatMode, RemoveAllContext, ToggleContextPicker, ToggleModelSelector}; pub struct MessageEditor { thread: Model, @@ -116,6 +116,11 @@ impl MessageEditor { self.model_selector_menu_handle.toggle(cx) } + fn toggle_chat_mode(&mut self, _: &ChatMode, cx: &mut ViewContext) { + self.use_tools = !self.use_tools; + cx.notify(); + } + fn toggle_context_picker(&mut self, _: &ToggleContextPicker, cx: &mut ViewContext) { self.context_picker_menu_handle.toggle(cx); } @@ -264,6 +269,7 @@ impl Render for MessageEditor { .on_action(cx.listener(Self::toggle_context_picker)) .on_action(cx.listener(Self::remove_all_context)) .on_action(cx.listener(Self::move_up)) + .on_action(cx.listener(Self::toggle_chat_mode)) .size_full() .gap_2() .p_2() @@ -323,7 +329,12 @@ impl Render for MessageEditor { ToggleState::Unselected | ToggleState::Indeterminate => false, }; - })), + })) + .key_binding(KeyBinding::for_action_in( + &ChatMode, + &focus_handle, + cx, + )), ) .child( h_flex().gap_1().child(self.model_selector.clone()).child(