summaryrefslogtreecommitdiff
path: root/src/dged/minibuffer.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2023-11-26 23:08:06 +0100
committerAlbert Cervin <albert@acervin.com>2024-01-15 10:39:56 +0100
commit64d6816a36567274551dd4f067fe4d05b1445cc0 (patch)
tree50f8dc895d363ab391d30226f665870d8ce263b5 /src/dged/minibuffer.c
parentc87888f10dfb54590c5aae8311b7aff887193d9a (diff)
downloaddged-64d6816a36567274551dd4f067fe4d05b1445cc0.tar.gz
dged-64d6816a36567274551dd4f067fe4d05b1445cc0.tar.xz
dged-64d6816a36567274551dd4f067fe4d05b1445cc0.zip
Completion rework
- Add support for building with clang Also fix some annoying bugs: - Visual column was wrong when using tabs - Add shift-tab for inserting an actual tab - Fix minibuffer sometimes having dot above it
Diffstat (limited to 'src/dged/minibuffer.c')
-rw-r--r--src/dged/minibuffer.c49
1 files changed, 8 insertions, 41 deletions
diff --git a/src/dged/minibuffer.c b/src/dged/minibuffer.c
index d31d634..2105c52 100644
--- a/src/dged/minibuffer.c
+++ b/src/dged/minibuffer.c
@@ -1,6 +1,7 @@
#include "minibuffer.h"
#include "binding.h"
#include "buffer.h"
+#include "buffer_view.h"
#include "command.h"
#include "display.h"
@@ -19,9 +20,6 @@ static struct minibuffer {
bool clear;
struct window *prev_window;
- void (*update_callback)(void *);
- void *update_callback_userdata;
-
} g_minibuffer = {0};
uint32_t minibuffer_draw_prompt(struct command_list *commands) {
@@ -76,8 +74,7 @@ int32_t minibuffer_execute() {
}
}
-void update(struct buffer *buffer, uint32_t width, uint32_t height,
- void *userdata) {
+void update(struct buffer *buffer, void *userdata) {
struct timespec current;
struct minibuffer *mb = (struct minibuffer *)userdata;
clock_gettime(CLOCK_MONOTONIC, &current);
@@ -86,10 +83,6 @@ void update(struct buffer *buffer, uint32_t width, uint32_t height,
buffer_clear(buffer);
mb->clear = false;
}
-
- if (mb->update_callback != NULL) {
- mb->update_callback(mb->update_callback_userdata);
- }
}
void minibuffer_init(struct buffer *buffer) {
@@ -150,14 +143,15 @@ void minibuffer_set_prompt_internal(const char *fmt, va_list args) {
vsnprintf(g_minibuffer.prompt, sizeof(g_minibuffer.prompt), fmt, args);
}
-int32_t minibuffer_prompt_internal(struct command_ctx command_ctx,
- void (*update_callback)(void *),
- void *userdata, const char *fmt,
- va_list args) {
+int32_t minibuffer_prompt(struct command_ctx command_ctx, const char *fmt,
+ ...) {
if (g_minibuffer.buffer == NULL) {
return 1;
}
+ va_list args;
+ va_start(args, fmt);
+
minibuffer_clear();
g_minibuffer.prompt_active = true;
@@ -166,39 +160,13 @@ int32_t minibuffer_prompt_internal(struct command_ctx command_ctx,
minibuffer_set_prompt_internal(fmt, args);
- if (update_callback != NULL) {
- g_minibuffer.update_callback = update_callback;
- g_minibuffer.update_callback_userdata = userdata;
- }
-
if (windows_get_active() != minibuffer_window()) {
g_minibuffer.prev_window = windows_get_active();
windows_set_active(minibuffer_window());
}
-
- return 0;
-}
-
-int32_t minibuffer_prompt(struct command_ctx command_ctx, const char *fmt,
- ...) {
- va_list args;
- va_start(args, fmt);
- int32_t r = minibuffer_prompt_internal(command_ctx, NULL, NULL, fmt, args);
- va_end(args);
-
- return r;
-}
-
-int32_t minibuffer_prompt_interactive(struct command_ctx command_ctx,
- void (*update_callback)(void *),
- void *userdata, const char *fmt, ...) {
- va_list args;
- va_start(args, fmt);
- int32_t r = minibuffer_prompt_internal(command_ctx, update_callback, userdata,
- fmt, args);
va_end(args);
- return r;
+ return 0;
}
void minibuffer_set_prompt(const char *fmt, ...) {
@@ -210,7 +178,6 @@ void minibuffer_set_prompt(const char *fmt, ...) {
void minibuffer_abort_prompt() {
minibuffer_clear();
- g_minibuffer.update_callback = NULL;
g_minibuffer.prompt_active = false;
if (g_minibuffer.prev_window != NULL) {