parent
010441e23b
commit
250c51bb20
1 changed files with 23 additions and 24 deletions
|
@ -411,8 +411,6 @@ impl ToolCallContent {
|
||||||
pub struct Diff {
|
pub struct Diff {
|
||||||
pub multibuffer: Entity<MultiBuffer>,
|
pub multibuffer: Entity<MultiBuffer>,
|
||||||
pub path: PathBuf,
|
pub path: PathBuf,
|
||||||
pub new_buffer: Entity<Buffer>,
|
|
||||||
pub old_buffer: Entity<Buffer>,
|
|
||||||
_task: Task<Result<()>>,
|
_task: Task<Result<()>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,23 +431,34 @@ impl Diff {
|
||||||
let new_buffer = cx.new(|cx| Buffer::local(new_text, cx));
|
let new_buffer = cx.new(|cx| Buffer::local(new_text, cx));
|
||||||
let old_buffer = cx.new(|cx| Buffer::local(old_text.unwrap_or("".into()), cx));
|
let old_buffer = cx.new(|cx| Buffer::local(old_text.unwrap_or("".into()), cx));
|
||||||
let new_buffer_snapshot = new_buffer.read(cx).text_snapshot();
|
let new_buffer_snapshot = new_buffer.read(cx).text_snapshot();
|
||||||
let old_buffer_snapshot = old_buffer.read(cx).snapshot();
|
|
||||||
let buffer_diff = cx.new(|cx| BufferDiff::new(&new_buffer_snapshot, cx));
|
let buffer_diff = cx.new(|cx| BufferDiff::new(&new_buffer_snapshot, cx));
|
||||||
let diff_task = buffer_diff.update(cx, |diff, cx| {
|
|
||||||
diff.set_base_text(
|
|
||||||
old_buffer_snapshot,
|
|
||||||
Some(language_registry.clone()),
|
|
||||||
new_buffer_snapshot,
|
|
||||||
cx,
|
|
||||||
)
|
|
||||||
});
|
|
||||||
|
|
||||||
let task = cx.spawn({
|
let task = cx.spawn({
|
||||||
let multibuffer = multibuffer.clone();
|
let multibuffer = multibuffer.clone();
|
||||||
let path = path.clone();
|
let path = path.clone();
|
||||||
let new_buffer = new_buffer.clone();
|
|
||||||
async move |cx| {
|
async move |cx| {
|
||||||
diff_task.await?;
|
let language = language_registry
|
||||||
|
.language_for_file_path(&path)
|
||||||
|
.await
|
||||||
|
.log_err();
|
||||||
|
|
||||||
|
new_buffer.update(cx, |buffer, cx| buffer.set_language(language.clone(), cx))?;
|
||||||
|
|
||||||
|
let old_buffer_snapshot = old_buffer.update(cx, |buffer, cx| {
|
||||||
|
buffer.set_language(language, cx);
|
||||||
|
buffer.snapshot()
|
||||||
|
})?;
|
||||||
|
|
||||||
|
buffer_diff
|
||||||
|
.update(cx, |diff, cx| {
|
||||||
|
diff.set_base_text(
|
||||||
|
old_buffer_snapshot,
|
||||||
|
Some(language_registry),
|
||||||
|
new_buffer_snapshot,
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
})?
|
||||||
|
.await?;
|
||||||
|
|
||||||
multibuffer
|
multibuffer
|
||||||
.update(cx, |multibuffer, cx| {
|
.update(cx, |multibuffer, cx| {
|
||||||
|
@ -468,18 +477,10 @@ impl Diff {
|
||||||
editor::DEFAULT_MULTIBUFFER_CONTEXT,
|
editor::DEFAULT_MULTIBUFFER_CONTEXT,
|
||||||
cx,
|
cx,
|
||||||
);
|
);
|
||||||
multibuffer.add_diff(buffer_diff.clone(), cx);
|
multibuffer.add_diff(buffer_diff, cx);
|
||||||
})
|
})
|
||||||
.log_err();
|
.log_err();
|
||||||
|
|
||||||
if let Some(language) = language_registry
|
|
||||||
.language_for_file_path(&path)
|
|
||||||
.await
|
|
||||||
.log_err()
|
|
||||||
{
|
|
||||||
new_buffer.update(cx, |buffer, cx| buffer.set_language(Some(language), cx))?;
|
|
||||||
}
|
|
||||||
|
|
||||||
anyhow::Ok(())
|
anyhow::Ok(())
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -487,8 +488,6 @@ impl Diff {
|
||||||
Self {
|
Self {
|
||||||
multibuffer,
|
multibuffer,
|
||||||
path,
|
path,
|
||||||
new_buffer,
|
|
||||||
old_buffer,
|
|
||||||
_task: task,
|
_task: task,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue