diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/Zle/compcore.c | 7 | ||||
-rw-r--r-- | Src/Zle/complist.c | 8 | ||||
-rw-r--r-- | Src/Zle/compresult.c | 2 |
3 files changed, 13 insertions, 4 deletions
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c index ad87fe619..895267535 100644 --- a/Src/Zle/compcore.c +++ b/Src/Zle/compcore.c @@ -37,7 +37,7 @@ static Widget lastcompwidget; /* Flags saying what we have to do with the result. */ /**/ -int useexact, useline, uselist, forcelist, startauto; +int useexact, useline, uselist, forcelist, iforcemenu, startauto; /* Non-zero if we should go back to the last prompt. */ @@ -349,7 +349,10 @@ do_completion(Hookdef dummy, Compldat dat) if (comppatmatch && *comppatmatch && comppatmatch != opm) haspattern = 1; - if (useline < 0) + if (iforcemenu) { + do_ambig_menu(); + ret = 0; + } else if (useline < 0) ret = selfinsert(zlenoargs); else if (!useline && uselist) { /* All this and the guy only wants to see the list, sigh. */ diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index 75a23f0e5..9159326f3 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -1782,11 +1782,15 @@ domenuselect(Hookdef dummy, Chdata dat) menucmp = menuacc = hasoldlist = 0; minfo.cur = NULL; fixsuffix(); + handleundo(); validlist = 0; amatches = pmatches = lastmatches = NULL; invalidate_list(); + iforcemenu = 1; menucomplete(zlenoargs); - if (dat->num < 2 || !minfo.cur || !*(minfo.cur)) { + iforcemenu = 0; + + if (dat->num < 1 || !minfo.cur || !*(minfo.cur)) { noselect = clearlist = listshown = 1; onlyexpl = 0; zrefresh(); @@ -1821,6 +1825,7 @@ domenuselect(Hookdef dummy, Chdata dat) s->origcs = origcs; s->origll = origll; accept_last(); + handleundo(); do_menucmp(0); mselect = (*(minfo.cur))->gnum; @@ -1852,6 +1857,7 @@ domenuselect(Hookdef dummy, Chdata dat) if (!u) break; + handleundo(); cs = 0; foredel(ll); spaceinline(l = strlen(u->line)); diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c index 092971479..19d785bb8 100644 --- a/Src/Zle/compresult.c +++ b/Src/Zle/compresult.c @@ -1093,7 +1093,7 @@ comp_mod(int v, int m) /* This handles the beginning of menu-completion. */ /**/ -static void +void do_ambig_menu(void) { Cmatch *mc; |