From 3e50a28a03d136c1e0c1f4fabe50d97faaf08c5c Mon Sep 17 00:00:00 2001 From: glepnir Date: Thu, 3 Apr 2025 21:17:06 +0200 Subject: [PATCH] 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: #17043 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/insexpand.c | 3 ++- src/testdir/test_ins_complete.vim | 2 ++ src/version.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/insexpand.c b/src/insexpand.c index de3d519823..9df0445392 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4831,7 +4831,8 @@ 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 : + return compl_first_match != compl_shown_match ? + (is_forward ? compl_shown_match->cp_next : compl_first_match) : (compl_first_match->cp_prev ? compl_first_match->cp_prev : NULL); if (is_forward) diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index f60aba8d7a..bc971b5da8 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -2834,6 +2834,8 @@ func Test_complete_opt_fuzzy() 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= diff --git a/src/version.c b/src/version.c index f77ff4794a..28c0248665 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1272, /**/ 1271, /**/ -- 2.47.2