mirror of
https://github.com/neovim/neovim.git
synced 2026-03-06 17:17:21 +00:00
Merge pull request #35799 from zeertzjq/vim-9.1.1762
vim-patch:9.1.1762,10d1ec6
This commit is contained in:
@@ -1368,6 +1368,8 @@ In the first state these keys have a special meaning:
|
||||
<BS> and CTRL-H Delete one character, find the matches for the word before
|
||||
the cursor. This reduces the list of matches, often to one
|
||||
entry, and switches to the second state.
|
||||
When 'autocomplete' is active, clears the selected item in
|
||||
the menu.
|
||||
Any non-special character:
|
||||
Stop completion without changing the match and insert the
|
||||
typed character.
|
||||
@@ -1375,6 +1377,8 @@ Any non-special character:
|
||||
In the second and third state these keys have a special meaning:
|
||||
<BS> and CTRL-H Delete one character, find the matches for the shorter word
|
||||
before the cursor. This may find more matches.
|
||||
When 'autocomplete' is active, clears the selected item in
|
||||
the menu.
|
||||
CTRL-L Add one character from the current match, may reduce the
|
||||
number of matches.
|
||||
any printable, non-white character:
|
||||
|
||||
@@ -2197,6 +2197,11 @@ int ins_compl_bs(void)
|
||||
compl_leader = cbuf_to_string(line + compl_col,
|
||||
(size_t)(p_off - (ptrdiff_t)compl_col));
|
||||
|
||||
// Clear selection if a menu item is currently selected in autocompletion
|
||||
if (compl_autocomplete && compl_first_match) {
|
||||
compl_shown_match = compl_first_match;
|
||||
}
|
||||
|
||||
ins_compl_new_leader();
|
||||
if (compl_shown_match != NULL) {
|
||||
// Make sure current match is not a hidden item.
|
||||
|
||||
@@ -5359,6 +5359,21 @@ func Test_autocomplete_trigger()
|
||||
call feedkeys("Sazx\<Left>\<BS>\<F2>\<Esc>0", 'tx!')
|
||||
call assert_equal(['and', 'afoo'], b:matches->mapnew('v:val.word'))
|
||||
|
||||
" Test 6: <BS> should clear the selected item
|
||||
%d
|
||||
call setline(1, ["foobarfoo", "foobar", "foobarbaz"])
|
||||
call feedkeys("Gofo\<C-N>\<C-N>\<F2>\<F3>\<Esc>0", 'tx!')
|
||||
call assert_equal(['foobarbaz', 'foobar', 'foobarfoo'], b:matches->mapnew('v:val.word'))
|
||||
call assert_equal(1, b:selected)
|
||||
call feedkeys("Sfo\<C-N>\<C-N>\<BS>\<F2>\<F3>\<Esc>0", 'tx!')
|
||||
call assert_equal(['foobarbaz', 'foobar', 'foobarfoo'], b:matches->mapnew('v:val.word'))
|
||||
call assert_equal(-1, b:selected)
|
||||
call assert_equal('fooba', getline(4))
|
||||
call feedkeys("Sfo\<C-N>\<C-N>\<BS>\<C-N>\<F2>\<F3>\<Esc>0", 'tx!')
|
||||
call assert_equal(['foobarbaz', 'foobar', 'foobarfoo'], b:matches->mapnew('v:val.word'))
|
||||
call assert_equal(0, b:selected)
|
||||
call assert_equal('foobarbaz', getline(4))
|
||||
|
||||
bw!
|
||||
call Ntest_override("char_avail", 0)
|
||||
delfunc NonKeywordComplete
|
||||
|
||||
Reference in New Issue
Block a user