From 3688bb9c61ad080ce2b34a270d975ed7ad718cf9 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Tue, 12 May 2015 16:12:56 +0200 Subject: [PATCH] auto-completion reads not only the first character, but also the next ones. This behaviour is similar to other browsers. --- src/bfu/inphist.c | 2 +- src/bfu/menu.c | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bfu/inphist.c b/src/bfu/inphist.c index 8c6d005c..0e558bce 100644 --- a/src/bfu/inphist.c +++ b/src/bfu/inphist.c @@ -80,7 +80,7 @@ do_tab_compl(struct dialog_data *dlg_data, } if (n > 1) { - do_menu_selected(term, items, dlg_data, n - 1, 0); + do_menu_selected(term, items, dlg_data, n - 1, -1); } else { if (n == 1) tab_compl(dlg_data, items->data); mem_free(items); diff --git a/src/bfu/menu.c b/src/bfu/menu.c index feacf043..83deebe5 100644 --- a/src/bfu/menu.c +++ b/src/bfu/menu.c @@ -964,10 +964,28 @@ menu_kbd_handler(struct menu *menu, struct term_event *ev) if (!check_kbd_label_key(ev)) break; - s = check_hotkeys(menu, key, win->term); + if (menu->hotkeys != -1) { + s = check_hotkeys(menu, key, win->term); - if (s || check_not_so_hot_keys(menu, key, win->term)) - scroll_menu(menu, 0, 1); + if (s || check_not_so_hot_keys(menu, key, win->term)) { + scroll_menu(menu, 0, 1); + } + } else { + struct terminal *term = win->term; + struct keybinding *auto_complete = kbd_nm_lookup(KEYMAP_EDIT, "auto-complete"); + + delete_window_ev(win, NULL); + term_send_event(term, ev); + + if (auto_complete) { + struct term_event complete; + + complete.ev = EVENT_KBD; + complete.info.keyboard = auto_complete->kbd; + term_send_event(term, &complete); + } + return; + } } }