patch 9.1.1618: completion: incorrect selected index returned from complete_info()
Commit: https://github.com/vim/vim/commit/8e2a2291892935f28645cbe550ef2856bab1ee4e Author: Robert Muir <rm...@apache.org> Date: Sun Aug 10 09:19:36 2025 +0200 patch 9.1.1618: completion: incorrect selected index returned from complete_info() Problem: completion: incorrect selected index returned from complete_info() Solution: Return the index into "items" and restore the previous behaviour (Robert Muir). complete_info() returned an incorrect selected index after 0ac1eb3555445f4c458c06cef7c411de1c8d1020 (Patch v9.1.1311). Effectively it became an index into "matches" instead of "items". Return the index into "items" by default to restore the previous behavior, unless "matches" was requested. closes: #17952 Co-authored-by: Hirohito Higashi <h.east....@gmail.com> Signed-off-by: Robert Muir <rm...@apache.org> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/insexpand.c b/src/insexpand.c index 3a775422d..991c9d23d 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4184,8 +4184,8 @@ get_complete_info(list_T *what_list, dict_T *retdict) if (compl_curr_match != NULL && compl_curr_match->cp_number == match->cp_number) selected_idx = list_idx; - if (match->cp_in_match_array) - list_idx += 1; + if (!has_matches || match->cp_in_match_array) + list_idx++; } match = match->cp_next; } diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 1ec71118c..6964a537e 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -3520,7 +3520,7 @@ func Test_complete_opt_fuzzy() set cot+=noinsert call feedkeys("i\<C-R>=CompAnother()\<CR>f", 'tx') call assert_equal("for", g:abbr) - call assert_equal(0, g:selected) + call assert_equal(2, g:selected) set cot=menu,menuone,noselect,fuzzy call feedkeys("i\<C-R>=CompAnother()\<CR>\<C-N>\<C-N>\<C-N>\<C-N>", 'tx') @@ -3904,6 +3904,27 @@ func Test_complete_info_completed() set cot& endfunc +func Test_complete_info_selected() + set completeopt=menuone,noselect + new + call setline(1, ["ward", "werd", "wurd", "wxrd"]) + + exe "normal! Gow\<c-n>u\<c-n>\<c-r>=complete_info().selected\<cr>" + call assert_equal('wurd2', getline(5)) + + exe "normal! Sw\<c-n>u\<c-n>\<c-r>=complete_info(['selected']).selected\<cr>" + call assert_equal('wurd2', getline(5)) + + exe "normal! Sw\<c-n>u\<c-n>\<c-r>=complete_info(['items', 'selected']).selected\<cr>" + call assert_equal('wurd2', getline(5)) + + exe "normal! Sw\<c-n>u\<c-n>\<c-r>=complete_info(['matches', 'selected']).selected\<cr>" + call assert_equal('wurd0', getline(5)) + + bw! + set cot& +endfunc + func Test_completeopt_preinsert() func Omni_test(findstart, base) if a:findstart @@ -3924,7 +3945,7 @@ func Test_completeopt_preinsert() call assert_equal("fobar", g:line) call assert_equal(2, g:col) - call feedkeys("S\<C-X>\<C-O>foo\<F5><ESC>", 'tx') + call feedkeys("S\<C-X>\<C-O>foo\<F5>\<ESC>", 'tx') call assert_equal("foobar", g:line) call feedkeys("S\<C-X>\<C-O>foo\<BS>\<BS>\<BS>", 'tx') @@ -5067,7 +5088,7 @@ func Test_autocomplete_trigger() new inoremap <buffer> <F2> <Cmd>let b:matches = complete_info(["matches"]).matches<CR> - inoremap <buffer> <F3> <Cmd>let b:selected = complete_info(["selected"]).selected<CR> + inoremap <buffer> <F3> <Cmd>let b:selected = complete_info(["matches", "selected"]).selected<CR> call setline(1, ['abc', 'abcd', 'fo', 'b', '']) set autocomplete diff --git a/src/version.c b/src/version.c index ca657305d..e61d4fc81 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1618, /**/ 1617, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1ul0VK-0060MI-9Z%40256bit.org.