Fix fmt::Display for 5-part SGR escapes
This commit is contained in:
@@ -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!()
|
||||
}
|
||||
},
|
||||
|
@@ -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");
|
||||
|
Reference in New Issue
Block a user