| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2025-04-02 | Reduce include creep | Maxime Coste | |
| 2025-04-02 | Tweak ranked match behaviour to consider the number of full words | Maxime Coste | |
| Tracking the number of query words that appear as full words in the candidate seems to fix a few cases where the existing fuzzy matching algorithm was not great. I have been running with this for a while and did not notice any annoyances, the whole RankedMatch code probably deserves more attention but this seems to go in the right direction. | |||
| 2024-08-12 | Reduce headers dependency graph | Maxime Coste | |
| Move more code into the implementation files to reduce the amount of code pulled by headers. | |||
| 2024-02-12 | Use unicode is_word/to_{lower/upper} function in ranked match | Maxime Coste | |
| 2023-12-12 | Merge remote-tracking branch 'krobelus/prefer-input-order-over-alphabet' | Maxime Coste | |
| 2023-12-04 | Fix basename prefix flag to use smartcase eq | Maxime Coste | |
| 2023-12-02 | ranked match: prefer input order over alphabetical order for user-specified ↵ | Johannes Altmanninger | |
| completions When using either of set-option g completers option=my_option prompt -shell-script-candidates ... While the search text is empty, the completions will be sorted alphabetically. This is bad because it means the most important entries are not listed first, making them harder to select or even spot. Let's apply input order before resorting to sorting alphabetically. In theory there is a more elegant solution: sort candidates (except if they're user input) before passing them to RankedMatch, and then always use stable sort. However that doesn't work because we use a heap which doesn't support stable sort. Closes #1709, #4813 | |||
| 2023-12-02 | Fix single word detection when query is not single word | Maxime Coste | |
| 2023-11-23 | Only set Prefix in RankedMatch if the full query matches | Maxime Coste | |
| 2023-11-16 | Drop last character for basename matching | Maxime Coste | |
| If the candidate ends with a slash we still look at the previous component as the basename. | |||
| 2023-11-15 | Slight cleanup of RankedMatch code | Maxime Coste | |
| 2023-11-15 | Refactor fuzzy matcher ranking further | Maxime Coste | |
| Remove FirstCharMatch which does not impact any of the test cases and explicitely detect paths by using a BaseName flag when we match the basename of the path. | |||
| 2023-11-11 | Fix SingleWord handling in RankedMatch | Maxime Coste | |
| subsequence_match_smart_case does not necessarily find the word, but we then check for a contiguous match in which case, if the query is a word, we also have a single word match. | |||
| 2022-11-19 | Accept "cd dir/" again instead of using a subdirectory | Johannes Altmanninger | |
| 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 | |||
| 2021-12-14 | Bug fix: use only iswlower() in RankedMatch::is_word_boundary() | Sidharth Kshatriya | |
| 2019-09-07 | Rank a word-boundary after a non-word-boundary | Jean-Louis Fuchs | |
| 2018-03-15 | RankedMatch: Do not compare word boundary match count on single word matches | Maxime Coste | |
| As the computation of word boundary matches is separate from the actual subsequence matching, we sometimes have candidate that match as a single word while still having multiple word boundary matches. For example, with query "expresins", candidate "expressionism's" will match as single word ("expressins" is a subsequence of "expressionism"), and will have two word boundaries match (it does match the last "s", which is considered as a separate word). This should not be taken into account when compared against candidate "expresions", which should be considered a better match. Fixes #1925 | |||
| 2017-12-06 | RankedMatch: Make punctuation ordered *before* alphanumeric characters | Maxime Coste | |
| 2017-10-10 | Move all non-core string code to string_utils.{hh,cc} | Maxime Coste | |
| 2017-07-19 | Make non smart case full match better than smart case full match | Maxime Coste | |
| 2017-07-19 | Use smart case matching for contiguous/prefix/fullmatch detection | Maxime Coste | |
| Fixes #1498 | |||
| 2017-06-04 | Change RankedMatch ordering to favor `/` characters | Maxime Coste | |
| This will improve matching of filenames, as 'foo/' will be sorted before 'foo-bar' due to `/` coming before `-` in the new ordering (it comes after in ascii/unicode order). Fixes #1395 | |||
| 2017-03-15 | Migrate WithBitOps template specialization to with_bit_ops function | Maxime Coste | |
| This way we dont depend on knowing the base template to enable bit ops on an enum type. | |||
| 2017-01-31 | Tweak ranked match ordering | Maxime Coste | |
| 2017-01-30 | Warning fix in ranked_match.cc | Maxime Coste | |
| 2017-01-29 | Fix infinite loop when comparing RankedMatches containing invalid utf8 | Maxime Coste | |
| If we had a word containing some invalid utf8, like a wrong sequence of continuation bytes, we would infinitely loop back to the previous valid character start. Fixes #1157 | |||
| 2017-01-29 | Use iswlower instead of islower | Maxime Coste | |
| islower can crash with big codepoints, and is incorrect anyway. | |||
| 2016-11-28 | Cleanup include dependencies a bit | Maxime Coste | |
| 2016-11-22 | Fix literal type that must be 64 bits | Maxime Coste | |
| 2016-11-14 | Tweak RankedMatch behaviour and fix bug in its comparison function | Maxime Coste | |
| casting TestableFlag<T> to UnderlyingType<T> was going through bool conversion... Not sure how things worked earlier. | |||
| 2016-09-30 | Tweak ranked match comparison, give contiguous matches an edge | Maxime Coste | |
| 2016-09-26 | Tweak RankedMatch logic, prioritize matches that are in a single word | Maxime Coste | |
| 2016-08-30 | Only decode utf8 when strictly necessary in RankedMatch::operator< | Maxime Coste | |
| 2016-08-30 | Tweak RankedMatch, compare max match index instead of match indices sum | Maxime Coste | |
| 2016-08-29 | Use flags and bit operations instead of bools in RankedMatch | Maxime Coste | |
| full match is now the most important flag for comparison. | |||
| 2016-05-20 | Fix RankedMatch ordering where 'a < a' was true | Maxime Coste | |
| Fixes #679 | |||
| 2016-05-19 | Go back to libc locale and use c_regex_traits | Maxime Coste | |
| Unfortunately, cygwin does not support c++ locales. | |||
| 2016-05-17 | Fix RankedMatch::operator< with matching prefix candidates | Maxime Coste | |
| 2016-05-11 | Use C++ locale based functions instead of the libc ones | Maxime Coste | |
| 2016-04-04 | Tweak RankedMatch behaviour | Maxime Coste | |
| 2016-04-04 | Give priority to lower case in RankedMatch | Maxime Coste | |
| 2016-03-28 | Tweak subsequence_match_smart_case | Maxime Coste | |
| 2016-03-28 | Use manual lexicographic comparison in RankedMatch::operator< | Maxime Coste | |
| 2016-03-25 | Move UsedLetters with RankedMatch | Maxime Coste | |
| 2016-03-24 | Tweak implementation of subsequence_match_smart_case | Maxime Coste | |
| Remove use of utf8 iterators and use directly utf8 functions | |||
| 2016-03-24 | Fix uninitialized value in RankedMatch | Maxime Coste | |
| 2016-03-02 | Tweak RankedMatch ordering, give priority to prefix matches | Maxime Coste | |
| 2016-02-28 | Take subsequence matches index when sorting RankedMatch | Maxime Coste | |
| 2016-02-22 | Tweak RankedMatch::operator< | Maxime Coste | |
| 2016-02-17 | Fix count_word_boundaries_match | Maxime Coste | |
