aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBilly Su <g4691821@gmail.com>2020-01-22 17:50:33 +0800
committerBilly Su <g4691821@gmail.com>2020-01-23 12:12:42 +0800
commit961c528afc7f3a21a8c4b118a2c585dbe670c5c5 (patch)
tree2ee8e36fe7a8ec00422894da94bb457fec70a148 /src
parent270cd623efd50a22fe77a7f868ee7569e95a9acc (diff)
downloadrneovim-961c528afc7f3a21a8c4b118a2c585dbe670c5c5.tar.gz
rneovim-961c528afc7f3a21a8c4b118a2c585dbe670c5c5.tar.bz2
rneovim-961c528afc7f3a21a8c4b118a2c585dbe670c5c5.zip
ex_getln.c: wildmenu add cancel and apply ops
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_getln.c18
-rw-r--r--src/nvim/ex_getln.h2
2 files changed, 19 insertions, 1 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 551482dab3..380dc43b50 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -621,6 +621,16 @@ static int command_line_execute(VimState *state, int key)
s->c = Ctrl_N;
}
}
+ if (compl_match_array || s->did_wild_list) {
+ if (s->c == Ctrl_E) {
+ s->res = nextwild(&s->xpc, WILD_CANCEL, WILD_NO_BEEP,
+ s->firstc != '@');
+ } else if (s->c == Ctrl_Y) {
+ s->res = nextwild(&s->xpc, WILD_APPLY, WILD_NO_BEEP,
+ s->firstc != '@');
+ s->c = Ctrl_E;
+ }
+ }
// Hitting CR after "emenu Name.": complete submenu
if (s->xpc.xp_context == EXPAND_MENUNAMES && p_wmnu
@@ -3788,6 +3798,12 @@ ExpandOne (
return NULL;
}
+ if (mode == WILD_CANCEL) {
+ ss = vim_strsave(orig_save);
+ } else if (mode == WILD_APPLY) {
+ ss = vim_strsave(findex == -1 ? orig_save : xp->xp_files[findex]);
+ }
+
/* free old names */
if (xp->xp_numfiles != -1 && mode != WILD_ALL && mode != WILD_LONGEST) {
FreeWild(xp->xp_numfiles, xp->xp_files);
@@ -3799,7 +3815,7 @@ ExpandOne (
if (mode == WILD_FREE) /* only release file name */
return NULL;
- if (xp->xp_numfiles == -1) {
+ if (xp->xp_numfiles == -1 && mode != WILD_APPLY && mode != WILD_CANCEL) {
xfree(orig_save);
orig_save = orig;
orig_saved = TRUE;
diff --git a/src/nvim/ex_getln.h b/src/nvim/ex_getln.h
index 99d5a7786d..84b2b41f30 100644
--- a/src/nvim/ex_getln.h
+++ b/src/nvim/ex_getln.h
@@ -16,6 +16,8 @@
#define WILD_ALL 6
#define WILD_LONGEST 7
#define WILD_ALL_KEEP 8
+#define WILD_CANCEL 9
+#define WILD_APPLY 10
#define WILD_LIST_NOTFOUND 0x01
#define WILD_HOME_REPLACE 0x02