From e3506ede278222a07938bd3523720c8da3da1053 Mon Sep 17 00:00:00 2001 From: glepnir Date: Fri, 4 Apr 2025 13:51:38 +0800 Subject: [PATCH] vim-patch:9.1.1272: completion: in keyword completion Ctrl_P cannot go back after Ctrl_N Problem: completion: in keyword completion Ctrl_P cannot go back after Ctrl_N Solution: in find_compl_when_fuzzy() always return first match of array, after Ctrl_P use compl_shown_match->cp_next instead of compl_first_match. (glepnir) closes: vim/vim#17043 https://github.com/vim/vim/commit/3e50a28a03d136c1e0c1f4fabe50d97faaf08c5c Co-authored-by: glepnir (cherry picked from commit b01921cb55d795cf650c1026c514cb4179a6cada) --- src/nvim/insexpand.c | 2 +- test/old/testdir/test_ins_complete.vim | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index 6e57c0bf66..1b245e23be 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -3944,7 +3944,7 @@ static compl_T *find_comp_when_fuzzy(void) if ((is_forward && compl_selected_item == compl_match_arraysize - 1) || (is_backward && compl_selected_item == 0)) { return compl_first_match != compl_shown_match - ? compl_first_match + ? (is_forward ? compl_shown_match->cp_next : compl_first_match) : (compl_first_match->cp_prev ? compl_first_match->cp_prev : NULL); } diff --git a/test/old/testdir/test_ins_complete.vim b/test/old/testdir/test_ins_complete.vim index b37eca4ac6..526ac9f7f4 100644 --- a/test/old/testdir/test_ins_complete.vim +++ b/test/old/testdir/test_ins_complete.vim @@ -2886,6 +2886,8 @@ func Test_complete_fuzzy_match() call assert_equal('bar', getline('.')) call feedkeys("Sb\\\\", 'tx') call assert_equal('blue', getline('.')) + call feedkeys("Sb\\\\\", 'tx') + call assert_equal('b', getline('.')) " clean up set omnifunc=