diff options
author | glepnir <glephunter@gmail.com> | 2024-06-15 15:13:05 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-06-15 15:27:09 +0200 |
commit | aced8c2f4fd1cf3f8ac7cdb0dd54d19ef4390ef8 (patch) | |
tree | 40736eeb8cd516e3d9fa676cf46e68992d291cab | |
parent | a2324373eb1c3f1777bc40cb6dcd5e895a15fe10 (diff) |
patch 9.1.0489: default completion may break with fuzzyv9.1.0489
Problem: default completion may break with fuzzy
Solution: check that completion_match_array is not null
(glepnir)
closes: #15010
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r-- | src/insexpand.c | 8 | ||||
-rw-r--r-- | src/testdir/test_ins_complete.vim | 10 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 16 insertions, 4 deletions
diff --git a/src/insexpand.c b/src/insexpand.c index 7b9a5116d0..e312741658 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4155,8 +4155,8 @@ find_next_completion_match( { if (compl_shows_dir_forward() && compl_shown_match->cp_next != NULL) { - compl_shown_match = !compl_fuzzy_match ? compl_shown_match->cp_next - : find_comp_when_fuzzy(); + compl_shown_match = compl_fuzzy_match && compl_match_array != NULL + ? find_comp_when_fuzzy() : compl_shown_match->cp_next; found_end = (compl_first_match != NULL && (is_first_match(compl_shown_match->cp_next) || is_first_match(compl_shown_match))); @@ -4165,8 +4165,8 @@ find_next_completion_match( && compl_shown_match->cp_prev != NULL) { found_end = is_first_match(compl_shown_match); - compl_shown_match = !compl_fuzzy_match ? compl_shown_match->cp_prev - : find_comp_when_fuzzy(); + compl_shown_match = compl_fuzzy_match && compl_match_array != NULL + ? find_comp_when_fuzzy() : compl_shown_match->cp_prev; found_end |= is_first_match(compl_shown_match); } else diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 9f689fefe2..51e3c1b5b6 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -2573,6 +2573,16 @@ func Test_complete_fuzzy_match() call feedkeys("S\<C-x>\<C-o>fb\<C-n>", 'tx') call assert_equal('fooBaz', g:word) + " avoid break default completion behavior + set completeopt=fuzzy,menu + call setline(1, ['hello help hero h']) + exe "norm! A\<C-X>\<C-N>" + call assert_equal('hello help hero hello', getline('.')) + set completeopt+=noinsert + call setline(1, ['hello help hero h']) + exe "norm! A\<C-X>\<C-N>" + call assert_equal('hello help hero h', getline('.')) + " clean up set omnifunc= bw! diff --git a/src/version.c b/src/version.c index 61532287da..f153bfb07e 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 489, +/**/ 488, /**/ 487, |