forked from aniani/vim
patch 9.0.1707: Cannot wrap around in popup_filter_menu()
Problem: Cannot wrap around in popup_filter_menu() Solution: Allow to wrap around by default Currently, it is not possible, to wrap around at the end of the list using e.g. down (and go back to the top) or up at the beginning of the list and go directly to the last item. This is not consistent behaviour with e.g. how the pum-menu currently works, so let's just allow this. Also adjust tests about it. closes: #12689 closes: #12693 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
@@ -2583,12 +2583,20 @@ f_popup_filter_menu(typval_T *argvars, typval_T *rettv)
|
||||
res.v_type = VAR_NUMBER;
|
||||
|
||||
old_lnum = wp->w_cursor.lnum;
|
||||
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 || c == Ctrl_N)
|
||||
&& wp->w_cursor.lnum < wp->w_buffer->b_ml.ml_line_count)
|
||||
++wp->w_cursor.lnum;
|
||||
if (c == 'k' || c == 'K' || c == K_UP || c == Ctrl_P)
|
||||
{
|
||||
if (wp->w_cursor.lnum > 1)
|
||||
--wp->w_cursor.lnum;
|
||||
else
|
||||
wp->w_cursor.lnum = wp->w_buffer->b_ml.ml_line_count;
|
||||
}
|
||||
if (c == 'j' || c == 'J' || c == K_DOWN || c == Ctrl_N)
|
||||
{
|
||||
if (wp->w_cursor.lnum < wp->w_buffer->b_ml.ml_line_count)
|
||||
++wp->w_cursor.lnum;
|
||||
else
|
||||
wp->w_cursor.lnum = 1;
|
||||
}
|
||||
if (old_lnum != wp->w_cursor.lnum)
|
||||
{
|
||||
// caller will call popup_highlight_curline()
|
||||
|
||||
Reference in New Issue
Block a user