# HG changeset patch # User Bram Moolenaar # Date 1683982804 -7200 # Node ID bdbaaed04acdf0007d1acf84f26c3ffe283473d2 # Parent bbdfe818dc0ff578f9bd65ffdace97de3a98c2a8 patch 9.0.1550: in cmdline window S-Tab does not select previous completion Commit: https://github.com/vim/vim/commit/81f277f52664031a56aeabe889f1c36402316dba Author: Bram Moolenaar Date: Sat May 13 13:55:09 2023 +0100 patch 9.0.1550: in cmdline window S-Tab does not select previous completion Problem: In cmdline window S-Tab does not select previous completion. (Maxim Kim) Solution: Add a mappint for S-Tab. (closes #12116) diff --git a/src/ex_getln.c b/src/ex_getln.c --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -4486,8 +4486,12 @@ open_cmdwin(void) { if (p_wc == TAB) { + // Make Tab start command-line completion: CTRL-X CTRL-V add_map((char_u *)" ", MODE_INSERT, TRUE); add_map((char_u *)" a", MODE_NORMAL, TRUE); + + // Make S-Tab work like CTRL-P in command-line completion + add_map((char_u *)" ", MODE_INSERT, TRUE); } set_option_value_give_err((char_u *)"ft", 0L, (char_u *)"vim", OPT_LOCAL); diff --git a/src/testdir/test_cmdwin.vim b/src/testdir/test_cmdwin.vim --- a/src/testdir/test_cmdwin.vim +++ b/src/testdir/test_cmdwin.vim @@ -359,6 +359,22 @@ func Test_compl_in_cmdwin() set wildmenu& wildchar& endfunc +func Test_cmdwin_cmd_completion() + set wildmenu wildchar= + com! -nargs=* -complete=command SomeOne echo 'one' + com! -nargs=* -complete=command SomeTwo echo 'two' + call feedkeys("q:aSome\\\"\", 'tx') + call assert_equal('"SomeOne', @:) + call feedkeys("q:aSome\\\\"\", 'tx') + call assert_equal('"SomeTwo', @:) + call feedkeys("q:aSome\\\\\"\", 'tx') + call assert_equal('"SomeOne', @:) + + delcom SomeOne + delcom SomeTwo + set wildmenu& wildchar& +endfunc + func Test_cmdwin_ctrl_bsl() " Using CTRL-\ CTRL-N in cmd window should close the window call feedkeys("q:\\", 'xt') diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1550, +/**/ 1549, /**/ 1548,