vim-patch:8.2.1673: complete_info() selected index has an invalid value

Problem:    complete_info() selected index has an invalid value. (Ben Jackson)
Solution:   Set the index when there is only one match. (closes vim/vim#6945)
            Add test for complete_info().
b806aa5bd9
This commit is contained in:
Jan Edmund Lazo
2020-12-02 23:29:04 -05:00
parent c6b780bdd1
commit 6bc1844b11
2 changed files with 19 additions and 0 deletions

View File

@@ -5242,6 +5242,7 @@ static int ins_complete(int c, bool enable_pum)
} else if (compl_curr_match->cp_next == compl_curr_match->cp_prev) {
edit_submode_extra = (char_u *)_("The only match");
edit_submode_highl = HLF_COUNT;
compl_curr_match->cp_number = 0;
} else {
// Update completion sequence number when needed.
if (compl_curr_match->cp_number == -1) {

View File

@@ -312,6 +312,24 @@ func Test_completefunc_args()
delfunc CompleteFunc
endfunc
func CompleteTest(findstart, query)
if a:findstart
return col('.')
endif
return ['matched']
endfunc
func Test_completefunc_info()
new
set completeopt=menuone
set completefunc=CompleteTest
call feedkeys("i\<C-X>\<C-U>\<C-R>\<C-R>=string(complete_info())\<CR>\<ESC>", "tx")
call assert_equal("matched{'pum_visible': 1, 'mode': 'function', 'selected': -1, 'items': [{'word': 'matched', 'menu': '', 'user_data': '', 'info': '', 'kind': '', 'abbr': ''}]}", getline(1))
bwipe!
set completeopt&
set completefunc&
endfunc
" Check that when using feedkeys() typeahead does not interrupt searching for
" completions.
func Test_compl_feedkeys()