Fix fmt::Display for 5-part SGR escapes

This commit is contained in:
mulark
2020-09-17 19:31:05 -06:00
parent 4a09914aa0
commit ec11225d38
2 changed files with 5 additions and 2 deletions

View File

@@ -58,10 +58,10 @@ use std::fmt::Display;
impl Display for AnsiSequence {
fn fmt(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(formatter, "\u{1b}")?;
use AnsiSequence::*;
match self {
CursorPos(line, col)
CursorPos(line, col)
=> write!(formatter, "[{};{}H", line, col),
CursorUp(amt)
=> write!(formatter, "[{}A", amt),
@@ -86,6 +86,8 @@ impl Display for AnsiSequence {
1 => write!(formatter, "[{}m", vec[0]),
2 => write!(formatter, "[{};{}m", vec[0], vec[1]),
3 => write!(formatter, "[{};{};{}m", vec[0], vec[1], vec[2]),
5 => write!(formatter, "[{};{};{};{};{}m", vec[0], vec[1],
vec[2], vec[3], vec[4]),
_ => unreachable!()
}
},

View File

@@ -59,6 +59,7 @@ test_parser!(erase_line, "\u{1b}[K");
test_parser!(set_video_mode_a, "\u{1b}[4m");
test_parser!(set_video_mode_b, "\u{1b}[4;42m");
test_parser!(set_video_mode_c, "\u{1b}[4;31;42m");
test_parser!(set_video_mode_d, "\u{1b}[4;31;42;42;42m");
test_parser!(reset_mode, "\u{1b}[=13l");
test_parser!(set_mode, "\u{1b}[=7h");