summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/cmds.c1
-rw-r--r--src/main/completion.c2
-rw-r--r--src/main/main.c21
3 files changed, 21 insertions, 3 deletions
diff --git a/src/main/cmds.c b/src/main/cmds.c
index c137ed1..5a1d7b6 100644
--- a/src/main/cmds.c
+++ b/src/main/cmds.c
@@ -68,6 +68,7 @@ int32_t run_interactive(struct command_ctx ctx, int argc, const char *argv[]) {
}
int32_t do_switch_buffer(struct command_ctx ctx, int argc, const char *argv[]) {
+ disable_completion(minibuffer_buffer());
const char *bufname = argv[0];
if (argc == 0) {
// switch back to prev buffer
diff --git a/src/main/completion.c b/src/main/completion.c
index 7382805..414df9c 100644
--- a/src/main/completion.c
+++ b/src/main/completion.c
@@ -203,6 +203,7 @@ static void update_completions(struct buffer *buffer,
}
static void on_buffer_delete(struct buffer *buffer, struct region deleted,
+ uint32_t start_idx, uint32_t end_idx,
void *userdata) {
struct active_completion_ctx *ctx = (struct active_completion_ctx *)userdata;
@@ -212,6 +213,7 @@ static void on_buffer_delete(struct buffer *buffer, struct region deleted,
}
static void on_buffer_insert(struct buffer *buffer, struct region inserted,
+ uint32_t start_idx, uint32_t end_idx,
void *userdata) {
struct active_completion_ctx *ctx = (struct active_completion_ctx *)userdata;
diff --git a/src/main/main.c b/src/main/main.c
index 02afd2b..7b9a812 100644
--- a/src/main/main.c
+++ b/src/main/main.c
@@ -20,6 +20,10 @@
#include "dged/reactor.h"
#include "dged/settings.h"
+#ifdef SYNTAX_ENABLE
+#include "dged/syntax.h"
+#endif
+
#include "bindings.h"
#include "cmds.h"
#include "completion.h"
@@ -213,11 +217,20 @@ int main(int argc, char *argv[]) {
struct buffers buflist = {0};
buffers_init(&buflist, 32);
+ struct buffer minibuffer = buffer_create("minibuffer");
+ minibuffer.lazy_row_add = false;
+ minibuffer_init(&minibuffer, &buflist);
+
buffers_add_add_hook(&buflist, watch_file, (void *)reactor);
+#ifdef SYNTAX_ENABLE
+ syntax_init();
+#endif
+
struct buffer initial_buffer = buffer_create("welcome");
if (filename != NULL) {
buffer_destroy(&initial_buffer);
initial_buffer = buffer_from_file(filename);
+ free((void *)filename);
} else {
const char *welcome_txt = "Welcome to the editor for datagubbar 👴\n";
buffer_set_text(&initial_buffer, (uint8_t *)welcome_txt,
@@ -225,9 +238,6 @@ int main(int argc, char *argv[]) {
}
struct buffer *ib = buffers_add(&buflist, initial_buffer);
- struct buffer minibuffer = buffer_create("minibuffer");
- minibuffer.lazy_row_add = false;
- minibuffer_init(&minibuffer);
windows_init(display_height(display), display_width(display), ib,
&minibuffer);
@@ -383,6 +393,11 @@ int main(int argc, char *argv[]) {
minibuffer_destroy();
buffer_destroy(&minibuffer);
buffers_destroy(&buflist);
+
+#ifdef SYNTAX_ENABLE
+ syntax_teardown();
+#endif
+
display_clear(display);
display_destroy(display);
destroy_bindings();