agent: Copy text as Markdown (#28272)
Release Notes: - agent: Copying text in the Agent Panel will now copy it as Markdown. Co-authored-by: Antonio Scandurra <me@as-cii.com>
This commit is contained in:
parent
c165729b3f
commit
fe1ae1860e
3 changed files with 32 additions and 2 deletions
|
@ -90,7 +90,7 @@ struct Options {
|
|||
copy_code_block_buttons: bool,
|
||||
}
|
||||
|
||||
actions!(markdown, [Copy]);
|
||||
actions!(markdown, [Copy, CopyAsMarkdown]);
|
||||
|
||||
impl Markdown {
|
||||
pub fn new(
|
||||
|
@ -178,6 +178,14 @@ impl Markdown {
|
|||
cx.write_to_clipboard(ClipboardItem::new_string(text));
|
||||
}
|
||||
|
||||
fn copy_as_markdown(&self, _: &mut Window, cx: &mut Context<Self>) {
|
||||
if self.selection.end <= self.selection.start {
|
||||
return;
|
||||
}
|
||||
let text = self.source[self.selection.start..self.selection.end].to_string();
|
||||
cx.write_to_clipboard(ClipboardItem::new_string(text));
|
||||
}
|
||||
|
||||
fn parse(&mut self, cx: &mut Context<Self>) {
|
||||
if self.source.is_empty() {
|
||||
return;
|
||||
|
@ -1040,8 +1048,8 @@ impl Element for MarkdownElement {
|
|||
let mut context = KeyContext::default();
|
||||
context.add("Markdown");
|
||||
window.set_key_context(context);
|
||||
let entity = self.markdown.clone();
|
||||
window.on_action(std::any::TypeId::of::<crate::Copy>(), {
|
||||
let entity = self.markdown.clone();
|
||||
let text = rendered_markdown.text.clone();
|
||||
move |_, phase, window, cx| {
|
||||
let text = text.clone();
|
||||
|
@ -1050,6 +1058,14 @@ impl Element for MarkdownElement {
|
|||
}
|
||||
}
|
||||
});
|
||||
window.on_action(std::any::TypeId::of::<crate::CopyAsMarkdown>(), {
|
||||
let entity = self.markdown.clone();
|
||||
move |_, phase, window, cx| {
|
||||
if phase == DispatchPhase::Bubble {
|
||||
entity.update(cx, move |this, cx| this.copy_as_markdown(window, cx))
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
self.paint_mouse_listeners(hitbox, &rendered_markdown.text, window, cx);
|
||||
rendered_markdown.element.paint(window, cx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue