improve: show whole-diff totals alongside file stats

This commit is contained in:
Valdemar Lorenzen
2026-10-20 12:29:06 +02:00
parent a5a246db77
commit 759947736e
15 changed files with 394 additions and 48 deletions
+22 -7
View File
@@ -1643,8 +1643,8 @@ fn chrome_title(
};
match field {
"index" => write!(title, "{index}").unwrap(),
"view" if diff.is_some() => {
title.push_str("Diff · ");
"view" if diff.is_some() => title.push_str("Diff · "),
"changes" => {
if let Some(diff) = diff
&& diff.phase == Phase::View
&& let Some(file) = diff
@@ -1652,12 +1652,9 @@ fn chrome_title(
.as_ref()
.and_then(|comparison| comparison.files.get(diff.file))
&& file.loaded
&& let Some((added, removed)) = file.line_counts()
{
let (added, removed) =
file.hunks.iter().fold((0, 0), |(added, removed), hunk| {
(added + hunk.after_len, removed + hunk.before_len)
});
write!(title, "+{added} -{removed} · ").unwrap();
write!(title, " +{added} -{removed}").unwrap();
}
}
"name" => title.push_str(&name),
@@ -1783,6 +1780,24 @@ fn chrome_items<'a>(
} else {
String::new()
}),
"diff" => {
let Some(comparison) = editor
.workspace_diff()
.filter(|diff| diff.phase == Phase::View)
.and_then(|diff| diff.comparison.as_ref())
else {
continue;
};
match comparison
.files
.iter()
.try_fold((0, 0), |(added, removed), file| {
file.line_counts().map(|(a, r)| (added + a, removed + r))
}) {
Some((added, removed)) => Cow::Owned(format!("Diff +{added} -{removed}")),
None => Cow::Borrowed("Diff …"),
}
}
"battery" if editor.label(name).is_empty() => Cow::Borrowed(editor.battery_label()),
"shell" if editor.label(name).is_empty() => Cow::Borrowed(editor.shell_label()),
_ => Cow::Borrowed(editor.label(name)),