Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: Re: (forw) --help able programs and completion]
- X-seq: zsh-workers 12114
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: PATCH: Re: (forw) --help able programs and completion]
- Date: Thu, 29 Jun 2000 09:02:40 +0200 (MET DST)
- In-reply-to: Sven Wischnowsky's message of Wed, 28 Jun 2000 09:08:04 +0200 (MET DST)
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
I wrote:
> [ the menu style and `yes=<num>' ]
>
> Another question is if it should mean `if there are less than <num>
> matches, start menu completion', because menu completion (at least the
> *real* menu completion, not selection) works best with few matches.
>
> That's easy to change, though (I'd like to get opinions from menu
> completion users).
This patch does that (as long as I don't get replies, I'll happily
continue hacking).
> > > Does anybody now want support for `no=3'?
> >
> > Which would mean ...?
>
> If one has `setopt menucomplete', setting the menu style to one of the
> `false' values can be used to turn menu completion off for some
> contexts. Allowing `no=<num>' would either mean to turn it of if there
> are more or less than <num> matches, whatever we decide `yes=<num>'
> means.
It also does this (with `if there are at least <num> matches, don't
start menu completion').
> > However, a plain-ol'-menu-completion variant of select=long-list might be
> > interesting.
>
> Hmhm, right.
And it does this (`yes=long-list').
Bye
Sven
Index: Completion/Core/_main_complete
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Core/_main_complete,v
retrieving revision 1.32
diff -u -r1.32 _main_complete
--- Completion/Core/_main_complete 2000/06/28 09:42:51 1.32
+++ Completion/Core/_main_complete 2000/06/29 07:02:03
@@ -170,8 +170,9 @@
_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 @@
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
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.77
diff -u -r1.77 compsys.yo
--- Doc/Zsh/compsys.yo 2000/06/28 09:08:03 1.77
+++ Doc/Zsh/compsys.yo 2000/06/29 07:02:04
@@ -1595,7 +1595,13 @@
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
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author