aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2025-04-04 13:51:38 +0800
committerglepnir <glephunter@gmail.com>2025-04-04 13:52:04 +0800
commitb01921cb55d795cf650c1026c514cb4179a6cada (patch)
treee75436498d497ed15482a24d859b610a6d4fd78b
parent8cf413e450bfbe1a9887f2bbf869bf9462403a77 (diff)
downloadrneovim-b01921cb55d795cf650c1026c514cb4179a6cada.tar.gz
rneovim-b01921cb55d795cf650c1026c514cb4179a6cada.tar.bz2
rneovim-b01921cb55d795cf650c1026c514cb4179a6cada.zip
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 <glephunter@gmail.com>
-rw-r--r--src/nvim/insexpand.c2
-rw-r--r--test/old/testdir/test_ins_complete.vim2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c
index 9049b1f298..ce82b7f410 100644
--- a/src/nvim/insexpand.c
+++ b/src/nvim/insexpand.c
@@ -4243,7 +4243,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 187d0acc00..5dd29bcc0a 100644
--- a/test/old/testdir/test_ins_complete.vim
+++ b/test/old/testdir/test_ins_complete.vim
@@ -2866,6 +2866,8 @@ func Test_complete_opt_fuzzy()
call assert_equal('bar', getline('.'))
call feedkeys("Sb\<C-X>\<C-N>\<C-Y>\<ESC>", 'tx')
call assert_equal('blue', getline('.'))
+ call feedkeys("Sb\<C-X>\<C-P>\<C-N>\<C-Y>\<ESC>", 'tx')
+ call assert_equal('b', getline('.'))
" clean up
set omnifunc=