diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-10-17 17:49:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-17 17:49:22 +0800 |
commit | c9963e2212bda7a4d2186469ad07078d348353cf (patch) | |
tree | 6f321c74d973eb55e253bfe06c07b46babff246b | |
parent | 35f475d0a51aad03abfc005a0224d315c45ffd67 (diff) | |
download | rneovim-c9963e2212bda7a4d2186469ad07078d348353cf.tar.gz rneovim-c9963e2212bda7a4d2186469ad07078d348353cf.tar.bz2 rneovim-c9963e2212bda7a4d2186469ad07078d348353cf.zip |
vim-patch:9.0.2039: completion shows current word after completion restart (#25682)
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: vim/vim#13349
https://github.com/vim/vim/commit/2e3cd52fa02b1a208c97992b1bca3b04f7be66d4
Co-authored-by: nwounkn <nwounkn@gmail.com>
-rw-r--r-- | src/nvim/insexpand.c | 2 | ||||
-rw-r--r-- | test/old/testdir/test_ins_complete.vim | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index 6f99708e1d..09860a6a40 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -3635,7 +3635,7 @@ static int ins_compl_next(bool allow_get_expansion, int count, bool insert_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/test/old/testdir/test_ins_complete.vim b/test/old/testdir/test_ins_complete.vim index aeceeea9f1..ec5fd186b1 100644 --- a/test/old/testdir/test_ins_complete.vim +++ b/test/old/testdir/test_ins_complete.vim @@ -864,7 +864,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! @@ -2280,6 +2280,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"]) |