Skip to content

Commit

Permalink
Use formatted blame metadata as blame key
Browse files Browse the repository at this point in the history
Fixes #868
  • Loading branch information
dandavison committed Dec 28, 2021
1 parent 62ca459 commit 13f60da
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions src/handlers/blame.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ impl<'a> StateMachine<'a> {
);
let mut formatted_blame_metadata =
format_blame_metadata(&format_data, &blame, self.config);
let key = blame.commit;
let is_repeat = previous_key.as_deref() == Some(key);
let key = formatted_blame_metadata.clone();
let is_repeat = previous_key.as_deref() == Some(&key);
if is_repeat {
formatted_blame_metadata =
" ".repeat(measure_text_width(&formatted_blame_metadata))
Expand Down Expand Up @@ -325,31 +325,38 @@ mod tests {
machine.handle_blame_line().unwrap();
assert_eq!(
hashmap_items(&machine.blame_key_colors),
&[("aaaaaaa", "1")]
&[("4 months ago Dan Davison aaaaaaa ", "1")]
);

// Repeat key: same color
machine.line = blame_lines["A"].into();
machine.handle_blame_line().unwrap();
assert_eq!(
hashmap_items(&machine.blame_key_colors),
&[("aaaaaaa", "1")]
&[("4 months ago Dan Davison aaaaaaa ", "1")]
);

// Second distinct key gets second color
machine.line = blame_lines["B"].into();
machine.handle_blame_line().unwrap();
assert_eq!(
hashmap_items(&machine.blame_key_colors),
&[("aaaaaaa", "1"), ("bbbbbbb", "2")]
&[
("4 months ago Dan Davison aaaaaaa ", "1"),
("a year ago Dan Davison bbbbbbb ", "2")
]
);

// Third distinct key gets first color (we only have 2 colors)
machine.line = blame_lines["C"].into();
machine.handle_blame_line().unwrap();
assert_eq!(
hashmap_items(&machine.blame_key_colors),
&[("aaaaaaa", "1"), ("bbbbbbb", "2"), ("ccccccc", "1")]
&[
("4 months ago Dan Davison aaaaaaa ", "1"),
("a year ago Dan Davison bbbbbbb ", "2"),
("a year ago Dan Davison ccccccc ", "1")
]
);

// Now the first key appears again. It would get the first color, but
Expand All @@ -359,7 +366,11 @@ mod tests {
machine.handle_blame_line().unwrap();
assert_eq!(
hashmap_items(&machine.blame_key_colors),
&[("aaaaaaa", "2"), ("bbbbbbb", "2"), ("ccccccc", "1")]
&[
("4 months ago Dan Davison aaaaaaa ", "2"),
("a year ago Dan Davison bbbbbbb ", "2"),
("a year ago Dan Davison ccccccc ", "1")
]
);
}

Expand Down

0 comments on commit 13f60da

Please sign in to comment.