diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-11-26 23:41:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-26 23:41:25 -0500 |
commit | 7d2ac303573a444ec3e98657bd0bd6d11f562b21 (patch) | |
tree | 8cf21a963ba3d8caf1178cdeb3480fb0d7c9455c | |
parent | a122013f075101378809d9b52c53729ba91601c5 (diff) |
802 fix color moved side by side panic (#803)
Append newline character when preparing raw line
Fixes #802
-rw-r--r-- | etc/examples/72-color-moved-4.diff | 8 | ||||
-rw-r--r-- | etc/examples/802-color-moved.diff | 12 | ||||
-rw-r--r-- | src/paint.rs | 8 |
3 files changed, 26 insertions, 2 deletions
diff --git a/etc/examples/72-color-moved-4.diff b/etc/examples/72-color-moved-4.diff new file mode 100644 index 00000000..9aa6fc6e --- /dev/null +++ b/etc/examples/72-color-moved-4.diff @@ -0,0 +1,8 @@ +[1mdiff --git a/file.py b/file.py[m +[1mindex f2f1f5e..9735c3a 100644[m +[1m--- a/file.py[m +[1m+++ b/file.py[m +[36m@@ -1,2 +1,2 @@[m +[1;35m-class X: pass # • unicode[m + class Y: pass # • unicode[m +[1;36m+[m[1;36mclass X: pass # • unicode[m diff --git a/etc/examples/802-color-moved.diff b/etc/examples/802-color-moved.diff new file mode 100644 index 00000000..40cf9c32 --- /dev/null +++ b/etc/examples/802-color-moved.diff @@ -0,0 +1,12 @@ +[33mcommit 57e5082[m +Author: Caleb Maclennan <caleb@alerque.com> +Date: Sat Nov 27 01:08:54 2021 +0300 + + Move verses to correct week file + +[33mdiff --git a/foo.md b/foo.md[m +[33mindex ba489f0..0ad8245 100644[m +[33m--- a/foo.md[m +[33m+++ b/foo.md[m +[35m@@ -20,3 +20,99 @@[m [mfoo bar[m +[1;36m+[m[1;36mAs I swore in my wrath, 'They shall not enter my rest.'"[m diff --git a/src/paint.rs b/src/paint.rs index f188306d..cfd453fe 100644 --- a/src/paint.rs +++ b/src/paint.rs @@ -135,9 +135,13 @@ impl<'p> Painter<'p> { } } - // Remove initial -/+ character, and expand tabs as spaces, retaining ANSI sequences. + // Remove initial -/+ character, expand tabs as spaces, retaining ANSI sequences. Terminate with + // newline character. pub fn prepare_raw_line(&self, raw_line: &str) -> String { - ansi::ansi_preserving_slice(&self.expand_tabs(raw_line.graphemes(true)), 1) + format!( + "{}\n", + ansi::ansi_preserving_slice(&self.expand_tabs(raw_line.graphemes(true)), 1), + ) } /// Expand tabs as spaces. |