changeset 22248:80a000b09cb0 v8.2.1673

patch 8.2.1673: complete_info() selected index has an invalid value Commit: https://github.com/vim/vim/commit/b806aa5bd910dba94fbde586f6019b4825813d28 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 12 22:52:57 2020 +0200 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 https://github.com/vim/vim/issues/6945) Add test for complete_info().
author Bram Moolenaar <Bram@vim.org>
date Sat, 12 Sep 2020 23:00:03 +0200
parents 0201b99c7364
children ef6c936e63fb
files src/insexpand.c src/testdir/test_ins_complete.vim src/version.c
diffstat 3 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -4009,6 +4009,7 @@ ins_complete(int c, int enable_pum)
 	{
 	    edit_submode_extra = (char_u *)_("The only match");
 	    edit_submode_highl = HLF_COUNT;
+	    compl_curr_match->cp_number = 0;
 	}
 	else
 	{
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -313,6 +313,24 @@ func Test_CompleteDone_undo()
   au! CompleteDone
 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()
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1673,
+/**/
     1672,
 /**/
     1671,