diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 21:43:55 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-04-07 23:47:50 +0100 |
| commit | ca549092462566a03ddc8b45ae05d55e702a038e (patch) | |
| tree | b87bfdea8533655d30d33ea0d6cbaf9fbcb439c6 /src/client_manager.cc | |
| parent | a9b3a8b0d6b11d96773cb579d46e3ade1d5200e3 (diff) | |
Add ClientManager::complete_client_name
Diffstat (limited to 'src/client_manager.cc')
| -rw-r--r-- | src/client_manager.cc | 18 |
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; +} + } |
