From ec11225d381d586fbd47dd0752a92b94aa3bbc2b Mon Sep 17 00:00:00 2001 From: mulark Date: Thu, 17 Sep 2020 19:31:05 -0600 Subject: [PATCH] Fix fmt::Display for 5-part SGR escapes --- src/enums.rs | 6 ++++-- src/parsers/tests.rs | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/enums.rs b/src/enums.rs index ac641b5..c625b8b 100644 --- a/src/enums.rs +++ b/src/enums.rs @@ -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!() } }, diff --git a/src/parsers/tests.rs b/src/parsers/tests.rs index 9adc546..5b37a51 100644 --- a/src/parsers/tests.rs +++ b/src/parsers/tests.rs @@ -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");