]> granicus.if.org Git - vim/commitdiff
patch 8.2.4585: cannot use keypad page-up/down for completion menu v8.2.4585
authorYegappan Lakshmanan <yegappan@yahoo.com>
Thu, 17 Mar 2022 13:03:09 +0000 (13:03 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 17 Mar 2022 13:03:09 +0000 (13:03 +0000)
Problem:    Cannot use keypad page-up/down for completion menu.
Solution:   Recognize the keypad keys. (Yegappan Lakshmanan, closes #9963)

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

index c84711ae03237bfe18d1eebae1bbd572e9f363ff..4b149716d4a5473fe82c63d2ca78151db273bda7 100644 (file)
@@ -1606,6 +1606,7 @@ getcmdline_int(
     cmdline_info_T save_ccline;
     int                did_save_ccline = FALSE;
     int                cmdline_type;
+    int                wild_type;
 
     if (ccline.cmdbuff != NULL)
     {
@@ -1867,10 +1868,7 @@ getcmdline_int(
            // text.
            if (c == Ctrl_E || c == Ctrl_Y)
            {
-               int     wild_type;
-
                wild_type = (c == Ctrl_E) ? WILD_CANCEL : WILD_APPLY;
-
                if (nextwild(&xpc, wild_type, WILD_NO_BEEP,
                                                        firstc != '@') == FAIL)
                    break;
@@ -2304,8 +2302,8 @@ getcmdline_int(
        case Ctrl_P:        // previous match
                if (xpc.xp_numfiles > 0)
                {
-                   if (nextwild(&xpc, (c == Ctrl_P) ? WILD_PREV : WILD_NEXT,
-                                                   0, firstc != '@') == FAIL)
+                   wild_type = (c == Ctrl_P) ? WILD_PREV : WILD_NEXT;
+                   if (nextwild(&xpc, wild_type, 0, firstc != '@') == FAIL)
                        break;
                    goto cmdline_not_changed;
                }
@@ -2325,9 +2323,10 @@ getcmdline_int(
                {
                    // If the popup menu is displayed, then PageUp and PageDown
                    // are used to scroll the menu.
-                   if (nextwild(&xpc,
-                               (c == K_PAGEUP) ? WILD_PAGEUP : WILD_PAGEDOWN,
-                               0, firstc != '@') == FAIL)
+                   wild_type = WILD_PAGEUP;
+                   if (c == K_PAGEDOWN || c == K_KPAGEDOWN)
+                       wild_type = WILD_PAGEDOWN;
+                   if (nextwild(&xpc, wild_type, 0, firstc != '@') == FAIL)
                        break;
                    goto cmdline_not_changed;
                }
index c3a6425b877a1ef8a5263c5c1d51491cba586825..dc781f8e10cbda0dad87c36884d2285e2d07b296 100644 (file)
@@ -2106,7 +2106,8 @@ func Test_wildmenu_dirstack()
 endfunc
 
 " Test for recalling newer or older cmdline from history with <Up>, <Down>,
-" <S-Up>, <S-Down>, <PageUp>, <PageDown>, <C-p>, or <C-n>.
+" <S-Up>, <S-Down>, <PageUp>, <PageDown>, <kPageUp>, <kPageDown>, <C-p>, or
+" <C-n>.
 func Test_recalling_cmdline()
   CheckFeature cmdline_hist
 
@@ -2114,17 +2115,18 @@ func Test_recalling_cmdline()
   cnoremap <Plug>(save-cmdline) <Cmd>let g:cmdlines += [getcmdline()]<CR>
 
   let histories = [
-  \  {'name': 'cmd',    'enter': ':',                    'exit': "\<Esc>"},
-  \  {'name': 'search', 'enter': '/',                    'exit': "\<Esc>"},
-  \  {'name': 'expr',   'enter': ":\<C-r>=",             'exit': "\<Esc>\<Esc>"},
-  \  {'name': 'input',  'enter': ":call input('')\<CR>", 'exit': "\<CR>"},
+  \  #{name: 'cmd',    enter: ':',                    exit: "\<Esc>"},
+  \  #{name: 'search', enter: '/',                    exit: "\<Esc>"},
+  \  #{name: 'expr',   enter: ":\<C-r>=",             exit: "\<Esc>\<Esc>"},
+  \  #{name: 'input',  enter: ":call input('')\<CR>", exit: "\<CR>"},
   "\ TODO: {'name': 'debug', ...}
   \]
   let keypairs = [
-  \  {'older': "\<Up>",     'newer': "\<Down>",     'prefixmatch': v:true},
-  \  {'older': "\<S-Up>",   'newer': "\<S-Down>",   'prefixmatch': v:false},
-  \  {'older': "\<PageUp>", 'newer': "\<PageDown>", 'prefixmatch': v:false},
-  \  {'older': "\<C-p>",    'newer': "\<C-n>",      'prefixmatch': v:false},
+  \  #{older: "\<Up>",     newer: "\<Down>",     prefixmatch: v:true},
+  \  #{older: "\<S-Up>",   newer: "\<S-Down>",   prefixmatch: v:false},
+  \  #{older: "\<PageUp>", newer: "\<PageDown>", prefixmatch: v:false},
+  \  #{older: "\<kPageUp>", newer: "\<kPageDown>", prefixmatch: v:false},
+  \  #{older: "\<C-p>",    newer: "\<C-n>",      prefixmatch: v:false},
   \]
   let prefix = 'vi'
   for h in histories
index b9ec937e87b05007b52f89e06f3b7d07bfe2a4d8..3be87664d9242d3aacbdc8a7423153a31de703ab 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4585,
 /**/
     4584,
 /**/