]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1550: in cmdline window S-Tab does not select previous completion v9.0.1550
authorBram Moolenaar <Bram@vim.org>
Sat, 13 May 2023 12:55:09 +0000 (13:55 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 13 May 2023 12:55:09 +0000 (13:55 +0100)
Problem:    In cmdline window S-Tab does not select previous completion.
            (Maxim Kim)
Solution:   Add a mappint for S-Tab. (closes #12116)

src/ex_getln.c
src/testdir/test_cmdwin.vim
src/version.c

index 21447ff040183402bd47c4848d773b7c22c5745c..595286aa34a2529b8d6e21ad66cd5b433329e898 100644 (file)
@@ -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);
index ad05f3e044855e57fbeba5c65e621d12b3e6bfae..e0b5833caf9ed3fe69d2f12c5792faa3ea37cd3a 100644 (file)
@@ -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')
index 857a22960eeaf6e16a7e7c09c8e9a03b01c7e2e2..923ea9794ca36fc694669881f0449f78c6391f7a 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1550,
 /**/
     1549,
 /**/