diff options
| author | Albert Cervin <albert@acervin.com> | 2023-06-14 00:03:47 +0200 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-07-11 21:26:49 +0200 |
| commit | 3a8ae83aa13636679c151027cace905fa87ebd8e (patch) | |
| tree | 4a68bfb1e32dc1d6dbd4c8779312f0f32fcba926 /src/dged/minibuffer.c | |
| parent | bc5696e5bbd4739691f53563f3506b30b9be1ad3 (diff) | |
| download | dged-3a8ae83aa13636679c151027cace905fa87ebd8e.tar.gz dged-3a8ae83aa13636679c151027cace905fa87ebd8e.tar.xz dged-3a8ae83aa13636679c151027cace905fa87ebd8e.zip | |
Implement replace + autocomplete
Autocomplete is currently a POC and works only with find-file.
Diffstat (limited to 'src/dged/minibuffer.c')
| -rw-r--r-- | src/dged/minibuffer.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/dged/minibuffer.c b/src/dged/minibuffer.c index 0ff32a8..3c5a291 100644 --- a/src/dged/minibuffer.c +++ b/src/dged/minibuffer.c @@ -18,7 +18,8 @@ static struct minibuffer { bool prompt_active; bool clear; - void (*update_callback)(); + void (*update_callback)(void *); + void *update_callback_userdata; } g_minibuffer = {0}; @@ -88,7 +89,7 @@ struct update_hook_result update(struct buffer_view *view, } if (mb->update_callback != NULL) { - mb->update_callback(); + mb->update_callback(mb->update_callback_userdata); } return res; @@ -153,7 +154,8 @@ void minibuffer_set_prompt_internal(const char *fmt, va_list args) { } int32_t minibuffer_prompt_internal(struct command_ctx command_ctx, - void (*update_callback)(), const char *fmt, + void (*update_callback)(void *), + void *userdata, const char *fmt, va_list args) { if (g_minibuffer.buffer == NULL) { return 1; @@ -169,6 +171,7 @@ int32_t minibuffer_prompt_internal(struct command_ctx command_ctx, if (update_callback != NULL) { g_minibuffer.update_callback = update_callback; + g_minibuffer.update_callback_userdata = userdata; } return 0; @@ -178,19 +181,19 @@ 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, fmt, args); + 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)(), - const char *fmt, ...) { + 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, fmt, args); + int32_t r = minibuffer_prompt_internal(command_ctx, update_callback, userdata, + fmt, args); va_end(args); return r; |
