From 7c7f69f4c5a52ee217cb97729ab3129afc114289 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Wed, 16 Apr 2025 20:32:08 +0200 Subject: [PATCH] agent: Allow quoting selection when text thread is active (#28887) This makes the `assistant: Quote selection` work again for text threads. Next up is supporting this also in normal threads. Release Notes: - agent: Add support for inserting selections (assistant: Quote selection) into text threads --- crates/agent/src/assistant_panel.rs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/crates/agent/src/assistant_panel.rs b/crates/agent/src/assistant_panel.rs index d82a9f47bf9da5fdfaf3aa2e55fd5aebc0c1e8bd..3090f4682d3ebf23ffbbbdc4aaa08569a4e0b5ce 100644 --- a/crates/agent/src/assistant_panel.rs +++ b/crates/agent/src/assistant_panel.rs @@ -1792,10 +1792,27 @@ impl AssistantPanelDelegate for ConcreteAssistantPanelDelegate { fn quote_selection( &self, - _workspace: &mut Workspace, - _creases: Vec<(String, String)>, - _window: &mut Window, - _cx: &mut Context, + workspace: &mut Workspace, + creases: Vec<(String, String)>, + window: &mut Window, + cx: &mut Context, ) { + let Some(panel) = workspace.panel::(cx) else { + return; + }; + + if !panel.focus_handle(cx).contains_focused(window, cx) { + workspace.toggle_panel_focus::(window, cx); + } + + panel.update(cx, |_, cx| { + // Wait to create a new context until the workspace is no longer + // being updated. + cx.defer_in(window, move |panel, window, cx| { + if let Some(context) = panel.active_context_editor() { + context.update(cx, |context, cx| context.quote_creases(creases, window, cx)); + }; + }); + }); } }