1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-29 19:00:57 +02:00

even more fun with the menu style (no=num, yes=long-list, reverse meaning of yes=num) (12114)

This commit is contained in:
Sven Wischnowsky 2000-06-29 07:04:17 +00:00
parent 806e8aa6af
commit 4e2e7f292f
3 changed files with 39 additions and 10 deletions

View file

@ -1,5 +1,9 @@
2000-06-29 Sven Wischnowsky <wischnow@zsh.org>
* 12114: Completion/Core/_main_complete, Doc/Zsh/compsys.yo: even
more fun with the menu style (no=num, yes=long-list, reverse
meaning of yes=num)
* 12113: Completion/Core/_expand, Src/Zle/zle_tricky.c: quote
brace-strings

View file

@ -170,8 +170,9 @@ if [[ $compstate[old_list] = keep || nm -gt 1 ]]; then
_menu_style=( "$_menu_style[@]" "$_def_menu_style[@]" )
if [[ "$compstate[list]" = *list &&
-n "$_menu_style[(r)select=long-list]" && tmp -gt LINES ]]; then
if [[ "$compstate[list]" = *list && tmp -gt LINES &&
( -n "$_menu_style[(r)select=long-list]" ||
-n "$_menu_style[(r)(yes|true|on|1)=long-list]" ) ]]; then
compstate[insert]=menu
elif [[ "$compstate[insert]" = "$_saved_insert" ]]; then
if [[ -n "$_menu_style[(r)select=long]" && tmp -gt LINES ]]; then
@ -180,28 +181,46 @@ if [[ $compstate[old_list] = keep || nm -gt 1 ]]; then
sel=( "${(@M)_menu_style:#(yes|true|1|on)*}" )
if (( $#sel )); then
min=9999999
min=0
for i in "$sel[@]"; do
if [[ "$i" = *\=* ]]; then
num="${i#*\=}"
[[ num -lt 0 ]] && num=0
else
num=0
num=$nm
fi
[[ num -lt min ]] && min="$num"
[[ num -gt min ]] && min="$num"
(( min )) || break
[[ min -ge nm ]] && break
done
fi
if [[ ( -n "$min" && nm -ge min ) ||
if [[ ( -n "$min" && nm -le min ) ||
( -n "$_menu_style[(r)auto*]" &&
"$compstate[insert]" = automenu ) ]]; then
compstate[insert]=menu
elif [[ -n "$_menu_style[(r)auto*]" &&
"$compstate[insert]" != automenu ]]; then
compstate[insert]=automenu-unambiguous
elif [[ -n "$_menu_style[(r)(no|false|0|off)]" ]]; then
compstate[insert]=unambiguous
else
sel=( "${(@M)_menu_style:#(no|false|0|off)*}" )
if (( $#sel )); then
min=9999999
for i in "$sel[@]"; do
if [[ "$i" = *\=* ]]; then
num="${i#*\=}"
[[ num -lt 0 ]] && num=0
else
num=0
fi
[[ num -lt min ]] && min="$num"
(( min )) || break
done
else
min=
fi
[[ -n "$min" && nm -ge min ]] && compstate[insert]=unambiguous
fi
fi
fi

View file

@ -1595,7 +1595,13 @@ example, with the tt(MENU_COMPLETE) option).
Using the form `tt(yes=)var(num)', where `tt(yes)' may be any of the
true values (`tt(yes)', `tt(true)', `tt(on)' and `tt(1)') turns on
menu completion if there at least var(num) matches.
menu completion if there at most var(num) matches. Using this for one
of the `false' values (as in `tt(no=10)') makes menu completion
em(not) be used if there are var(num) or more matches. Of course,
this is only useful when menu completion is normally used, e.g. by
setting the tt(MENU_COMPLETE) option. The `true' values may also be
used in the form `tt(yes=long-list)' to turn on menu completion
whenever listing is done and the list does not fit onto the screen.
In addition to (or instead of) the above possibilities, the value may
contain the string `tt(select)', optionally followed by an equal sign and a