patch 9.0.2039: completion shows current word after completion restart
Problem: completion shows current word after completion restart
Solution: remove the word being completed after completion restart
The word being completed is shown in a completion list after completion
restart, because it isn't removed from the current buffer before
searching for matches.
Also adjust `Test_complete_add_onechar` to match the new behavior.
closes: #13349
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: nwounkn <nwounkn@gmail.com>
diff --git a/src/insexpand.c b/src/insexpand.c
index f225cd3..ad4edc1 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -4157,7 +4157,7 @@
ins_compl_update_shown_match();
if (allow_get_expansion && insert_match
- && (!(compl_get_longest || compl_restarting) || compl_used_match))
+ && (!compl_get_longest || compl_used_match))
// Delete old text to be replaced
ins_compl_delete();
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index c7f9e9b..a4ac26e 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -818,7 +818,7 @@
setlocal complete=.
call setline(1, ['workhorse', 'workload'])
normal Go
- exe "normal aWOR\<C-P>\<bs>\<bs>\<bs>\<bs>\<bs>\<bs>\<C-L>r\<C-L>\<C-L>"
+ exe "normal aWOR\<C-P>\<bs>\<bs>\<bs>\<bs>\<bs>\<bs>\<C-L>\<C-L>\<C-L>"
call assert_equal('workh', getline(3))
set ignorecase& backspace&
close!
@@ -2248,6 +2248,17 @@
return ''
endfunc
+func Test_completion_restart()
+ new
+ set complete=. completeopt=menuone backspace=2
+ call setline(1, 'workhorse workhorse')
+ exe "normal $a\<C-N>\<BS>\<BS>\<C-R>=GetCompleteInfo()\<CR>"
+ call assert_equal(1, len(g:compl_info['items']))
+ call assert_equal('workhorse', g:compl_info['items'][0]['word'])
+ set complete& completeopt& backspace&
+ bwipe!
+endfunc
+
func Test_complete_info_index()
new
call setline(1, ["aaa", "bbb", "ccc", "ddd", "eee", "fff"])
diff --git a/src/version.c b/src/version.c
index a0ac2d0..208d7a8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2039,
+/**/
2038,
/**/
2037,