diff --git a/src/renderer/source_map.rs b/src/renderer/source_map.rs index 8f602e1..a4c4202 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/main.rs b/tests/color/main.rs index 6c165fd..f1297d2 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 0000000..53509d3 --- /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 0000000..6cbb6e6 --- /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 0000000..ab2fd07 --- /dev/null +++ b/tests/color/multiline_removal_indent.unicode.term.svg @@ -0,0 +1,34 @@ + + + + + + + ╭╴ + + 2 - local function f() + + 3 - print() + + 4 - end + + ╰╴ + + + + diff --git a/tests/color/multiple_highlight_duplicated.ascii.term.svg b/tests/color/multiple_highlight_duplicated.ascii.term.svg index 8009a49..59c32f5 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 e4308a3..153c284 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(""), ├╴