implement get_cursor_pos
This commit is contained in:
@@ -7,6 +7,7 @@ use heapless::Vec;
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum AnsiSequence {
|
||||
Escape,
|
||||
GetCursorPos,
|
||||
CursorPos(u32, u32),
|
||||
CursorUp(u32),
|
||||
CursorDown(u32),
|
||||
@@ -65,6 +66,7 @@ impl Display for AnsiSequence {
|
||||
use AnsiSequence::*;
|
||||
match self {
|
||||
Escape => write!(formatter, "\u{1b}"),
|
||||
GetCursorPos => write!(formatter, "[6n"),
|
||||
CursorPos(line, col) => write!(formatter, "[{};{}H", line, col),
|
||||
CursorUp(amt) => write!(formatter, "[{}A", amt),
|
||||
CursorDown(amt) => write!(formatter, "[{}B", amt),
|
||||
|
@@ -182,6 +182,7 @@ fn set_top_and_bottom(input: &str) -> IResult<&str, AnsiSequence> {
|
||||
.parse(input)
|
||||
}
|
||||
|
||||
tag_parser!(get_cursor_pos, "[6n", AnsiSequence::GetCursorPos);
|
||||
tag_parser!(cursor_save, "[s", AnsiSequence::CursorSave);
|
||||
tag_parser!(cursor_restore, "[u", AnsiSequence::CursorRestore);
|
||||
tag_parser!(erase_display, "[2J", AnsiSequence::EraseDisplay);
|
||||
@@ -281,6 +282,7 @@ fn combined(input: &str) -> IResult<&str, AnsiSequence> {
|
||||
set_g1_graph,
|
||||
set_single_shift2,
|
||||
set_single_shift3,
|
||||
get_cursor_pos,
|
||||
))
|
||||
.parse(input)
|
||||
}
|
||||
|
@@ -44,6 +44,7 @@ macro_rules! test_def_val_parser {
|
||||
};
|
||||
}
|
||||
|
||||
test_parser!(get_cursor_pos, "\u{1b}[6n");
|
||||
test_def_val_parser!(cursor_pos_default, "\u{1b}[H");
|
||||
test_def_val_parser!(cursor_pos, "\u{1b}[10;5H");
|
||||
test_def_val_parser!(cursor_up_default, "\u{1b}[A");
|
||||
|
Reference in New Issue
Block a user