summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-09-24 01:54:55 +0200
committerMaxime Coste <frrrwww@gmail.com>2013-09-24 10:13:39 +0200
commit9018bc47dfe14ef45e7dced7a0bfec84b1be1a0f (patch)
tree15d0042af3a1a20da517f9ca692f3526253a6c32 /src
parentbab10f5b93abaf9f75a538f291576d4789c30926 (diff)
use subsequence instead of regex matching for buffer completion
Diffstat (limited to 'src')
-rw-r--r--src/buffer_manager.cc20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index c830d011..5f3fe1ec 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -100,28 +100,16 @@ CandidateList BufferManager::complete_buffername(const String& prefix,
{
String real_prefix = prefix.substr(0, cursor_pos);
CandidateList result;
+ CandidateList subsequence_result;
for (auto& buffer : m_buffers)
{
String name = buffer->display_name();
if (prefix_match(name, real_prefix))
result.push_back(escape(name));
+ if (subsequence_match(name, real_prefix))
+ subsequence_result.push_back(escape(name));
}
- // no prefix completion found, check regex matching
- if (result.empty())
- {
- try
- {
- Regex ex(real_prefix.begin(), real_prefix.end());
- for (auto& buffer : m_buffers)
- {
- String name = buffer->display_name();
- if (boost::regex_search(name.begin(), name.end(), ex))
- result.push_back(escape(name));
- }
- }
- catch (boost::regex_error& err) {}
- }
- return result;
+ return result.empty() ? subsequence_result : result;
}
}