From 09e2a0b6ac1f3e1b295380ef5af23d370ccf5d53 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Fri, 13 Mar 2015 13:52:23 +0000 Subject: [PATCH] Do not change the insert completion menu when a candidate is selected --- src/insert_completer.cc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/insert_completer.cc b/src/insert_completer.cc index 5d76023d..2207464a 100644 --- a/src/insert_completer.cc +++ b/src/insert_completer.cc @@ -394,17 +394,21 @@ void InsertCompleter::menu_show() void InsertCompleter::on_option_changed(const Option& opt) { + // Do not reset the menu if the user has selected an entry + if (not m_matching_candidates.empty() and + m_current_candidate != m_matching_candidates.size() - 1) + return; + auto& completers = m_options["completers"].get(); - Vector option_names; for (auto& completer : completers) { - if (completer.mode == InsertCompleterDesc::Option) - option_names.emplace_back(*completer.param); - } - if (contains(option_names, opt.name())) - { - reset(); - setup_ifn(); + if (completer.mode == InsertCompleterDesc::Option and + *completer.param == opt.name()) + { + reset(); + setup_ifn(); + break; + } } }