diff --git a/src/input_handler.cc b/src/input_handler.cc index a9925f00..176fa975 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -664,9 +664,11 @@ private: { if (not m_completions.is_valid()) { + auto& completers = options()["completers"].get>(); BufferIterator cursor = m_context.editor().main_selection().last(); - m_completions = complete_opt(cursor, m_context.options()); - if (not m_completions.is_valid()) + if (contains(completers, "option")) + m_completions = complete_opt(cursor, m_context.options()); + if (not m_completions.is_valid() and contains(completers, "word")) m_completions = complete_word(cursor); if (not m_completions.is_valid()) return false; diff --git a/src/option_manager.cc b/src/option_manager.cc index 7a6a20a2..63a6a7a5 100644 --- a/src/option_manager.cc +++ b/src/option_manager.cc @@ -119,6 +119,7 @@ GlobalOptions::GlobalOptions() declare_option("filetype", ""); declare_option>("completions", {}); declare_option>("path", { "./", "/usr/include" }); + declare_option>("completers", {"option", "word"}); declare_option("insert_hide_sel", false); } diff --git a/src/option_manager.hh b/src/option_manager.hh index b6688bf4..6e22c720 100644 --- a/src/option_manager.hh +++ b/src/option_manager.hh @@ -193,6 +193,8 @@ class OptionManagerWatcher_AutoRegister public: OptionManagerWatcher_AutoRegister(OptionManager& options) : AutoRegister(options) {} + + OptionManager& options() { return registry(); } };