diff options
-rw-r--r-- | src/nvim/ex_getln.c | 8 | ||||
-rw-r--r-- | test/functional/ui/popupmenu_spec.lua | 17 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 6b4092b5b4..3f7bc45c2e 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -1021,9 +1021,11 @@ static int command_line_execute(VimState *state, int key) // <S-Tab> goes to last match, in a clumsy way if (s->c == K_S_TAB && KeyTyped) { - if (nextwild(&s->xpc, WILD_EXPAND_KEEP, 0, s->firstc != '@') == OK - && nextwild(&s->xpc, WILD_PREV, 0, s->firstc != '@') == OK - && nextwild(&s->xpc, WILD_PREV, 0, s->firstc != '@') == OK) { + if (nextwild(&s->xpc, WILD_EXPAND_KEEP, 0, s->firstc != '@') == OK) { + showmatches(&s->xpc, p_wmnu + && ((wim_flags[s->wim_index] & WIM_LIST) == 0)); + nextwild(&s->xpc, WILD_PREV, 0, s->firstc != '@'); + nextwild(&s->xpc, WILD_PREV, 0, s->firstc != '@'); return command_line_changed(s); } } diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua index 3b4b281c81..ae2136f451 100644 --- a/test/functional/ui/popupmenu_spec.lua +++ b/test/functional/ui/popupmenu_spec.lua @@ -574,6 +574,22 @@ describe('ui/ext_popupmenu', function() ]]) feed('<esc>') + -- #10042: make sure shift-tab also triggers the pum + feed(':sign <S-tab>') + screen:expect{grid=[[ + | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + :sign unplace^ | + ]], popupmenu={items=wild_expected, pos=5, anchor={1, 9, 6}}} + feed('<esc>') + -- check positioning with multibyte char in pattern command("e långfile1") command("sp långfile2") @@ -594,6 +610,7 @@ describe('ui/ext_popupmenu', function() items = {{"långfile1", "", "", "" }, {"långfile2", "", "", ""}}, pos = 0, }} + end) end) |