mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-20 11:51:24 +01:00
27080: it wasnt possible to exit menu selection cleanly
This commit is contained in:
parent
10787467bc
commit
88d07936a2
3 changed files with 27 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2009-07-01 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 27080: Doc/Zsh/Zsh/mod_complist.yo, Src/Zle/complist.c: it
|
||||
wasn't possible to exit menu selection cleanly.
|
||||
|
||||
2009-07-01 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 27079: Src/builtin.c: test builtin uses parser and so should
|
||||
|
@ -11876,5 +11881,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.4721 $
|
||||
* $Revision: 1.4722 $
|
||||
*****************************************************
|
||||
|
|
|
@ -287,8 +287,9 @@ bottom line. The following zle functions have special meaning during
|
|||
menu selection:
|
||||
|
||||
startitem()
|
||||
item(tt(accept-line))(
|
||||
accepts the current match and leaves menu selection
|
||||
item(tt(accept-line), tt(accept-search))(
|
||||
accept the current match and leave menu selection (but do
|
||||
not cause the command line to be accepted)
|
||||
)
|
||||
item(tt(send-break))(
|
||||
leaves menu selection and restores the previous contents of the
|
||||
|
|
|
@ -2572,7 +2572,7 @@ domenuselect(Hookdef dummy, Chdata dat)
|
|||
cmd != Th(z_selfinsertunmeta)))) {
|
||||
ungetkeycmd();
|
||||
break;
|
||||
} else if (cmd == Th(z_acceptline)) {
|
||||
} else if (cmd == Th(z_acceptline) || cmd == Th(z_acceptsearch)) {
|
||||
if (mode == MM_FSEARCH || mode == MM_BSEARCH) {
|
||||
mode = 0;
|
||||
continue;
|
||||
|
@ -3316,7 +3316,23 @@ domenuselect(Hookdef dummy, Chdata dat)
|
|||
mlbeg = -1;
|
||||
showinglist = ((validlist && !nolist) ? -2 : 0);
|
||||
onlyexpl = oe;
|
||||
if (!smatches)
|
||||
if (acc && listshown) {
|
||||
/*
|
||||
* Clear the list without spending sixteen weeks of
|
||||
* redrawing it in slightly different states first.
|
||||
* The following seems to work. I'm not sure what
|
||||
* the difference is between listshown and showinglist,
|
||||
* but listshown looks like the traditional thing to
|
||||
* check for in this file at least.
|
||||
*
|
||||
* showinglist has a normally undocumented value of 1,
|
||||
* and an extra-specially undocumented value of -2, which
|
||||
* seems to be a force---it appears we need to kick it out
|
||||
* of that state, though it worries me that in some places
|
||||
* the code actually forces it back into that state.
|
||||
*/
|
||||
clearlist = listshown = showinglist = 1;
|
||||
} else if (!smatches)
|
||||
clearlist = listshown = 1;
|
||||
zrefresh();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue