Mercurial > vim
changeset 33589:efe4751b93b1 v9.0.2039
patch 9.0.2039: completion shows current word after completion restart
Commit: https://github.com/vim/vim/commit/2e3cd52fa02b1a208c97992b1bca3b04f7be66d4
Author: nwounkn <nwounkn@gmail.com>
Date: Tue Oct 17 11:05:38 2023 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 17 Oct 2023 11:15:08 +0200 |
parents | 56b56b8ed207 |
children | d7220eebaf1a |
files | src/insexpand.c src/testdir/test_ins_complete.vim src/version.c |
diffstat | 3 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/insexpand.c +++ b/src/insexpand.c @@ -4157,7 +4157,7 @@ ins_compl_next( 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();
--- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -818,7 +818,7 @@ func Test_complete_add_onechar() 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 @@ func GetCompleteInfo() 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"])