Commit 456d2a0

mo khan <mo.khan@gmail.com>
2021-01-14 04:43:57
clear screen on exit
1 parent d14cde6
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();
   }