improve: show whole-diff totals alongside file stats
This commit is contained in:
+22
-7
@@ -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)),
|
||||
|
||||
Reference in New Issue
Block a user