diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 2548ec4a08e90e0ba084124b1f43183a7f891155..09bf3bd9fd386475c87d05a0c1b930c1915f922f 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -175,7 +175,7 @@ "ctrl-shift-e": "project_panel::ToggleFocus", "ctrl-g": "search::SelectNextMatch", "ctrl-shift-g": "search::SelectPrevMatch", - "ctrl-shift-m": "assistant::ToggleModelSelector", + "ctrl-alt-/": "assistant::ToggleModelSelector", "ctrl-k h": "assistant::DeployHistory", "ctrl-k l": "assistant::DeployPromptLibrary", "ctrl-n": "assistant::NewContext" @@ -572,7 +572,7 @@ "bindings": { "ctrl-n": "assistant2::NewThread", "ctrl-shift-h": "assistant2::OpenHistory", - "ctrl-shift-m": "assistant2::ToggleModelSelector", + "ctrl-alt-/": "assistant2::ToggleModelSelector", "ctrl-shift-a": "assistant2::ToggleContextPicker", "ctrl-alt-e": "assistant2::RemoveAllContext" } diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 0bc1689ee0db163f59e371d64ae9cbee2ad41d97..8e6ceb4ddcb50e1f523f05f075274ba7f744762d 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -199,7 +199,7 @@ "cmd-shift-e": "project_panel::ToggleFocus", "cmd-g": "search::SelectNextMatch", "cmd-shift-g": "search::SelectPrevMatch", - "cmd-shift-m": "assistant::ToggleModelSelector", + "cmd-alt-/": "assistant::ToggleModelSelector", "cmd-k h": "assistant::DeployHistory", "cmd-k l": "assistant::DeployPromptLibrary", "cmd-n": "assistant::NewContext" @@ -226,7 +226,7 @@ "bindings": { "cmd-n": "assistant2::NewThread", "cmd-shift-h": "assistant2::OpenHistory", - "cmd-shift-m": "assistant2::ToggleModelSelector", + "cmd-alt-/": "assistant2::ToggleModelSelector", "cmd-shift-a": "assistant2::ToggleContextPicker", "cmd-alt-e": "assistant2::RemoveAllContext" } @@ -616,6 +616,7 @@ "use_key_equivalents": true, "bindings": { "cmd-shift-a": "assistant2::ToggleContextPicker", + "cmd-alt-/": "assistant2::ToggleModelSelector", "cmd-alt-e": "assistant2::RemoveAllContext", "ctrl-[": "assistant::CyclePreviousInlineAssist", "ctrl-]": "assistant::CycleNextInlineAssist" diff --git a/crates/assistant2/src/assistant_model_selector.rs b/crates/assistant2/src/assistant_model_selector.rs index 86f37a9a6cc4e164b6125c5646ac51fc0d73524f..bd243a708952701ee825b48cdfb8702188051a9c 100644 --- a/crates/assistant2/src/assistant_model_selector.rs +++ b/crates/assistant2/src/assistant_model_selector.rs @@ -1,5 +1,5 @@ use fs::Fs; -use gpui::View; +use gpui::{FocusHandle, View}; use language_model::LanguageModelRegistry; use language_model_selector::{LanguageModelSelector, LanguageModelSelectorPopoverMenu}; use settings::update_settings_file; @@ -11,12 +11,14 @@ use crate::{assistant_settings::AssistantSettings, ToggleModelSelector}; pub struct AssistantModelSelector { selector: View, menu_handle: PopoverMenuHandle, + focus_handle: FocusHandle, } impl AssistantModelSelector { pub(crate) fn new( fs: Arc, menu_handle: PopoverMenuHandle, + focus_handle: FocusHandle, cx: &mut WindowContext, ) -> Self { Self { @@ -34,6 +36,7 @@ impl AssistantModelSelector { ) }), menu_handle, + focus_handle, } } } @@ -41,7 +44,7 @@ impl AssistantModelSelector { impl Render for AssistantModelSelector { fn render(&mut self, cx: &mut ViewContext) -> impl IntoElement { let active_model = LanguageModelRegistry::read_global(cx).active_model(); - let focus_handle = self.selector.focus_handle(cx).clone(); + let focus_handle = self.focus_handle.clone(); LanguageModelSelectorPopoverMenu::new( self.selector.clone(), @@ -49,7 +52,6 @@ impl Render for AssistantModelSelector { .style(ButtonStyle::Subtle) .child( h_flex() - .w_full() .gap_0p5() .child( div() diff --git a/crates/assistant2/src/inline_prompt_editor.rs b/crates/assistant2/src/inline_prompt_editor.rs index 9ab660eb23b9d2d7ad194374a7c624b22877766d..6683f6bc228f7b9ab6467279fb147d6bf177d27a 100644 --- a/crates/assistant2/src/inline_prompt_editor.rs +++ b/crates/assistant2/src/inline_prompt_editor.rs @@ -842,7 +842,12 @@ impl PromptEditor { context_strip, context_picker_menu_handle, model_selector: cx.new_view(|cx| { - AssistantModelSelector::new(fs, model_selector_menu_handle.clone(), cx) + AssistantModelSelector::new( + fs, + model_selector_menu_handle.clone(), + prompt_editor.focus_handle(cx), + cx, + ) }), model_selector_menu_handle, edited_since_done: false, @@ -989,7 +994,12 @@ impl PromptEditor { context_strip, context_picker_menu_handle, model_selector: cx.new_view(|cx| { - AssistantModelSelector::new(fs, model_selector_menu_handle.clone(), cx) + AssistantModelSelector::new( + fs, + model_selector_menu_handle.clone(), + prompt_editor.focus_handle(cx), + cx, + ) }), model_selector_menu_handle, edited_since_done: false, diff --git a/crates/assistant2/src/message_editor.rs b/crates/assistant2/src/message_editor.rs index a86a9efb3dc65167a21109ed4cc096a3c4c4fd9f..cd4c5899ee773d401846989883f91e6015f72428 100644 --- a/crates/assistant2/src/message_editor.rs +++ b/crates/assistant2/src/message_editor.rs @@ -100,7 +100,12 @@ impl MessageEditor { inline_context_picker, inline_context_picker_menu_handle, model_selector: cx.new_view(|cx| { - AssistantModelSelector::new(fs, model_selector_menu_handle.clone(), cx) + AssistantModelSelector::new( + fs, + model_selector_menu_handle.clone(), + editor.focus_handle(cx), + cx, + ) }), model_selector_menu_handle, use_tools: false,