Touch up stale hunks fix (#24669)
Release Notes: - N/A Co-authored-by: Max <max@zed.dev>
This commit is contained in:
parent
7c00eec08b
commit
759ea0ec48
2 changed files with 19 additions and 13 deletions
|
@ -587,16 +587,18 @@ impl BufferDiff {
|
||||||
range: Range<Anchor>,
|
range: Range<Anchor>,
|
||||||
buffer: &text::BufferSnapshot,
|
buffer: &text::BufferSnapshot,
|
||||||
cx: &App,
|
cx: &App,
|
||||||
) -> Range<Anchor> {
|
) -> Option<Range<Anchor>> {
|
||||||
let start = self
|
let start = self
|
||||||
.hunks_intersecting_range(range.clone(), &buffer, cx)
|
.hunks_intersecting_range(range.clone(), &buffer, cx)
|
||||||
.next()
|
.next()?
|
||||||
.map_or(Anchor::MIN, |hunk| hunk.buffer_range.start);
|
.buffer_range
|
||||||
|
.start;
|
||||||
let end = self
|
let end = self
|
||||||
.hunks_intersecting_range_rev(range.clone(), &buffer)
|
.hunks_intersecting_range_rev(range.clone(), &buffer)
|
||||||
.next()
|
.next()?
|
||||||
.map_or(Anchor::MAX, |hunk| hunk.buffer_range.end);
|
.buffer_range
|
||||||
start..end
|
.end;
|
||||||
|
Some(start..end)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
|
|
|
@ -260,16 +260,20 @@ impl BufferDiffState {
|
||||||
let changed_range = match (unstaged_changed_range, uncommitted_changed_range) {
|
let changed_range = match (unstaged_changed_range, uncommitted_changed_range) {
|
||||||
(None, None) => None,
|
(None, None) => None,
|
||||||
(Some(unstaged_range), None) => {
|
(Some(unstaged_range), None) => {
|
||||||
Some(uncommitted_diff.range_to_hunk_range(unstaged_range, &buffer, cx))
|
uncommitted_diff.range_to_hunk_range(unstaged_range, &buffer, cx)
|
||||||
}
|
}
|
||||||
(None, Some(uncommitted_range)) => Some(uncommitted_range),
|
(None, Some(uncommitted_range)) => Some(uncommitted_range),
|
||||||
(Some(unstaged_range), Some(uncommitted_range)) => maybe!({
|
(Some(unstaged_range), Some(uncommitted_range)) => {
|
||||||
let expanded_range =
|
let mut start = uncommitted_range.start;
|
||||||
uncommitted_diff.range_to_hunk_range(unstaged_range, &buffer, cx);
|
let mut end = uncommitted_range.end;
|
||||||
let start = expanded_range.start.min(&uncommitted_range.start, &buffer);
|
if let Some(unstaged_range) =
|
||||||
let end = expanded_range.end.max(&uncommitted_range.end, &buffer);
|
uncommitted_diff.range_to_hunk_range(unstaged_range, &buffer, cx)
|
||||||
|
{
|
||||||
|
start = unstaged_range.start.min(&uncommitted_range.start, &buffer);
|
||||||
|
end = unstaged_range.end.max(&uncommitted_range.end, &buffer);
|
||||||
|
}
|
||||||
Some(start..end)
|
Some(start..end)
|
||||||
}),
|
}
|
||||||
};
|
};
|
||||||
cx.emit(BufferDiffEvent::DiffChanged { changed_range });
|
cx.emit(BufferDiffEvent::DiffChanged { changed_range });
|
||||||
})?;
|
})?;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue