summaryrefslogtreecommitdiff
path: root/jet.c
diff options
context:
space:
mode:
authorJuan Manuel Tomás <jtomas1815@gmail.com>2020-05-24 05:35:00 -0300
committerJuan Manuel Tomás <jtomas1815@gmail.com>2020-05-24 05:35:00 -0300
commit98280238383dc390207827d09dc92e0459229134 (patch)
treee2bc7c0877289165463dd6f9c2e77b570b22e29c /jet.c
parentd37027bbd7ac13fdd0f1e2f01e1ec4b75b6c9588 (diff)
downloadjet-98280238383dc390207827d09dc92e0459229134.tar.gz
jet-98280238383dc390207827d09dc92e0459229134.zip
Rewrite in c++
Diffstat (limited to 'jet.c')
-rw-r--r--jet.c118
1 files changed, 0 insertions, 118 deletions
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 <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <curses.h>
-#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;
-}