From 48e7aa17d3448ab6338af0f4b27482c712f252a6 Mon Sep 17 00:00:00 2001 From: Daniel Pfister <80419299+0x2a-42@users.noreply.github.com> Date: Thu, 23 Apr 2026 22:15:18 +0200 Subject: [PATCH 1/2] fix: Removal highlighting for multiple indented lines --- src/renderer/source_map.rs | 6 ++---- tests/color/multiple_highlight_duplicated.ascii.term.svg | 2 +- tests/color/multiple_highlight_duplicated.unicode.term.svg | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/renderer/source_map.rs b/src/renderer/source_map.rs index 8f602e19..a4c42027 100644 --- a/src/renderer/source_map.rs +++ b/src/renderer/source_map.rs @@ -556,10 +556,8 @@ impl<'a> SourceMap<'a> { } } } - // remove trailing newlines - while buf.ends_with('\n') { - buf.pop(); - } + // remove trailing whitespace + buf.truncate(buf.trim_end().len()); if highlights.iter().all(|parts| parts.is_empty()) { None } else { diff --git a/tests/color/multiple_highlight_duplicated.ascii.term.svg b/tests/color/multiple_highlight_duplicated.ascii.term.svg index 8009a49a..59c32f58 100644 --- a/tests/color/multiple_highlight_duplicated.ascii.term.svg +++ b/tests/color/multiple_highlight_duplicated.ascii.term.svg @@ -65,7 +65,7 @@ | - 23 - String::from(""), + 23 - String::from(""), | diff --git a/tests/color/multiple_highlight_duplicated.unicode.term.svg b/tests/color/multiple_highlight_duplicated.unicode.term.svg index e4308a36..153c2844 100644 --- a/tests/color/multiple_highlight_duplicated.unicode.term.svg +++ b/tests/color/multiple_highlight_duplicated.unicode.term.svg @@ -65,7 +65,7 @@ ├╴ - 23 - String::from(""), + 23 - String::from(""), ├╴ From f836cc2141d94671d06dbee46378672673adbdcb Mon Sep 17 00:00:00 2001 From: Daniel Pfister <80419299+0x2a-42@users.noreply.github.com> Date: Thu, 23 Apr 2026 22:18:51 +0200 Subject: [PATCH 2/2] test: Removal highlighting for multiple indented lines --- tests/color/main.rs | 1 + .../multiline_removal_indent.ascii.term.svg | 34 +++++++++++++++++++ tests/color/multiline_removal_indent.rs | 19 +++++++++++ .../multiline_removal_indent.unicode.term.svg | 34 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 tests/color/multiline_removal_indent.ascii.term.svg create mode 100644 tests/color/multiline_removal_indent.rs create mode 100644 tests/color/multiline_removal_indent.unicode.term.svg diff --git a/tests/color/main.rs b/tests/color/main.rs index 6c165fd5..f1297d2a 100644 --- a/tests/color/main.rs +++ b/tests/color/main.rs @@ -16,6 +16,7 @@ mod highlight_source; mod highlight_source_multi_width_chars; mod highlight_source_zero_width_chars; mod issue_9; +mod multiline_removal_indent; mod multiline_removal_last_line_tabs; mod multiline_removal_suggestion; mod multiple_annotations; diff --git a/tests/color/multiline_removal_indent.ascii.term.svg b/tests/color/multiline_removal_indent.ascii.term.svg new file mode 100644 index 00000000..53509d36 --- /dev/null +++ b/tests/color/multiline_removal_indent.ascii.term.svg @@ -0,0 +1,34 @@ + + + + + + + | + + 2 - local function f() + + 3 - print() + + 4 - end + + | + + + + diff --git a/tests/color/multiline_removal_indent.rs b/tests/color/multiline_removal_indent.rs new file mode 100644 index 00000000..6cbb6e64 --- /dev/null +++ b/tests/color/multiline_removal_indent.rs @@ -0,0 +1,19 @@ +use annotate_snippets::{Group, Level, Patch, Renderer, Snippet, renderer::DecorStyle}; + +use snapbox::{assert_data_eq, file}; + +#[test] +fn test() { + let report = &[Group::with_level(Level::ERROR).element( + Snippet::source("do\n local function f()\n print()\n end\nend\n") + .patch(Patch::new(5..41, "")), + )]; + + let expected_ascii = file!["multiline_removal_indent.ascii.term.svg": TermSvg]; + let renderer = Renderer::styled(); + assert_data_eq!(renderer.render(report), expected_ascii); + + let expected_unicode = file!["multiline_removal_indent.unicode.term.svg": TermSvg]; + let renderer = renderer.decor_style(DecorStyle::Unicode); + assert_data_eq!(renderer.render(report), expected_unicode); +} diff --git a/tests/color/multiline_removal_indent.unicode.term.svg b/tests/color/multiline_removal_indent.unicode.term.svg new file mode 100644 index 00000000..ab2fd07f --- /dev/null +++ b/tests/color/multiline_removal_indent.unicode.term.svg @@ -0,0 +1,34 @@ + + + + + + + ╭╴ + + 2 - local function f() + + 3 - print() + + 4 - end + + ╰╴ + + + +