fix: target caret excerpts and retain diff viewport offsets

This commit is contained in:
2026-10-11 10:50:54 +02:00
parent 86d22d4fa2
commit 976cfc9e62
5 changed files with 237 additions and 4 deletions
+15 -1
View File
@@ -939,11 +939,25 @@ impl DiffState {
}
}
pub(crate) fn expand_after_excerpt(&mut self, below: bool, source_row: usize) {
let Some(display_row) = self.after_display_row(source_row) else {
return;
};
self.expand_excerpt_at(below, self.display_rows[display_row]);
}
fn expand_excerpt(&mut self, below: bool) {
let Some(target) = self.display_rows.get(self.top).copied() else {
return;
};
self.expand_excerpt_at(below, target);
}
fn expand_excerpt_at(&mut self, below: bool, target: DisplayRow) {
let Some(top) = self.display_rows.get(self.top).copied() else {
return;
};
let index = match top {
let index = match target {
DisplayRow::Line(row) => self
.excerpt_ranges
.iter()