diff options
Diffstat (limited to 'src/line/mode.cc')
| -rw-r--r-- | src/line/mode.cc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/line/mode.cc b/src/line/mode.cc index 83eda67..9eb54b1 100644 --- a/src/line/mode.cc +++ b/src/line/mode.cc @@ -71,7 +71,7 @@ string readline() { clear_below(); } - else if (c == 'R') + else if (c == 'P') { get_cursor_position(); } @@ -87,9 +87,14 @@ string readline() } else { - print("{}", c); buffer += c; - fflush(stdout); + print_override(buffer); + + // esc sequence + if (buffer.size() <= 2 && buffer[0] == '\x1b' && buffer[1] == '[') + { + ; + } } } return buffer; @@ -127,4 +132,12 @@ T_position get_cursor_position() return pos; } +void print_override(const std::string &s) +{ + print("\r"); + fflush(stdout); + print("{}", s); + fflush(stdout); +} + } |
