#include #include #include #include "editor.h" void help() { printf("Usage:\n"); printf(" cmd open // opens the specified file\n"); printf(" cmd rm // deletes the specified file\n"); printf(" cmd new // creates a new empty file at the specified path\n"); printf(" cmd mv // moves the specified file to the new path\n"); printf(" cmd cp // copies the specified file to the new path\n"); printf(" cmd len // returns the length of the specified file\n"); printf(" cmd log // prints a list of all changes made to the file\n"); } int open_editor() { initscr(); raw(); noecho(); keypad(stdscr, true); int max_y, max_x; getmaxyx(stdscr, max_y, max_x); FILE* file = fopen("somecode.c", "r"); if (file == NULL) { endwin(); printf("Failed to open file\n"); return 1; } String_t text = str_new(); // read from file char by char while (true) { char line[1024]; if (fgets(line, 1024, file) == NULL) { break; } String_t new_text = str_from_chars(line); text = str_merge(&text, &new_text); str_dealloc(&new_text); } fclose(file); Editor editor = editor_from(text); move(0, 5); while (true) { refresh(); int c = getch(); if (editor.editmode == true) { switch (c) { case 27: switch_mode(&editor); break; case KEY_BACKSPACE: move_cursor(&editor, -1, 0); delchar(&editor); break; case KEY_DC: delchar(&editor); break; case '\n': pressed_enter(&editor); break; case KEY_UP: move_cursor(&editor, 0, -1); break; case KEY_DOWN: move_cursor(&editor, 0, 1); break; case KEY_LEFT: move_cursor(&editor, -1, 0); break; case KEY_RIGHT: move_cursor(&editor, 1, 0); break; default: fprintf(stderr, "%d\n", c); addchar(&editor, c); break; } } else { switch (c) { case 'q': endwin(); return 0; case 'i': switch_mode(&editor); break; case 'w': // TODO: write function to save the data to a file break; default: break; } } } } int main() { open_editor(); return 0; }