patch 9.1.1475: completion: regression when "nearest" in 'completeopt'
Commit:
https://github.com/vim/vim/commit/cd68f21f6066778487a1cad30dd1e021debb7e78
Author: Girish Palya <
giri...@gmail.com>
Date: Sun Jun 22 20:23:54 2025 +0200
patch 9.1.1475: completion: regression when "nearest" in 'completeopt'
Problem: completion: regression when "nearest" in 'completeopt'
Solution: fix compare function (Girish Palya)
closes: #17577
Signed-off-by: Girish Palya <
giri...@gmail.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/src/insexpand.c b/src/insexpand.c
index 94eb760d7..ed1b5ff29 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1404,7 +1404,7 @@ cp_compare_nearest(const void* a, const void* b)
{
int score_a = ((compl_T*)a)->cp_score;
int score_b = ((compl_T*)b)->cp_score;
- if (score_a < 0 || score_b < 0)
+ if (score_a == 0 || score_b == 0)
return 0;
return (score_a > score_b) ? 1 : (score_a < score_b) ? -1 : 0;
}
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index df59e1e2a..b6692b554 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -4492,6 +4492,22 @@ func Test_nearest_cpt_option()
exe "normal! of\<c-n>\<c-r>=PrintMenuWords()\<cr>"
call assert_equal('f{''matches'': [''foo1'', ''foo3'', ''foo2''], ''selected'': -1}', getline(2))
+ " Multiple sources
+ func F1(findstart, base)
+ if a:findstart
+ return col('.') - 1
+ endif
+ return ['foo4', 'foo5']
+ endfunc
+ %d
+ set complete+=FF1
+ call setline(1, ["foo1", "foo2", "bar1", "foo3"])
+ exe "normal! 2jof\<c-n>\<c-r>=PrintMenuWords()\<cr>"
+ call assert_equal('f{''matches'': [''foo3'', ''foo2'', ''foo1'', ''foo4'', ''foo5''],
+ \ ''selected'': -1}', getline(4))
+ set complete-=FF1
+ delfunc F1
+
set completeopt=menu,longest,nearest
%d
call setline(1, ["fo", "foo", "foobar", "foobarbaz"])
diff --git a/src/version.c b/src/version.c
index 8f9033bf7..f8dc4084b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1475,
/**/
1474,
/**/