summaryrefslogtreecommitdiff
path: root/src/client_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-04-07 21:43:55 +0100
committerMaxime Coste <frrrwww@gmail.com>2014-04-07 23:47:50 +0100
commitca549092462566a03ddc8b45ae05d55e702a038e (patch)
treeb87bfdea8533655d30d33ea0d6cbaf9fbcb439c6 /src/client_manager.cc
parenta9b3a8b0d6b11d96773cb579d46e3ade1d5200e3 (diff)
Add ClientManager::complete_client_name
Diffstat (limited to 'src/client_manager.cc')
-rw-r--r--src/client_manager.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc
index 91cc6406..f818e226 100644
--- a/src/client_manager.cc
+++ b/src/client_manager.cc
@@ -166,4 +166,22 @@ void ClientManager::redraw_clients() const
client->redraw_ifn();
}
+CandidateList ClientManager::complete_client_name(const String& prefix,
+ ByteCount cursor_pos) const
+{
+ String 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(escape(name));
+ if (subsequence_match(name, real_prefix))
+ subsequence_result.push_back(escape(name));
+ }
+ return result.empty() ? subsequence_result : result;
+}
+
}