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 @@
+
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 @@
+