neovim

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

commit 332d596959347f26690111afd3c3b1b750fac464
parent 3eee6f9d631b6c220564ef792c542964ed5e1cb9
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri, 28 Feb 2025 08:23:02 +0800

vim-patch:9.1.1157: command completion wrong for input() (#32669)

Problem:  command completion wrong for input()
          (Cdrman Fu)
Solution: Set commandline completion context explicitly
          (Jim Zhou)

fixes vim/vim#16723
closes: vim/vim#16733

https://github.com/vim/vim/commit/3255af850e8bab35c30fce4177bb5ba4a941e6ce

Co-authored-by: Jim Zhou <csd_189@163.com>
Diffstat:
Msrc/nvim/cmdexpand.c | 7++++++-
Mtest/old/testdir/test_functions.vim | 5+++++
2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/nvim/cmdexpand.c b/src/nvim/cmdexpand.c @@ -242,7 +242,12 @@ int nextwild(expand_T *xp, int type, int options, bool escape) char *p2; if (xp->xp_numfiles == -1) { - set_expand_context(xp); + if (ccline->input_fn && ccline->xp_context == EXPAND_COMMANDS) { + // Expand commands typed in input() function + set_cmd_context(xp, ccline->cmdbuff, ccline->cmdlen, ccline->cmdpos, false); + } else { + set_expand_context(xp); + } if (xp->xp_context == EXPAND_LUA) { nlua_expand_pat(xp); } diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim @@ -2071,6 +2071,11 @@ func Test_input_func() call assert_fails("call input('F:', '', 'invalid')", 'E180:') call assert_fails("call input('F:', '', [])", 'E730:') + + " Test for using 'command' as the completion function + call feedkeys(":let c = input('Command? ', '', 'command')\<CR>" + \ .. "echo bufnam\<C-A>\<CR>", 'xt') + call assert_equal('echo bufname(', c) endfunc " Test for the inputdialog() function