73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
/**
|
|
* \file main.c
|
|
* \author Arthur Barraux
|
|
* \brief Base file of Beluga text editor. Contain fonctions for terminal
|
|
* interactions. \version 0.1 \date 21 septembre 2024
|
|
*/
|
|
|
|
#define _DEFAULT_SOURCE
|
|
#define _BSD_SOURCE
|
|
#define _GNU_SOURCE
|
|
|
|
#include <libgen.h>
|
|
|
|
#include "include/buffer.h"
|
|
#include "include/split_screen.h"
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "include/data.h"
|
|
#include "include/init.h"
|
|
#include "include/input.h"
|
|
#include "include/editor_op.h"
|
|
#include "include/terminal.h"
|
|
#include "include/completion.h"
|
|
#include <signal.h>
|
|
|
|
|
|
struct editorConfig E;
|
|
|
|
int main(int argc, char *argv[]) {
|
|
|
|
char * splash_screen = strdup(getenv("HOME"));
|
|
int home_path_len = (int) strlen(splash_screen);
|
|
char * splash_screen_relative_path = strdup("/.beluga/assets/beluga.txt");
|
|
int splash_screen_relative_path_len = (int) strlen(splash_screen_relative_path);
|
|
|
|
signal(SIGPIPE, SIG_IGN); // don't die on broken pipe, just get EPIPE from write()
|
|
|
|
enableRawMode();
|
|
initEditor();
|
|
EditorPane *active = splitScreenGetActivePane();
|
|
struct buffer_t *buf;
|
|
|
|
splash_screen = realloc(splash_screen, sizeof(char) * (home_path_len + splash_screen_relative_path_len + 1));
|
|
strcat(splash_screen, "/.beluga/assets/beluga.txt");
|
|
free(splash_screen_relative_path);
|
|
|
|
appDebug("splash : %s\n", splash_screen);
|
|
active->buffer_id = bufferCreate(splash_screen, READ_ONLY);
|
|
|
|
if (argc >= 2) {
|
|
if (E.constantes.LSP) {
|
|
|
|
}
|
|
active->buffer_id = bufferCreate(argv[1], READ_AND_WRITE);
|
|
|
|
buf = &E.buffers[active->buffer_id];
|
|
|
|
appDebug("peoject root : %s\n", dirname(buf->fullname));
|
|
|
|
|
|
}
|
|
free(splash_screen);
|
|
|
|
editorSetStatusMessage("HELP: Ctrl-x Ctrl-s = save | Ctrl-x Ctrl-c = quit");
|
|
|
|
while (1) {
|
|
editorRefreshScreen();
|
|
editorProcessKeypress();
|
|
}
|
|
return 0;
|
|
}
|