In proposed change editors, apply diff hunks in batches (#18841)

Release Notes:

- N/A
This commit is contained in:
Max Brunsfeld 2024-10-08 08:58:28 -07:00 committed by GitHub
parent ff7aa024ee
commit 4139e2de23
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 50 additions and 22 deletions

View file

@ -6213,14 +6213,22 @@ impl Editor {
fn apply_selected_diff_hunks(&mut self, _: &ApplyDiffHunk, cx: &mut ViewContext<Self>) {
let snapshot = self.buffer.read(cx).snapshot(cx);
let hunks = hunks_for_selections(&snapshot, &self.selections.disjoint_anchors());
let mut ranges_by_buffer = HashMap::default();
self.transact(cx, |editor, cx| {
for hunk in hunks {
if let Some(buffer) = editor.buffer.read(cx).buffer(hunk.buffer_id) {
buffer.update(cx, |buffer, cx| {
buffer.merge_into_base(Some(hunk.buffer_range.to_offset(buffer)), cx);
});
ranges_by_buffer
.entry(buffer.clone())
.or_insert_with(Vec::new)
.push(hunk.buffer_range.to_offset(buffer.read(cx)));
}
}
for (buffer, ranges) in ranges_by_buffer {
buffer.update(cx, |buffer, cx| {
buffer.merge_into_base(ranges, cx);
});
}
});
}

View file

@ -350,7 +350,7 @@ impl Editor {
.next()?;
buffer.update(cx, |branch_buffer, cx| {
branch_buffer.merge_into_base(Some(range), cx);
branch_buffer.merge_into_base(vec![range], cx);
});
None
@ -360,7 +360,7 @@ impl Editor {
let buffers = self.buffer.read(cx).all_buffers();
for branch_buffer in buffers {
branch_buffer.update(cx, |branch_buffer, cx| {
branch_buffer.merge_into_base(None, cx);
branch_buffer.merge_into_base(Vec::new(), cx);
});
}
}