Commit 456d2a0
Changed files (1)
kilo.c
@@ -18,6 +18,9 @@ struct termios orig_termios;
/*** terminal ***/
void die(const char *s) {
+ write(STDOUT_FILENO, "\x1b[2J", 4);
+ write(STDOUT_FILENO, "\x1b[H", 3);
+
perror(s);
exit(1);
}
@@ -51,6 +54,17 @@ char editor_read_key() {
return c;
}
+/*** output ***/
+
+void editor_refresh_screen() {
+ // <esc>[0J clear screen from cursor up
+ // <esc>[1J clear screen up to cursor
+ // <esc>[2J clear entire screen
+ write(STDOUT_FILENO, "\x1b[2J", 4);
+ // reposition cursor at the top-left corner
+ write(STDOUT_FILENO, "\x1b[H", 3); // https://vt100.net/docs/vt100-ug/chapter3.html#CUP
+}
+
/*** input ***/
void editor_process_keypress() {
@@ -58,6 +72,8 @@ void editor_process_keypress() {
switch(c) {
case CTRL_KEY('q'):
+ write(STDOUT_FILENO, "\x1b[2J", 4);
+ write(STDOUT_FILENO, "\x1b[H", 3);
exit(0);
break;
default:
@@ -75,6 +91,7 @@ int main() {
enable_raw_mode();
while (1) {
+ editor_refresh_screen();
editor_process_keypress();
}