tShow status message that appears after first keypress after timeout of 5 s - v… | |
git clone git://src.adamsgaard.dk/ve | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 4c6ac8b9eea3b516a5c0f7452d1b2fe4d1aa882f | |
parent 8ce8f682e8b6e18b5b095a372c929090036ea07b | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 6 Aug 2019 15:01:39 +0200 | |
Show status message that appears after first keypress after timeout of 5 s | |
Diffstat: | |
M main.c | 3 +++ | |
M output.c | 16 ++++++++++++++++ | |
M output.h | 1 + | |
M terminal.c | 3 ++- | |
4 files changed, 22 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/main.c b/main.c | |
t@@ -2,6 +2,7 @@ | |
#include "output.h" | |
#include "input.h" | |
#include "io.h" | |
+#include "output.h" | |
int | |
main(int argc, char* argv[]) | |
t@@ -13,6 +14,8 @@ main(int argc, char* argv[]) | |
file_open(argv[1]); | |
} | |
+ editor_set_status_message("HELP: Ctrl-q to quit"); | |
+ | |
while (1) { | |
editor_refresh_screen(); | |
editor_process_keypress(); | |
diff --git a/output.c b/output.c | |
t@@ -71,6 +71,21 @@ editor_draw_status(struct abuf *ab) | |
ab_append(ab, " ", 1); | |
ab_append(ab, right_status, right_status_len); | |
} | |
+ ab_append(ab, "\x1b[m", 3); | |
+ ab_append(ab, "\r\n", 2); | |
+} | |
+ | |
+/* draw status message if as long as it is specified and it is not too old */ | |
+void | |
+editor_draw_status_message(struct abuf *ab) | |
+{ | |
+ int msglen; | |
+ ab_append(ab, "\x1b[K", 3); | |
+ msglen = strlen(E.status_msg); | |
+ if (msglen > E.screen_columns) | |
+ msglen = E.screen_columns; | |
+ if (msglen && time(NULL) - E.status_msg_time < 5) | |
+ ab_append(ab, E.status_msg, msglen); | |
} | |
/* navigate over tab-representative string as one character */ | |
t@@ -148,6 +163,7 @@ editor_refresh_screen() | |
editor_draw_rows(&ab); | |
editor_draw_status(&ab); | |
+ editor_draw_status_message(&ab); | |
char buf[32]; | |
snprintf(buf, sizeof(buf), "\x1b[%d;%dH", | |
diff --git a/output.h b/output.h | |
t@@ -8,5 +8,6 @@ struct abuf { | |
#define ABUF_INIT {NULL, 0} | |
void editor_refresh_screen(); | |
+void editor_set_status_message(const char *fmt, ...); | |
#endif | |
diff --git a/terminal.c b/terminal.c | |
t@@ -123,5 +123,6 @@ init_editor() { | |
if (get_window_size(&E.screen_rows, &E.screen_columns) == -1) | |
die("get_window_size"); | |
- E.screen_rows -= 1; | |
+ /* E.screen_rows -= 1; */ | |
+ E.screen_rows -= 2; | |
} |