commit - 7bd3a14bde9bd349f4ac2fca9e7f3a1b56ea5d5a
commit + 27dbcaab4fac08fbb43df9eb5f10781ff7015bb6
blob - ccb571e9dca92633ca0afe9be381a797156e874d
blob + 92b8bcf4c2ea294db0ecd10eb10de790563f2c40
--- cmd.c
+++ cmd.c
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, eecmd_select, exit_minibuffer,
- &eecmd_history, compl_eecmd, NULL);
+ &eecmd_history, compl_eecmd, NULL, 1);
len = sizeof(ministate.prompt);
strlcpy(ministate.prompt, "", len);
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, ts_select, exit_minibuffer,
- NULL, compl_ts, NULL);
+ NULL, compl_ts, NULL, 1);
strlcpy(ministate.prompt, "Select tab: ", sizeof(ministate.prompt));
}
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, lu_select, exit_minibuffer,
- &lu_history, compl_lu, NULL);
+ &lu_history, compl_lu, NULL, 0);
strlcpy(ministate.prompt, "Load URL: ", sizeof(ministate.prompt));
}
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, lu_select, exit_minibuffer,
- &lu_history, compl_lu, NULL);
+ &lu_history, compl_lu, NULL, 0);
strlcpy(ministate.prompt, "Load URL: ", sizeof(ministate.prompt));
strlcpy(ministate.buf, current_tab->hist_cur->h, sizeof(ministate.buf));
ministate.buffer.cpoff = utf8_cplen(ministate.buf);
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, bp_select, exit_minibuffer, NULL,
- NULL, NULL);
+ NULL, NULL, 0);
strlcpy(ministate.prompt, "Bookmark URL: ", sizeof(ministate.prompt));
strlcpy(ministate.buf, current_tab->hist_cur->h, sizeof(ministate.buf));
ministate.buffer.cpoff = utf8_cplen(ministate.buf);
}
enter_minibuffer(sensible_self_insert, ls_select, exit_minibuffer,
- NULL, compl_ls, l);
+ NULL, compl_ls, l, 1);
strlcpy(ministate.prompt, "Select link: ", sizeof(ministate.prompt));
}
GUARD_RECURSIVE_MINIBUFFER();
enter_minibuffer(sensible_self_insert, swiper_select, exit_minibuffer,
- NULL, compl_swiper, TAILQ_FIRST(&buffer->page.head));
+ NULL, compl_swiper, TAILQ_FIRST(&buffer->page.head), 1);
strlcpy(ministate.prompt, "Select line: ", sizeof(ministate.prompt));
}
}
enter_minibuffer(sensible_self_insert, toc_select, exit_minibuffer,
- NULL, compl_toc, l);
+ NULL, compl_toc, l, 1);
strlcpy(ministate.prompt, "Select heading: ",
sizeof(ministate.prompt));
}
void
cmd_mini_complete_and_exit(struct buffer *buffer)
{
+ struct vline *vl;
+
if (!in_minibuffer)
return;
+ if (ministate.compl.must_select) {
+ vl = ministate.compl.buffer.current_line;
+ if (vl == NULL || vl->parent->flags & L_HIDDEN ||
+ vl->parent->type == LINE_COMPL) {
+ message("no match");
+ return;
+ }
+ }
+
minibuffer_taint_hist();
ministate.donefn();
}
blob - 70795ac34c8058672ee0a2487c150076873f97b8
blob + e19d2936f5dbf647c825d2caa8bbb9d6cd7bd4ef
--- include/minibuffer.h
+++ include/minibuffer.h
struct buffer buffer;
complfn *fn;
void *data;
+ int must_select;
} compl;
};
extern struct ministate ministate;
void toc_select(void);
void enter_minibuffer(void(*)(void), void(*)(void), void(*)(void),
- struct histhead *, complfn *, void *);
+ struct histhead *, complfn *, void *, int);
void exit_minibuffer(void);
void yornp(const char *, void (*)(int, struct tab *), struct tab *);
blob - 76e6406808ee6c1de69463c742d60c8bf595a446
blob + a5f554244e55478d8f19d20432e2b29fce7e19e7
--- minibuffer.c
+++ minibuffer.c
void
enter_minibuffer(void (*self_insert_fn)(void), void (*donefn)(void),
void (*abortfn)(void), struct histhead *hist,
- complfn *complfn, void *compldata)
+ complfn *complfn, void *compldata, int must_select)
{
in_minibuffer = complfn == NULL ? MB_READ : MB_COMPREAD;
if (in_minibuffer == MB_COMPREAD) {
ministate.compl.fn = complfn;
ministate.compl.data = compldata;
+ ministate.compl.must_select = must_select;
populate_compl_buffer(complfn, compldata);
}
yornp_cb = fn;
yornp_data = data;
enter_minibuffer(yornp_self_insert, yornp_self_insert,
- yornp_abort, NULL, NULL, NULL);
+ yornp_abort, NULL, NULL, NULL, 0);
len = sizeof(ministate.prompt);
strlcpy(ministate.prompt, prompt, len);
read_cb = fn;
read_data = data;
enter_minibuffer(read_self_insert, read_select, read_abort,
- &read_history, NULL, NULL);
+ &read_history, NULL, NULL, 0);
len = sizeof(ministate.prompt);
strlcpy(ministate.prompt, prompt, len);
blob - a7af3cbb29c6bace3d7b3441edf2816dc9345e3c
blob + fe12f904031d9c35398cc59c25425e3f231b0d08
--- ui.c
+++ ui.c
switch_to_tab(tab);
enter_minibuffer(sensible_self_insert, fn, exit_minibuffer,
- &ir_history, NULL, NULL);
+ &ir_history, NULL, NULL, 0);
strlcpy(ministate.prompt, "Input required: ",
sizeof(ministate.prompt));
redraw_tab(tab);