From c23a36411d8be3420b07baa2b8cc1b9f0cfe2bc7 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Wed, 27 Oct 2021 23:55:33 -0700 Subject: [PATCH] Only use bold for keywords in novel tokens This makes added/removed regions slightly less prominent, but easier to read. It also makes them more consistent with the styling on the surrounding text. --- CHANGELOG.md | 4 ++++ src/lines.rs | 12 +++++++++--- src/style.rs | 14 ++++++++++++-- src/syntax.rs | 2 ++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaba79d9b..54be50296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ Every hunk is now shown with the file name and a hunk number. This makes it easier to see which file you're looking at when there are many changes. +Keywords in added/removed regions are now shown in bold, to give +modified regions basic syntax highlighting. Previously, all +added/removed regions were bold. + ### Command Line Interface The difftastic binary is now named `difft`, to reduce typing during diff --git a/src/lines.rs b/src/lines.rs index e2a9e2e05..73126c6b4 100644 --- a/src/lines.rs +++ b/src/lines.rs @@ -171,7 +171,9 @@ impl LineGroup { let opposite_pos: Vec = match &mp.kind { MatchKind::Unchanged { opposite_pos, .. } => opposite_pos.1.clone(), - MatchKind::Novel { prev_opposite_pos } => prev_opposite_pos.clone(), + MatchKind::Novel { + prev_opposite_pos, .. + } => prev_opposite_pos.clone(), MatchKind::UnchangedCommentPart { opposite_pos } => opposite_pos.clone(), MatchKind::ChangedCommentPart { prev_opposite_pos } => prev_opposite_pos.clone(), }; @@ -225,7 +227,9 @@ impl LineGroup { // here? opposite_pos.1.clone() } - MatchKind::Novel { prev_opposite_pos } => prev_opposite_pos.clone(), + MatchKind::Novel { + prev_opposite_pos, .. + } => prev_opposite_pos.clone(), MatchKind::UnchangedCommentPart { opposite_pos } => opposite_pos.clone(), MatchKind::ChangedCommentPart { prev_opposite_pos } => prev_opposite_pos.clone(), }; @@ -242,7 +246,9 @@ impl LineGroup { // here? opposite_pos.1.clone() } - MatchKind::Novel { prev_opposite_pos } => prev_opposite_pos.clone(), + MatchKind::Novel { + prev_opposite_pos, .. + } => prev_opposite_pos.clone(), MatchKind::UnchangedCommentPart { opposite_pos } => opposite_pos.clone(), MatchKind::ChangedCommentPart { prev_opposite_pos } => prev_opposite_pos.clone(), }; diff --git a/src/style.rs b/src/style.rs index f59936fd7..296d8ee11 100644 --- a/src/style.rs +++ b/src/style.rs @@ -110,14 +110,24 @@ pub fn apply_colors(s: &str, is_lhs: bool, positions: &[MatchedPos]) -> String { bold: highlight == TokenKind::Atom(AtomKind::Keyword), dimmed: highlight == TokenKind::Atom(AtomKind::Comment), }, - MatchKind::Novel { .. } | MatchKind::ChangedCommentPart { .. } => Style { + MatchKind::Novel { highlight, .. } => Style { foreground: if is_lhs { Color::BrightRed } else { Color::BrightGreen }, background: None, - bold: true, + bold: highlight == TokenKind::Atom(AtomKind::Keyword), + dimmed: false, + }, + MatchKind::ChangedCommentPart { .. } => Style { + foreground: if is_lhs { + Color::BrightRed + } else { + Color::BrightGreen + }, + background: None, + bold: false, dimmed: false, }, MatchKind::UnchangedCommentPart { .. } => Style { diff --git a/src/syntax.rs b/src/syntax.rs index 89f2ba00c..c83271733 100644 --- a/src/syntax.rs +++ b/src/syntax.rs @@ -499,6 +499,7 @@ pub enum MatchKind { opposite_pos: (Vec, Vec), }, Novel { + highlight: TokenKind, prev_opposite_pos: Vec, }, UnchangedCommentPart { @@ -641,6 +642,7 @@ impl MatchedPos { } } Novel => MatchKind::Novel { + highlight, prev_opposite_pos: prev_opposite_pos.to_vec(), }, };