From bed9839f46047abd81f7c9b56936ba177829221c Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Tue, 1 Dec 2020 00:15:12 +0100 Subject: ex_getln: add secret charm Opt in to this secret world using set wildchar=0 " already the default, but remove if non-zero existing config: set wildcharm=0 now you can map 'wildmode' just like any mode: cnoremap function! Spacey() return getcmdline()[-1:] == "/" ? "\" : "" endfunc cnoremap / wildmenumode() ? Spacey()."/" : "/" Possibly asked questions: What about backwards compatibility? ==== Just do nothing and your existing 'wildchar' and 'wildcharm' will keep working. Doesn't `` mean suspend? ==== Not in cmdline mode. If it would then the recommended wildcharm would not have been `` to start with. My config relies on `:` being a synonym to `:`! ==== just no. --- src/nvim/ex_getln.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 0100be15bc..ed408c28e5 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -1024,7 +1024,7 @@ static int command_line_execute(VimState *state, int key) } // free expanded names when finished walking through matches - if (!(s->c == p_wc && KeyTyped) && s->c != p_wcm + if (!(s->c == p_wc && KeyTyped) && s->c != p_wcm && s->c != Ctrl_Z && s->c != Ctrl_N && s->c != Ctrl_P && s->c != Ctrl_A && s->c != Ctrl_L) { if (compl_match_array) { @@ -1328,7 +1328,8 @@ static int command_line_execute(VimState *state, int key) // - hitting twice means: abandon command line. // - wildcard expansion is only done when the 'wildchar' key is really // typed, not when it comes from a macro - if ((s->c == p_wc && !s->gotesc && KeyTyped) || s->c == p_wcm) { + if ((s->c == p_wc && !s->gotesc && KeyTyped) || s->c == p_wcm + || s->c == Ctrl_Z) { int options = WILD_NO_BEEP; if (wim_flags[s->wim_index] & WIM_BUFLASTUSED) { options |= WILD_BUFLASTUSED; -- cgit