0
0
mirror of https://github.com/vim/vim.git synced 2025-10-21 08:24:06 -04:00

patch 9.1.1747: completion: redo (.) broken with preinsert and autocompletion

Problem:  completion: redo (.) broken with preinsert and autocompletion
Solution: Make redo (.) work with preinsert and autocompletion
          (Girish Palya)

closes: #18253

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Girish Palya
2025-09-09 15:33:14 -04:00
committed by Christian Brabandt
parent 80981e1db9
commit 306a138172
3 changed files with 13 additions and 4 deletions

View File

@@ -154,9 +154,8 @@ static string_T compl_leader = {NULL, 0};
static int compl_get_longest = FALSE; // put longest common string static int compl_get_longest = FALSE; // put longest common string
// in compl_leader // in compl_leader
// This flag indicates that one of the items in the match list is currently // This flag is FALSE when no match is selected (by ^N/^P) or the match was
// selected. FALSE when no match is selected or the match was edited or using // edited or using the longest common string.
// the longest common string.
static int compl_used_match; static int compl_used_match;
// didn't finish finding completions. // didn't finish finding completions.
@@ -5960,7 +5959,8 @@ ins_compl_insert(int move_cursor, int preinsert_prefix)
curwin->w_cursor.col -= (colnr_T)(cp_str_len - leader_len); curwin->w_cursor.col -= (colnr_T)(cp_str_len - leader_len);
} }
} }
if (match_at_original_text(compl_shown_match) || preinsert) if (match_at_original_text(compl_shown_match)
|| (preinsert && !compl_autocomplete))
compl_used_match = FALSE; compl_used_match = FALSE;
else else
compl_used_match = TRUE; compl_used_match = TRUE;

View File

@@ -5634,6 +5634,13 @@ func Test_autocomplete_completeopt_preinsert()
" Should not work with fuzzy " Should not work with fuzzy
set cot+=fuzzy set cot+=fuzzy
call DoTest("f", 'f', 2) call DoTest("f", 'f', 2)
set cot-=fuzzy
" Verify that redo (dot) works
call setline(1, ["foobar", "foozbar", "foobaz", "changed", "change"])
call feedkeys($"/foo\<CR>", 'tx')
call feedkeys($"cwch\<C-N>\<Esc>n.n.", 'tx')
call assert_equal(repeat(['changed'], 3), getline(1, 3))
%delete _ %delete _
let &l:undolevels = &l:undolevels let &l:undolevels = &l:undolevels

View File

@@ -724,6 +724,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1747,
/**/ /**/
1746, 1746,
/**/ /**/