@@ -13381,6 +13381,9 @@ impl Editor {
cx.emit(EditorEvent::Reparsed(*buffer_id));
}
+ multi_buffer::Event::DiffHunksToggled => {
+ self.tasks_update_task = Some(self.refresh_runnables(window, cx));
+ }
multi_buffer::Event::LanguageChanged(buffer_id) => {
linked_editing_ranges::refresh_linked_ranges(self, window, cx);
cx.emit(EditorEvent::Reparsed(*buffer_id));
@@ -91,6 +91,7 @@ pub enum Event {
ExcerptsEdited {
ids: Vec<ExcerptId>,
},
+ DiffHunksToggled,
Edited {
singleton_buffer_edited: bool,
edited_buffer: Option<Entity<Buffer>>,
@@ -2299,6 +2300,7 @@ impl MultiBuffer {
excerpt_edits,
DiffChangeKind::ExpandOrCollapseHunks { expand },
);
+ cx.emit(Event::DiffHunksToggled);
cx.emit(Event::Edited {
singleton_buffer_edited: false,
edited_buffer: None,
@@ -3418,10 +3420,8 @@ impl MultiBufferSnapshot {
while let Some(region) = cursor.region() {
if region.is_main_buffer {
let mut buffer_end = region.buffer_range.start.key;
- if region.is_main_buffer {
- let overshoot = range.end.saturating_sub(region.range.start.key);
- buffer_end.add_assign(&overshoot);
- }
+ let overshoot = range.end.saturating_sub(region.range.start.key);
+ buffer_end.add_assign(&overshoot);
range_end = Some((region.excerpt.id, buffer_end));
break;
}
@@ -3433,6 +3433,10 @@ impl MultiBufferSnapshot {
value: None,
});
+ if cursor.region().is_some_and(|region| !region.is_main_buffer) {
+ cursor.prev();
+ }
+
iter::from_fn(move || loop {
let excerpt = cursor.excerpt()?;
@@ -3475,8 +3479,9 @@ impl MultiBufferSnapshot {
// the metadata item's range.
if range.start > D::default() {
while let Some(region) = cursor.region() {
- if region.buffer.remote_id() == excerpt.buffer_id
- && region.buffer_range.end.value.unwrap() < range.start
+ if !region.is_main_buffer
+ || region.buffer.remote_id() == excerpt.buffer_id
+ && region.buffer_range.end.value.unwrap() < range.start
{
cursor.next();
} else {