diff options
| author | Maxime Coste <mawww@kakoune.org> | 2019-05-13 17:34:04 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2019-05-13 17:34:45 +1000 |
| commit | 4916471029dfa9853473679823bf557bad2c4a52 (patch) | |
| tree | 4bd9e627ceb2d61d343c8dddbf332127f3e741b7 | |
| parent | 91386a535ccecc1d5d9b0fc27223f8d9006750e3 (diff) | |
Add completion support to load-module
| -rw-r--r-- | src/command_manager.cc | 7 | ||||
| -rw-r--r-- | src/command_manager.hh | 2 | ||||
| -rw-r--r-- | src/commands.cc | 5 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index 1fdfa34d..e4d52d76 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -624,6 +624,13 @@ Completions CommandManager::complete_command_name(const Context& context, String return {0, query.length(), Kakoune::complete(query, query.length(), concatenated(commands, aliases))}; } +Completions CommandManager::complete_module_name(StringView query) const +{ + return {0, query.length(), + Kakoune::complete(query, query.length(), m_modules | filter([](auto&& item) { return not item.value.loaded; }) + | transform(&ModuleMap::Item::key))}; +} + Completions CommandManager::complete(const Context& context, CompletionFlags flags, StringView command_line, diff --git a/src/command_manager.hh b/src/command_manager.hh index 329c24f2..774b8b2c 100644 --- a/src/command_manager.hh +++ b/src/command_manager.hh @@ -129,6 +129,8 @@ public: void load_module(StringView module_name, Context& context); + Completions complete_module_name(StringView query) const; + private: void execute_single_command(CommandParameters params, Context& context, diff --git a/src/commands.cc b/src/commands.cc index b1fe3580..e368dca8 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -2448,7 +2448,10 @@ const CommandDesc require_module_cmd = { ParameterDesc{ {}, ParameterDesc::Flags::None, 1, 1 }, CommandFlags::None, CommandHelper{}, - CommandCompleter{}, + make_completer( + [](const Context&, CompletionFlags, const String& prefix, ByteCount cursor_pos) { + return CommandManager::instance().complete_module_name(prefix.substr(0, cursor_pos)); + }), [](const ParametersParser& parser, Context& context, const ShellContext&) { CommandManager::instance().load_module(parser[0], context); |
