summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-09-06 18:09:32 +0100
committerMaxime Coste <frrrwww@gmail.com>2015-09-06 18:09:32 +0100
commit30ad9a04759bc85931446cd8f4594ea71db22985 (patch)
treee097d6f4981df031212982c1d68f058621672470 /src
parenta45876124b0f0abad828f81c9406b37e0c2dc622 (diff)
Complete aliases in command prompt
Diffstat (limited to 'src')
-rw-r--r--src/alias_registry.hh5
-rw-r--r--src/command_manager.cc7
2 files changed, 11 insertions, 1 deletions
diff --git a/src/alias_registry.hh b/src/alias_registry.hh
index 4f1a472b..faf856d6 100644
--- a/src/alias_registry.hh
+++ b/src/alias_registry.hh
@@ -16,6 +16,11 @@ public:
void remove_alias(const String& alias);
StringView operator[](const String& name) const;
+ using AliasMap = UnorderedMap<String, String, MemoryDomain::Aliases>;
+ using iterator = AliasMap::const_iterator;
+ iterator begin() const { return m_aliases.begin(); }
+ iterator end() const { return m_aliases.end(); }
+
Vector<StringView> aliases_for(StringView command) const;
private:
diff --git a/src/command_manager.cc b/src/command_manager.cc
index e626ed6c..5d5920a2 100644
--- a/src/command_manager.cc
+++ b/src/command_manager.cc
@@ -567,9 +567,14 @@ Completions CommandManager::complete(const Context& context,
{
if (command.second.flags & CommandFlags::Hidden)
continue;
- if ( prefix_match(command.first, prefix))
+ if (prefix_match(command.first, prefix))
result.candidates.push_back(command.first);
}
+ for (auto& alias : context.aliases())
+ {
+ if (prefix_match(alias.first, prefix))
+ result.candidates.push_back(alias.first);
+ }
std::sort(result.candidates.begin(), result.candidates.end());
return result;
}