diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index 09575c64d9..fa08064eb5 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -2735,7 +2735,8 @@ static int info_add_completion_info(list_T *li) // Skip the element with the CP_ORIGINAL_TEXT flag at the beginning, in case of // forward completion, or at the end, in case of backward completion. match = forward ? match->cp_next - : (compl_no_select ? match->cp_prev : match->cp_prev->cp_prev); + : (compl_no_select && match_at_original_text(match) + ? match->cp_prev : match->cp_prev->cp_prev); while (match != NULL && !match_at_original_text(match)) { dict_T *di = tv_dict_alloc(); diff --git a/test/old/testdir/test_ins_complete.vim b/test/old/testdir/test_ins_complete.vim index fdbaa5ab95..e1c8b82908 100644 --- a/test/old/testdir/test_ins_complete.vim +++ b/test/old/testdir/test_ins_complete.vim @@ -2392,8 +2392,6 @@ func Test_complete_info_index() call feedkeys("Go\\\\_dd", 'tx') call assert_equal(-1, g:compl_info['selected']) - " Check if index out of range - " https://github.com/vim/vim/pull/12971 call feedkeys("Go\\\\\_dd", 'tx') call assert_equal(0, g:compl_info['selected']) call assert_equal(6 , len(g:compl_info['items'])) @@ -2401,6 +2399,9 @@ func Test_complete_info_index() call feedkeys("Go\\\\\\\\\\\\_dd", 'tx') call assert_equal("aaa", g:compl_info['items'][g:compl_info['selected']]['word']) call assert_equal(6 , len(g:compl_info['items'])) + call feedkeys("Go\\\\_dd", 'tx') + call assert_equal(-1, g:compl_info['selected']) + call assert_equal(6 , len(g:compl_info['items'])) set completeopt& bwipe!