commit - 0435884036536a032d2bbe734abf32642de7988d
commit + 0fceedb5fedbf154222ba2e675ee20bd5651008f
blob - 57d01ea586adb3381066c9342720bcb3642f4165
blob + b2d69256bdb2e6b0a75dff773828e3988045022f
--- cmd.c
+++ cmd.c
}
}
- minibuffer_taint_hist();
- ministate.donefn();
+ minibuffer_confirm();
}
void
blob - d9d93d8cd1dd71a0264ce9b35878ceff67b93cd9
blob + b4fbe8a2f8d2663be3688240e15f9aa32568198c
--- minibuffer.c
+++ minibuffer.c
static void yornp_abort(void);
static void read_self_insert(void);
static void read_abort(void);
-static void read_select(void);
+static void read_select(const char *);
static void handle_clear_echoarea(int, int, void *);
static unsigned long clechotimer;
strlcpy(ministate.buf, hist_cur(ministate.hist),
sizeof(ministate.buf));
ministate.buffer.current_line->parent->line = ministate.buf;
+}
+
+void
+minibuffer_confirm(void)
+{
+ if (!in_minibuffer || ministate.donefn == NULL)
+ return;
+
+ minibuffer_taint_hist();
+ ministate.donefn(minibuffer_compl_text());
}
void
}
void
-eecmd_select(void)
+eecmd_select(const char *t)
{
struct cmd *cmd;
- const char *t;
- t = minibuffer_compl_text();
for (cmd = cmds; cmd->cmd != NULL; ++cmd) {
if (!strcmp(cmd->cmd, t)) {
minibuffer_hist_save_entry();
}
void
-ir_select_gemini(void)
+ir_select_gemini(const char *text)
{
static struct iri iri;
char buf[1025];
if (iri_parse(NULL, hist_cur(tab->hist), &iri) == -1)
goto err;
- if (iri_setquery(&iri, minibuffer_compl_text()) == -1)
+ if (iri_setquery(&iri, text) == -1)
goto err;
if (iri_unparse(&iri, buf, sizeof(buf)) == -1)
goto err;
}
void
-ir_select_reply(void)
+ir_select_reply(const char *text)
{
static struct iri iri;
char buf[1025] = {0};
/* a bit ugly but... */
iri_parse(NULL, tab->last_input_url, &iri);
- iri_setquery(&iri, minibuffer_compl_text());
+ iri_setquery(&iri, text);
iri_unparse(&iri, buf, sizeof(buf));
exit_minibuffer();
}
void
-ir_select_gopher(void)
+ir_select_gopher(const char *text)
{
minibuffer_hist_save_entry();
- gopher_send_search_req(current_tab, minibuffer_compl_text());
+ gopher_send_search_req(current_tab, text);
exit_minibuffer();
}
void
-lu_select(void)
+lu_select(const char *text)
{
char url[GEMINI_URL_LEN+1];
minibuffer_hist_save_entry();
- humanify_url(minibuffer_compl_text(), hist_cur(current_tab->hist),
- url, sizeof(url));
+ humanify_url(text, hist_cur(current_tab->hist), url, sizeof(url));
exit_minibuffer();
load_url_in_tab(current_tab, url, NULL, LU_MODE_NOCACHE);
}
void
-bp_select(void)
+bp_select(const char *url)
{
- const char *url;
-
- url = minibuffer_compl_text();
if (*url != '\0') {
if (bookmark_page(url) == -1)
message("failed to bookmark page: %s",
}
void
-ts_select(void)
+ts_select(const char *text)
{
struct tab *tab;
}
void
-ls_select(void)
+ls_select(const char *text)
{
struct line *l;
}
void
-swiper_select(void)
+swiper_select(const char *text)
{
struct line *l;
}
void
-toc_select(void)
+toc_select(const char *text)
{
struct line *l;
}
void
-uc_select(void)
+uc_select(const char *name)
{
- const char *name;
-
- name = minibuffer_compl_text();
if ((current_tab->client_cert = ccert(name)) == NULL) {
message("Certificate %s not found", name);
return;
}
void
-search_select(void)
+search_select(const char *text)
{
static struct iri iri;
static char buf[1025];
exit_minibuffer();
return;
}
- iri_setquery(&iri, minibuffer_compl_text());
+ iri_setquery(&iri, text);
iri_unparse(&iri, buf, sizeof(buf));
exit_minibuffer();
}
static void
-read_select(void)
+read_select(const char *text)
{
exit_minibuffer();
minibuffer_hist_save_entry();
- read_cb(ministate.buf, read_data);
+ read_cb(text, read_data);
}
/*
}
void
-enter_minibuffer(void (*self_insert_fn)(void), void (*donefn)(void),
+enter_minibuffer(void (*self_insert_fn)(void), void (*donefn)(const char *),
void (*abortfn)(void), struct hist *hist,
complfn *complfn, void *compldata, int must_select)
{
yornp_cb = fn;
yornp_data = data;
- enter_minibuffer(yornp_self_insert, yornp_self_insert,
+ enter_minibuffer(yornp_self_insert, NULL,
yornp_abort, NULL, NULL, NULL, 0);
len = sizeof(ministate.prompt);
blob - 88d01cf11bf190385a692572ceadad2f6c8eec88
blob + 536bafdb2a728a29982b0cf5e758b2343ebd53db
--- minibuffer.h
+++ minibuffer.h
char *curmesg;
char prompt[64];
- void (*donefn)(void);
+ void (*donefn)(const char *);
void (*abortfn)(void);
char buf[1025];
void recompute_completions(int);
int minibuffer_insert_current_candidate(void);
void minibuffer_taint_hist(void);
+void minibuffer_confirm(void);
void minibuffer_self_insert(void);
void sensible_self_insert(void);
-void eecmd_select(void);
-void ir_select_gemini(void);
-void ir_select_reply(void);
-void ir_select_gopher(void);
-void lu_select(void);
-void bp_select(void);
-void ts_select(void);
-void ls_select(void);
-void swiper_select(void);
-void toc_select(void);
-void uc_select(void);
-void search_select(void);
+void eecmd_select(const char *);
+void ir_select_gemini(const char *);
+void ir_select_reply(const char *);
+void ir_select_gopher(const char *);
+void lu_select(const char *);
+void bp_select(const char *);
+void ts_select(const char *);
+void ls_select(const char *);
+void swiper_select(const char *);
+void toc_select(const char *);
+void uc_select(const char *);
+void search_select(const char *);
-void enter_minibuffer(void(*)(void), void(*)(void), void(*)(void),
+void enter_minibuffer(void(*)(void), void(*)(const char *), void(*)(void),
struct hist *, complfn *, void *, int);
void exit_minibuffer(void);
blob - 544bdc943f403061887766c3145a424ba3a818d2
blob + 519753fc89a5c9e6738d0786725f9815c5668644
--- ui.c
+++ ui.c
}
void
-ui_require_input(struct tab *tab, int hide, void (*fn)(void))
+ui_require_input(struct tab *tab, int hide, void (*fn)(const char *))
{
/* TODO: hard-switching to another tab is ugly */
switch_to_tab(tab);
blob - 912098a047c9ce38fd2047bfc3de08577b33b6f3
blob + faa3c3ec05175a95c64bbbe4cf3be10c56e78e86
--- ui.h
+++ ui.h
void ui_show_downloads_pane(void);
void ui_schedule_redraw(void);
void ui_after_message_hook(void);
-void ui_require_input(struct tab *, int, void (*)(void));
+void ui_require_input(struct tab *, int, void (*)(const char *));
void ui_yornp(const char *, void (*)(int, struct tab *), struct tab *);
void ui_read(const char *, void (*)(const char *, struct tab *), struct tab *, const char *);
void ui_other_window(void);