Fix run indicators with expanded diff hunks (#23758)
Fix runnable positioning when diff hunks are altered. Release Notes: - N/A
This commit is contained in:
parent
ee5f270f3f
commit
7deafdafae
2 changed files with 14 additions and 6 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue