patch 9.1.1475: completion: regression when "nearest" in 'completeopt'
Commit: https://github.com/vim/vim/commit/cd68f21f6066778487a1cad30dd1e021debb7e78 Author: Girish Palya <giris...@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 <giris...@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, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uTPS9-00EV4b-66%40256bit.org.