mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 9.1.1059: completion: input text deleted with preinsert when adding leader
Problem: completion: input text deleted with preinsert when adding leader Solution: remove compl_length and check the ptr for being equal to pattern when preinsert is active (glepnir) closes: #16545 Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
fe0a9a3269
commit
bfb4eea786
@@ -4094,7 +4094,7 @@ get_next_default_completion(ins_compl_next_state_T *st, pos_T *start_pos)
|
|||||||
if (!in_fuzzy)
|
if (!in_fuzzy)
|
||||||
ptr = ins_compl_get_next_word_or_line(st->ins_buf, st->cur_match_pos,
|
ptr = ins_compl_get_next_word_or_line(st->ins_buf, st->cur_match_pos,
|
||||||
&len, &cont_s_ipos);
|
&len, &cont_s_ipos);
|
||||||
if (ptr == NULL)
|
if (ptr == NULL || (ins_compl_has_preinsert() && STRCMP(ptr, compl_pattern.string) == 0))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (ins_compl_add_infercase(ptr, len, p_ic,
|
if (ins_compl_add_infercase(ptr, len, p_ic,
|
||||||
@@ -4342,7 +4342,7 @@ ins_compl_delete(void)
|
|||||||
int has_preinsert = ins_compl_preinsert_effect();
|
int has_preinsert = ins_compl_preinsert_effect();
|
||||||
if (has_preinsert)
|
if (has_preinsert)
|
||||||
{
|
{
|
||||||
col = compl_col + ins_compl_leader_len() - compl_length;
|
col += ins_compl_leader_len();
|
||||||
curwin->w_cursor.col = compl_ins_end_col;
|
curwin->w_cursor.col = compl_ins_end_col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3112,6 +3112,10 @@ function Test_completeopt_preinsert()
|
|||||||
call assert_equal("hello hero", getline('.'))
|
call assert_equal("hello hero", getline('.'))
|
||||||
call assert_equal(2, col('.'))
|
call assert_equal(2, col('.'))
|
||||||
|
|
||||||
|
call feedkeys("Shello hero\<CR>h\<C-X>\<C-N>er", 'tx')
|
||||||
|
call assert_equal("hero", getline('.'))
|
||||||
|
call assert_equal(3, col('.'))
|
||||||
|
|
||||||
" can not work with fuzzy
|
" can not work with fuzzy
|
||||||
set cot+=fuzzy
|
set cot+=fuzzy
|
||||||
call feedkeys("S\<C-X>\<C-O>", 'tx')
|
call feedkeys("S\<C-X>\<C-O>", 'tx')
|
||||||
|
@@ -704,6 +704,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 */
|
||||||
|
/**/
|
||||||
|
1059,
|
||||||
/**/
|
/**/
|
||||||
1058,
|
1058,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user