summaryrefslogtreecommitdiff
path: root/src/buffer_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/buffer_manager.cc
parent064fb81b8d38df3bc77e2211fb6bc5db84fedb97 (diff)
Unify completion from container content logic
Diffstat (limited to 'src/buffer_manager.cc')
-rw-r--r--src/buffer_manager.cc23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index 400c9f5b..943a2085 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -3,6 +3,7 @@
#include "assert.hh"
#include "buffer.hh"
#include "client_manager.hh"
+#include "containers.hh"
#include "exception.hh"
#include "file.hh"
#include "string.hh"
@@ -117,27 +118,19 @@ void BufferManager::backup_modified_buffers()
CandidateList BufferManager::complete_buffer_name(StringView prefix,
ByteCount cursor_pos)
{
- auto real_prefix = prefix.substr(0, cursor_pos);
- const bool include_dirs = contains(real_prefix, '/');
- CandidateList result;
- CandidateList subsequence_result;
- for (auto& buffer : m_buffers)
- {
+ const bool include_dirs = contains(prefix.substr(0, cursor_pos), '/');
+ auto c = transformed(m_buffers,
+ [include_dirs](const safe_ptr<Buffer>& buffer) -> String {
String name = buffer->display_name();
- StringView match_name = name;
if (not include_dirs and buffer->flags() & Buffer::Flags::File)
{
ByteCount pos = name.find_last_of('/');
if (pos != (int)String::npos)
- match_name = name.substr(pos+1);
+ return name.substr(pos+1);
}
-
- if (prefix_match(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;
+ return name;
+ });
+ return complete(prefix, cursor_pos, c, prefix_match, subsequence_match);
}
void BufferManager::clear_buffer_trash()