# HG changeset patch # User Bram Moolenaar # Date 1609763403 -3600 # Node ID 88a7e3bbb594e3abc5144e1e590e64466ba6dbb0 # Parent 8d4f034c1776051f372a2845a61801e902662f01 patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu Commit: https://github.com/vim/vim/commit/014f698cb68ff80c49f9f5d3dbe78127df281885 Author: Bram Moolenaar Date: Mon Jan 4 13:18:30 2021 +0100 patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu Problem: Cannot use CTRL-N and CTRL-P in a popup menu. Solution: Use CTRL-N like and CTRL-P like . (closes https://github.com/vim/vim/issues/7614) diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt --- a/runtime/doc/popup.txt +++ b/runtime/doc/popup.txt @@ -309,8 +309,8 @@ popup_dialog({what}, {options}) *popu popup_filter_menu({id}, {key}) *popup_filter_menu()* Filter that can be used for a popup. These keys can be used: - j select item below - k select item above + j select item below + k select item above accept current selection x Esc CTRL-C cancel the menu Other keys are ignored. diff --git a/src/popupwin.c b/src/popupwin.c --- a/src/popupwin.c +++ b/src/popupwin.c @@ -2380,9 +2380,10 @@ f_popup_filter_menu(typval_T *argvars, t res.v_type = VAR_NUMBER; old_lnum = wp->w_cursor.lnum; - if ((c == 'k' || c == 'K' || c == K_UP) && wp->w_cursor.lnum > 1) + if ((c == 'k' || c == 'K' || c == K_UP || c == Ctrl_P) + && wp->w_cursor.lnum > 1) --wp->w_cursor.lnum; - if ((c == 'j' || c == 'J' || c == K_DOWN) + if ((c == 'j' || c == 'J' || c == K_DOWN || c == Ctrl_N) && wp->w_cursor.lnum < wp->w_buffer->b_ml.ml_line_count) ++wp->w_cursor.lnum; if (old_lnum != wp->w_cursor.lnum) diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -3797,4 +3797,10 @@ func Test_popupwin_exiting_terminal() endtry endfunc +func Test_popup_filter_menu() + let colors = ['red', 'green', 'blue'] + call popup_menu(colors, #{callback: {_, result -> assert_equal('green', colors[result - 1])}}) + call feedkeys("\\\\", 'xt') +endfunc + " vim: shiftwidth=2 sts=2 diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2296, +/**/ 2295, /**/ 2294,