-*insert.txt* For Vim version 9.1. Last change: 2025 Sep 11
+*insert.txt* For Vim version 9.1. Last change: 2025 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
<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 set, clears the selected item in the
+ menu.
Any non-special character:
Stop completion without changing the match and insert the
typed 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 set, 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:
return K_BS;
}
+ // 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.
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 test_override("char_avail", 0)
delfunc NonKeywordComplete