summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-05-13 13:55:09 +0100
committerBram Moolenaar <Bram@vim.org>2023-05-13 13:55:09 +0100
commit81f277f52664031a56aeabe889f1c36402316dba (patch)
tree94c78053f6755ccde0c9443954fecaf2bb1bfebf
parentb848ce6b7e27f24aff47a4d63933e0f96663acfe (diff)
downloadvim-git-81f277f52664031a56aeabe889f1c36402316dba.tar.gz
patch 9.0.1550: in cmdline window S-Tab does not select previous completionv9.0.1550
Problem: In cmdline window S-Tab does not select previous completion. (Maxim Kim) Solution: Add a mappint for S-Tab. (closes #12116)
-rw-r--r--src/ex_getln.c4
-rw-r--r--src/testdir/test_cmdwin.vim16
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 0 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 21447ff04..595286aa3 100644
--- 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 *)"<buffer> <Tab> <C-X><C-V>", MODE_INSERT, TRUE);
add_map((char_u *)"<buffer> <Tab> a<C-X><C-V>", MODE_NORMAL, TRUE);
+
+ // Make S-Tab work like CTRL-P in command-line completion
+ add_map((char_u *)"<buffer> <S-Tab> <C-P>", 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
index ad05f3e04..e0b5833ca 100644
--- 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=<Tab>
+ com! -nargs=* -complete=command SomeOne echo 'one'
+ com! -nargs=* -complete=command SomeTwo echo 'two'
+ call feedkeys("q:aSome\<Tab>\<Home>\"\<CR>", 'tx')
+ call assert_equal('"SomeOne', @:)
+ call feedkeys("q:aSome\<Tab>\<Tab>\<Home>\"\<CR>", 'tx')
+ call assert_equal('"SomeTwo', @:)
+ call feedkeys("q:aSome\<Tab>\<Tab>\<S-Tab>\<Home>\"\<CR>", '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:\<C-\>\<C-N>", 'xt')
diff --git a/src/version.c b/src/version.c
index 857a22960..923ea9794 100644
--- 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,