summaryrefslogtreecommitdiff
path: root/src/ranked_match.hh
diff options
context:
space:
mode:
authorJohannes Altmanninger <aclopte@gmail.com>2022-11-12 12:37:35 +0100
committerJohannes Altmanninger <aclopte@gmail.com>2022-11-19 15:20:31 +0100
commit59b8b99577ce38bc2b3cad330c1108eeb4faa447 (patch)
tree090fc69c9bdae6823a3049379e6dc315d0927375 /src/ranked_match.hh
parent91d45a100a39345f06d9789ded9172fe60887c27 (diff)
Accept "cd dir/" again instead of using a subdirectory
Commit 69053d962 (Use menu behavior when completing change-directory, 2022-07-19) made ":cd dir/" actually run ":cd dir/first-subdir", which can be surprising. This is usually irrelevant because you rarely type the trailing slash. However it does happen after correcting an error with `<backspace>` and friends. For for example, :cd d<tab>/f<backspace> results in :cd dir/ We should probably fix user expectations here. Do this by adding "dir/" as valid completion. This requires us to allow empty candidates in "RankedMatch" but there's no harm in that. This means we need to filter out empty completions from shell-script-candidates elsewhere. Alternative fix: we could revert 69053d962. This would remove the convenient menu behavior but that wouldn't be a huge deal. Fixes #4775
Diffstat (limited to 'src/ranked_match.hh')
-rw-r--r--src/ranked_match.hh3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/ranked_match.hh b/src/ranked_match.hh
index 379b855d..ec7fe626 100644
--- a/src/ranked_match.hh
+++ b/src/ranked_match.hh
@@ -27,7 +27,7 @@ struct RankedMatch
bool operator<(const RankedMatch& other) const;
bool operator==(const RankedMatch& other) const { return m_candidate == other.m_candidate; }
- explicit operator bool() const { return not m_candidate.empty(); }
+ explicit operator bool() const { return m_matches; }
private:
template<typename TestFunc>
@@ -48,6 +48,7 @@ private:
friend constexpr bool with_bit_ops(Meta::Type<Flags>) { return true; }
StringView m_candidate{};
+ bool m_matches = false;
Flags m_flags = Flags::None;
int m_word_boundary_match_count = 0;
int m_max_index = 0;