diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-03-24 00:05:40 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-03-24 00:05:40 +0000 |
| commit | 1d646c03f563e79ee3ea972e6b739a35c7b70740 (patch) | |
| tree | 0d908ad22ea37b9dd0e509dadc9a38abf7cf03db /src/command_manager.cc | |
| parent | abd5afe0129abad0fec6799fc7329a0ca38c1e45 (diff) | |
Add completion support for alias/unalias commands
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index 4902f068..ff4b589a 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -513,16 +513,20 @@ CommandInfo CommandManager::command_info(const Context& context, StringView comm } Completions CommandManager::complete_command_name(const Context& context, - StringView query) const + StringView query, bool with_aliases) const { - auto candidates = Kakoune::complete( - query, query.length(), concatenated( - m_commands + auto commands = m_commands | filter([](const CommandMap::value_type& cmd) { return not (cmd.second.flags & CommandFlags::Hidden); }) - | transform([](const CommandMap::value_type& cmd) { return StringView{cmd.first}; }), - context.aliases().flatten_aliases() - | transform([](AliasRegistry::AliasDesc alias) { return alias.first; }))); + | transform([](const CommandMap::value_type& cmd) { return StringView{cmd.first}; }); + if (not with_aliases) + return {0, query.length(), Kakoune::complete(query, query.length(), commands)}; + + auto candidates = Kakoune::complete(query, query.length(), + concatenated(commands, + context.aliases().flatten_aliases() + | transform([](AliasRegistry::AliasDesc alias) + { return alias.first; }))); return {0, query.length(), std::move(candidates)}; } @@ -556,7 +560,7 @@ Completions CommandManager::complete(const Context& context, { auto cmd_start = is_last_token ? cursor_pos : tokens[tok_idx].begin(); StringView query = command_line.substr(cmd_start, cursor_pos - cmd_start); - return offset_pos(complete_command_name(context, query), cmd_start); + return offset_pos(complete_command_name(context, query, true), cmd_start); } kak_assert(not tokens.empty()); @@ -625,7 +629,7 @@ Completions CommandManager::complete(const Context& context, StringView prefix = params[token_to_complete].substr(0, pos_in_token); if (token_to_complete == 0) - return complete_command_name(context, prefix); + return complete_command_name(context, prefix, true); else { const String& command_name = params[0]; |
