From 98280238383dc390207827d09dc92e0459229134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Sun, 24 May 2020 05:35:00 -0300 Subject: Rewrite in c++ --- jet.c | 118 ------------------------------------------------------------------ 1 file changed, 118 deletions(-) delete mode 100644 jet.c (limited to 'jet.c') diff --git a/jet.c b/jet.c deleted file mode 100644 index 3deabde..0000000 --- a/jet.c +++ /dev/null @@ -1,118 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "page.c" -#include "point.c" - -#define NORMAL_MODE 0 -#define INSERT_MODE 1 - -struct buffer { - char *name; - struct point start; - struct point cursor; -}; - -struct buffer *new_buffer(char *name) { - struct buffer *result = calloc(1, sizeof(struct buffer)); - result->name = name; - result->start.page = new_page(); - result->cursor = result->start; - return result; -} - -int main(int argc, char *argv[]) { - initscr(); - cbreak(); - noecho(); - intrflush(stdscr, FALSE); - keypad(stdscr, TRUE); - - struct buffer *buffer = new_buffer("test"); - struct point window_start = buffer->start; - - if (argc > 1) { - FILE *f = fopen(argv[1], "r"); - char c; - while ((c = fgetc(f)) != EOF) { - insert_at_point(&buffer->cursor, c); - } - buffer->cursor = buffer->start; - fclose(f); - } - - int window_height, window_width; - getmaxyx(stdscr, window_height, window_width); - - int mode = NORMAL_MODE; - - int quit = 0; - while (!quit) { - clear(); - - int x = -1, y = -1; - struct point window_end = window_start; - while (element(&window_end) && getcury(stdscr) < window_height - 1) { - if (same_point(&window_end, &buffer->cursor)) { - getyx(stdscr, y, x); - } - addch(element(&window_end)); - move_point_forward(&window_end); - } - if (x > -1 && y > -1) { - move(y, x); - } - - int input = getch(); - - if (mode == NORMAL_MODE) { - switch (input) { - case '': - quit = 1; - break; - case 'i': - mode = INSERT_MODE; - break; - case 'k': - prev_line(&buffer->cursor, window_width); - if (y <= 0) { - prev_line(&window_start, window_width); - } - break; - case 'j': - next_line(&buffer->cursor, window_width); - if (y >= window_height - 2) { - next_line(&window_start, window_width); - } - break; - case 'h': - move_point_backward(&buffer->cursor); - break; - case 'l': - move_point_forward(&buffer->cursor); - break; - } - } else { - switch (input) { - case '': - mode = NORMAL_MODE; - break; - case KEY_BACKSPACE: - delete_at_point(&buffer->cursor); - break; - default: - insert_at_point(&buffer->cursor, input); - } - } - if (element(&buffer->cursor) == 0) { - move_point_backward(&buffer->cursor); - } - } - - endwin(); - return 0; -} -- cgit v1.2.3