Mercurial > vim
changeset 28121:4765d97b4d8b v8.2.4585
patch 8.2.4585: cannot use keypad page-up/down for completion menu
Commit: https://github.com/vim/vim/commit/155b0882088ff115dcfb6ce466fe7c8cc2bef349
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Mar 17 13:03:09 2022 +0000
patch 8.2.4585: cannot use keypad page-up/down for completion menu
Problem: Cannot use keypad page-up/down for completion menu.
Solution: Recognize the keypad keys. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/9963)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 17 Mar 2022 14:15:04 +0100 |
parents | 001b1aa6fc14 |
children | 1f4bd581898f |
files | src/ex_getln.c src/testdir/test_cmdline.vim src/version.c |
diffstat | 3 files changed, 20 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -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; }
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -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