neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit d784ed7013b1b244728d01d180caf2f1a974c515
parent f2bda1effc17fd18b2a1552697c3ff4083b1258f
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon,  8 Sep 2025 08:13:24 +0800

vim-patch:9.1.1739: Matches may be listed twice with wildmode=longest,list

Problem:  Matches may be listed twice with wildmode=longest,list when
          "longest" doesn't change command line (after 9.1.1737).
Solution: Set did_wild_list when trying "list" after "longest"
          (zeertzjq).

closes: vim/vim#18227

https://github.com/vim/vim/commit/a28a2eb9d9362adb1c7f9ebde66cd1329dd463bb

Diffstat:
Msrc/nvim/ex_getln.c | 3+++
Mtest/functional/ui/popupmenu_spec.lua | 4+++-
Mtest/old/testdir/test_cmdline.vim | 2++
3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c @@ -1195,6 +1195,9 @@ static int command_line_wildchar_complete(CommandLineState *s) nextwild(&s->xpc, WILD_NEXT, options, escape); } showmatches(&s->xpc, p_wmnu, wim_list_next, wim_noselect_next); + if (wim_list_next) { + s->did_wild_list = true; + } } } } else { diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua @@ -4517,7 +4517,7 @@ describe('builtin popupmenu', function() feed('<esc>') - -- Check "list" still works + -- Check that when "longest" produces no result, "list" works command('set wildmode=longest,list') feed(':cn<Tab>') screen:expect([[ @@ -4530,6 +4530,8 @@ describe('builtin popupmenu', function() cnfile cnoremenu | :cn^ | ]]) + feed('<Tab>') + screen:expect_unchanged() feed('s') screen:expect([[ | diff --git a/test/old/testdir/test_cmdline.vim b/test/old/testdir/test_cmdline.vim @@ -2900,6 +2900,8 @@ func Test_wildmenu_pum() call term_sendkeys(buf, "\<C-U>set wildmode=longest,list\<CR>") call term_sendkeys(buf, ":cn\<Tab>") call VerifyScreenDump(buf, 'Test_wildmenu_pum_30', {}) + call term_sendkeys(buf, "\<Tab>") + call VerifyScreenDump(buf, 'Test_wildmenu_pum_30', {}) call term_sendkeys(buf, "s") call VerifyScreenDump(buf, 'Test_wildmenu_pum_31', {})