From 53cbf66bd2b0d6963ab024733522ab97507af303 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 23 Jul 2026 09:03:29 +0800 Subject: [PATCH] vim-patch:9.2.0838: searchcount() returns wrong cached maxcount (#40913) Problem: Cached searchcount() returns 'maxsearchcount' instead of the requested maxcount. Solution: return the remembered last_maxcount (glepnir) closes: vim/vim#20701 https://github.com/vim/vim/commit/4352dc6ab0ca60d3a44fc90a26275d722ce7b86c Co-authored-by: glepnir --- src/nvim/search.c | 2 +- test/old/testdir/test_search.vim | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/nvim/search.c b/src/nvim/search.c index d724cb8033..c5b3dc7ab6 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -2740,7 +2740,7 @@ static void update_search_stat(int dirc, pos_T *pos, pos_T *cursor_pos, searchst stat->cnt = cnt; stat->exact_match = exact_match; stat->incomplete = incomplete; - stat->last_maxcount = (int)p_msc; + stat->last_maxcount = last_maxcount; return; } last_maxcount = maxcount; diff --git a/test/old/testdir/test_search.vim b/test/old/testdir/test_search.vim index 8f883916ff..4ec87ba0a6 100644 --- a/test/old/testdir/test_search.vim +++ b/test/old/testdir/test_search.vim @@ -2363,4 +2363,17 @@ func Test_incsearch_delimiter_ctrlg() call StopVimInTerminal(buf) endfunc +func Test_searchcount_maxcount_cached() + new + call setline(1, repeat(['foo'], 5)) + set maxsearchcount=99 + let @/ = 'foo' + call cursor(1, 1) + call searchcount(#{recompute: v:true, maxcount: 3}) + let r = searchcount(#{recompute: v:false, maxcount: 3}) + call assert_equal(3, r.maxcount) + set maxsearchcount& + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab