Skip to content

Commit 01f747f

Browse files
committed
Record unchanged hunk at end of file
1 parent 7ca85e2 commit 01f747f

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

gix-blame/tests/blame.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,15 @@ enum Change {
122122
struct ChangeRecorder {
123123
previous_after_end: u32,
124124
changes: Vec<Change>,
125+
total_number_of_lines: u32,
125126
}
126127

127128
impl ChangeRecorder {
128-
fn new() -> Self {
129+
fn new(total_number_of_lines: u32) -> Self {
129130
ChangeRecorder {
130131
previous_after_end: 0,
131132
changes: vec![],
133+
total_number_of_lines,
132134
}
133135
}
134136
}
@@ -155,7 +157,12 @@ impl Sink for ChangeRecorder {
155157
self.previous_after_end = after.end;
156158
}
157159

158-
fn finish(self) -> Self::Out {
160+
fn finish(mut self) -> Self::Out {
161+
if self.total_number_of_lines > self.previous_after_end {
162+
self.changes
163+
.push(Change::Unchanged(self.previous_after_end..self.total_number_of_lines));
164+
}
165+
159166
self.changes
160167
}
161168
}
@@ -587,7 +594,7 @@ fn blame_file(worktree_path: PathBuf, file_path: &BStr) -> Vec<BlameEntry> {
587594
let outcome = resource_cache.prepare_diff().unwrap();
588595
let input = outcome.interned_input();
589596

590-
let change_recorder = ChangeRecorder::new();
597+
let change_recorder = ChangeRecorder::new(number_of_lines.try_into().unwrap());
591598

592599
let changes = gix_diff::blob::diff(gix_diff::blob::Algorithm::Histogram, &input, change_recorder);
593600

0 commit comments

Comments
 (0)