summaryrefslogtreecommitdiff
path: root/src/client_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-12-23 13:54:09 +0000
committerMaxime Coste <frrrwww@gmail.com>2014-12-23 13:54:09 +0000
commitb6ff15aa757eb35fed5772d28e3c06b5e844a49e (patch)
treed41ebca1b4fe4591017f5310749b263047ba9345 /src/client_manager.cc
parent064fb81b8d38df3bc77e2211fb6bc5db84fedb97 (diff)
Unify completion from container content logic
Diffstat (limited to 'src/client_manager.cc')
-rw-r--r--src/client_manager.cc16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc
index 66b4bf62..213cc23f 100644
--- a/src/client_manager.cc
+++ b/src/client_manager.cc
@@ -2,6 +2,7 @@
#include "buffer_manager.hh"
#include "command_manager.hh"
+#include "containers.hh"
#include "event_manager.hh"
#include "face_registry.hh"
#include "file.hh"
@@ -172,19 +173,8 @@ void ClientManager::clear_mode_trashes() const
CandidateList ClientManager::complete_client_name(StringView prefix,
ByteCount cursor_pos) const
{
- auto real_prefix = prefix.substr(0, cursor_pos);
- CandidateList result;
- CandidateList subsequence_result;
- for (auto& client : m_clients)
- {
- const String& name = client->context().name();
-
- if (prefix_match(name, real_prefix))
- result.push_back(name);
- if (subsequence_match(name, real_prefix))
- subsequence_result.push_back(name);
- }
- return result.empty() ? subsequence_result : result;
+ auto c = transformed(m_clients, [](const std::unique_ptr<Client>& c){ return c->context().name(); });
+ return complete(prefix, cursor_pos, c, prefix_match, subsequence_match);
}
}