summaryrefslogtreecommitdiff
path: root/src/command_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-03-24 00:05:40 +0000
committerMaxime Coste <frrrwww@gmail.com>2016-03-24 00:05:40 +0000
commit1d646c03f563e79ee3ea972e6b739a35c7b70740 (patch)
tree0d908ad22ea37b9dd0e509dadc9a38abf7cf03db /src/command_manager.cc
parentabd5afe0129abad0fec6799fc7329a0ca38c1e45 (diff)
Add completion support for alias/unalias commands
Diffstat (limited to 'src/command_manager.cc')
-rw-r--r--src/command_manager.cc22
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];