Mercurial > vim
changeset 36070:7e690bd1a27d v9.1.0705
patch 9.1.0705: Sorting of fuzzy filename completion is not stable
Commit: https://github.com/vim/vim/commit/58d705238c0794ee3baa4173831ab157e709a48a
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sat Aug 31 17:05:39 2024 +0200
patch 9.1.0705: Sorting of fuzzy filename completion is not stable
Problem: Sorting of fuzzy filename completion is not stable
Solution: Compare indexes when scores are equal. Fix some typos.
(zeertzjq)
closes: #15593
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 31 Aug 2024 17:15:04 +0200 |
parents | b1b2ad720519 |
children | 792cc316a25d |
files | src/insexpand.c src/search.c src/testdir/dumps/Test_pum_highlights_15.dump src/testdir/test_popup.vim src/version.c |
diffstat | 5 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/insexpand.c +++ b/src/insexpand.c @@ -3546,7 +3546,8 @@ static int compare_scores(const void *a, int idx_b = *(const int *)b; int score_a = compl_fuzzy_scores[idx_a]; int score_b = compl_fuzzy_scores[idx_b]; - return (score_a > score_b) ? -1 : (score_a < score_b) ? 1 : 0; + return score_a == score_b ? (idx_a == idx_b ? 0 : (idx_a < idx_b ? -1 : 1)) + : (score_a > score_b ? -1 : 1); } /*
--- a/src/search.c +++ b/src/search.c @@ -5217,7 +5217,7 @@ search_for_fuzzy_match( { pos_T current_pos = *pos; pos_T circly_end; - int found_new_match = FAIL; + int found_new_match = FALSE; int looped_around = FALSE; if (whole_line)
--- a/src/testdir/dumps/Test_pum_highlights_15.dump +++ b/src/testdir/dumps/Test_pum_highlights_15.dump @@ -1,4 +1,4 @@ -|/+0&#ffffff0|n|o|n|_|e|x|i|t|_|f|o|l|d|e|r> @58 +|/+0&#ffffff0|n|o|n|_|e|x|i|s|t|i|n|g|_|f|o|l|d|e|r> @54 |~+0#4040ff13&| @73 |~| @73 |~| @73
--- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -1494,7 +1494,7 @@ func Test_pum_highlights_match() call VerifyScreenDump(buf, 'Test_pum_highlights_11', {}) " issue #15357 - call term_sendkeys(buf, "\<ESC>S/non_exit_folder\<C-X>\<C-F>") + call term_sendkeys(buf, "\<ESC>S/non_existing_folder\<C-X>\<C-F>") call TermWait(buf, 50) call VerifyScreenDump(buf, 'Test_pum_highlights_15', {})