summaryrefslogtreecommitdiff
path: root/src/ranked_match.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2023-11-23 17:15:20 +1100
committerMaxime Coste <mawww@kakoune.org>2023-11-23 17:16:24 +1100
commit990e92a5f320953bab12ba2c0419d382cd68102e (patch)
treea7d31b3e701d9db251a7bfa48938d4a505a1d0dd /src/ranked_match.cc
parentcad2f6fb664a1605f349f1de355c62a984dfeb4e (diff)
Only set Prefix in RankedMatch if the full query matches
Diffstat (limited to 'src/ranked_match.cc')
-rw-r--r--src/ranked_match.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ranked_match.cc b/src/ranked_match.cc
index a0eedda4..d258b680 100644
--- a/src/ranked_match.cc
+++ b/src/ranked_match.cc
@@ -140,7 +140,8 @@ RankedMatch::RankedMatch(StringView candidate, StringView query, TestFunc func)
it == candidate.begin() or subsequence_match_smart_case({it, candidate.end()}, query))
{
m_flags |= Flags::BaseName;
- if (*it == query[0])
+ if ((candidate.end() - it) >= query.length() and
+ std::equal(query.begin(), query.end(), it))
m_flags |= Flags::Prefix;
}
@@ -277,6 +278,7 @@ UnitTest test_ranked_match{[] {
kak_assert(preferred("foo_b", "bar/bar_qux/foo_bar.baz", "foo/test_foo_bar.baz"));
kak_assert(preferred("foo_bar", "bar/foo_bar.baz", "foo_bar/qux.baz"));
kak_assert(preferred("fb", "foo_bar/", "foo.bar"));
+ kak_assert(preferred("foo_bar", "test_foo_bar", "foo_test_bar"));
}};
UnitTest test_used_letters{[]()