aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/line/mode.h2
-rw-r--r--src/line/mode.cc19
2 files changed, 18 insertions, 3 deletions
diff --git a/include/line/mode.h b/include/line/mode.h
index 2baad81..fcbad8c 100644
--- a/include/line/mode.h
+++ b/include/line/mode.h
@@ -25,4 +25,6 @@ std::string readline();
T_position get_cursor_position();
+void print_override(const std::string &s);
+
}
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);
+}
+
}