Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Preventing sorting in completers
- X-seq: zsh-workers 18886
- From: Philippe Troin <phil@xxxxxxxx>
- To: Peter Stephenson <pws@xxxxxxx>
- Subject: Re: Preventing sorting in completers
- Date: 22 Jul 2003 12:51:09 -0700
- Cc: zsh-workers@xxxxxxxxxx
- In-reply-to: <14937.1058294147@xxxxxxx>
- Mail-copies-to: nobody
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <14937.1058294147@xxxxxxx>
- Sender: Philippe Troin <phil@xxxxxxxx>
Any reason why this has not made it into cvs as of July 22 2003?
Phil.
Peter Stephenson <pws@xxxxxxx> writes:
> Bart Schaefer wrote:
> > Slightly revised suggestion: Allow styles to override an explicit -J,
> > but do not allow overriding an explicit -V. I did a quick grep, and
> > there are very few cases where the -V option is passed; but in none of
> > those would it be useful to apply a sort.
>
> I've now ended up with the following. The special history code is still
> necessary because it reverses the usual default; it assumes you don't
> want it sorted unless you say you do.
>
> Index: Completion/Base/Core/_description
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Completion/Base/Core/_description,v
> retrieving revision 1.4
> diff -u -r1.4 _description
> --- Completion/Base/Core/_description 12 Feb 2002 13:37:03 -0000 1.4
> +++ Completion/Base/Core/_description 15 Jul 2003 18:32:02 -0000
> @@ -1,6 +1,6 @@
> #autoload
>
> -local name gropt nopt xopt format gname hidden hide match opts tag
> +local name gropt nopt xopt format gname hidden hide match opts tag sort
>
> opts=()
>
> @@ -30,6 +30,18 @@
> zstyle -s ":completion:${curcontext}:$1" matcher match &&
> opts=($opts -M "$match")
> [[ -n "$_matcher" ]] && opts=($opts -M "$_matcher")
> +
> +# Use sort style, but ignore `menu' value to help _expand.
> +# Also don't override explicit use of -V.
> +if { zstyle -s ":completion:${curcontext}:$1" sort sort ||
> + zstyle -s ":completion:${curcontext}:" sort sort; } &&
> + [[ "$gropt" = -J && $sort != menu ]]; then
> + if [[ "$sort" = (yes|true|1|on) ]]; then
> + gropt=(-J)
> + else
> + gropt=(-V)
> + fi
> +fi
>
> if [[ -z "$_comp_no_ignore" ]]; then
> zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore ||
> Index: Doc/Zsh/compsys.yo
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
> retrieving revision 1.171
> diff -u -r1.171 compsys.yo
> --- Doc/Zsh/compsys.yo 7 Jul 2003 09:48:46 -0000 1.171
> +++ Doc/Zsh/compsys.yo 15 Jul 2003 18:32:02 -0000
> @@ -2162,12 +2162,22 @@
> )
> kindex(sort, completion style)
> item(tt(sort))(
> -If set to `true', completing words from the command
> -history sorts the words alphabetically instead of
> -keeping them in the order in which they appear in the history (from
> -youngest to oldest).
> +Many completion widgets call tt(_description) at some point which
> +decides whether the matches are added sorted or unsorted (often
> +indirectly via tt(_wanted) or tt(_requested)). This style can be set
> +explicitly to one of the usual true or false values as an override.
> +If it is not set for the context, the standard behaviour of the
> +calling widget is used.
>
> -This is also used by the tt(_expand) completer. If it is set to
> +The style is tested first against the full context including the tag, and
> +if that fails to produce a value against the context without the tag.
> +
> +If the calling widget explicitly requests unsorted matches, this is usually
> +honoured. However, the default (unsorted) behaviour of completion
> +for the command history may be overridden by setting the style to
> +tt(true).
> +
> +In the tt(_expand) completer, if it is set to
> `true', the expansions generated will always be sorted. If it is set
> to `tt(menu)', then the expansions are only sorted when they are offered
> as single strings but not in the string containing all possible
Messages sorted by:
Reverse Date,
Date,
Thread,
Author