diff --git a/src/insexpand.c b/src/insexpand.c index 63b779dd1..df757ce9b 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4094,7 +4094,7 @@ get_next_default_completion(ins_compl_next_state_T *st, pos_T *start_pos) if (!in_fuzzy) ptr = ins_compl_get_next_word_or_line(st->ins_buf, st->cur_match_pos, &len, &cont_s_ipos); - if (ptr == NULL) + if (ptr == NULL || (ins_compl_has_preinsert() && STRCMP(ptr, compl_pattern.string) == 0)) continue; if (ins_compl_add_infercase(ptr, len, p_ic, @@ -4342,7 +4342,7 @@ ins_compl_delete(void) int has_preinsert = ins_compl_preinsert_effect(); 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; } diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index d0f90c881..49e44653a 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -3112,6 +3112,10 @@ function Test_completeopt_preinsert() call assert_equal("hello hero", getline('.')) call assert_equal(2, col('.')) + call feedkeys("Shello hero\h\\er", 'tx') + call assert_equal("hero", getline('.')) + call assert_equal(3, col('.')) + " can not work with fuzzy set cot+=fuzzy call feedkeys("S\\", 'tx') diff --git a/src/version.c b/src/version.c index e69088d3c..209baf1d8 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1059, /**/ 1058, /**/