commit 9757b11aaf58cf49b96daa3abe31af2212badbe1
parent a9aedfbc5880b9ac25f7b0ac1dc49fa318dbe89b
Author: zeertzjq <zeertzjq@outlook.com>
Date: Fri, 30 Aug 2024 16:34:01 +0800
vim-patch:9.1.0631: wrong completion list displayed with non-existing dir + fuzzy completion
Problem: wrong completion list displayed with non-existing dir + fuzzy
completion (kawarimidoll)
Solution: clear list of matches, if leader did not use fuzzy match
(glepnir)
fixes: vim/vim#15357
closes: vim/vim#15365
https://github.com/vim/vim/commit/6b6280c4a270547f84f01c0e0d9be1b7d6bb9e20
Co-authored-by: glepnir <glephunter@gmail.com>
Diffstat:
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c
@@ -3339,6 +3339,7 @@ static void get_next_filename_completion(void)
// Move leader to the file part
leader = last_sep + 1;
+ leader_len -= path_len;
}
}
@@ -3392,13 +3393,18 @@ static void get_next_filename_completion(void)
FreeWild(num_matches, matches);
matches = sorted_matches;
num_matches = fuzzy_indices.ga_len;
+ } else if (leader_len > 0) {
+ FreeWild(num_matches, matches);
+ num_matches = 0;
}
xfree(compl_fuzzy_scores);
ga_clear(&fuzzy_indices);
}
- ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
+ if (num_matches > 0) {
+ ins_compl_add_matches(num_matches, matches, p_fic || p_wic);
+ }
}
/// Get the next set of command-line completions matching "compl_pattern".
diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua
@@ -6955,6 +6955,13 @@ describe('builtin popupmenu', function()
{2:-- }{5:match 2 of 3} |
]])
+ feed('<Esc>S/non_exit_folder<C-X><C-F>')
+ screen:expect([[
+ /non_exit_folder^ |
+ {1:~ }|*18
+ {2:-- }{6:Pattern not found} |
+ ]])
+
feed('<C-E><Esc>')
end)
diff --git a/test/old/testdir/test_popup.vim b/test/old/testdir/test_popup.vim
@@ -1513,6 +1513,11 @@ func Test_pum_highlights_match()
call TermWait(buf, 50)
call VerifyScreenDump(buf, 'Test_pum_highlights_11', {})
+ " issue #15357
+ call term_sendkeys(buf, "\<ESC>S/non_exit_folder\<C-X>\<C-F>")
+ call TermWait(buf, 50)
+ call VerifyScreenDump(buf, 'Test_pum_highlights_15', {})
+
call term_sendkeys(buf, "\<C-E>\<Esc>")
call TermWait(buf)