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)); + }; + }); + }); } }