aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/insexpand.c3
-rw-r--r--test/old/testdir/test_ins_complete.vim5
2 files changed, 5 insertions, 3 deletions
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\<C-X>\<C-P>\<F5>\<Esc>_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\<C-X>\<C-N>\<C-P>\<F5>\<Esc>_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\<C-X>\<C-N>\<C-N>\<C-N>\<C-N>\<C-N>\<C-N>\<C-N>\<C-N>\<C-N>\<F5>\<Esc>_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\<C-X>\<C-N>\<F5>\<Esc>_dd", 'tx')
+ call assert_equal(-1, g:compl_info['selected'])
+ call assert_equal(6 , len(g:compl_info['items']))
set completeopt&
bwipe!