Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
pws-23: RE: _match and auto menu with multipath again
- X-seq: zsh-workers 6736
- From: "Andrej Borsenkow" <borsenkow.msk@xxxxxx>
- To: "Sven Wischnowsky" <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>, <zsh-workers@xxxxxxxxxxxxxx>
- Subject: pws-23: RE: _match and auto menu with multipath again
- Date: Mon, 21 Jun 1999 11:53:25 +0400
- Importance: Normal
- In-reply-to: <199906170837.KAA04058@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
>
> Does any of these do what you want? Note that setting `match_insert=unambig'
> may sometimes remove a short pattern if enough components further up
> the path were expanded. This is a bit ugly, yes, but I can't think of
> an easy way to find out where that precious pattern is which one might
> want to have preserved.
>
Thinking more and more about it: what is the reason for _match to automatically
start menu completion at all (apart from compatibility with old zsh, that can be
preserved with configuration key). Think about it:
1. We complete /u/l/s/z/f -> /usr/local/share/zsh/functions
This is actually the same as if we completed /u*/l*/s*/z*/f* - and is
interpreted and implemented this way. What happens is, that unambiguous prefix
is replaced and first ambiguous part is replaced with the largest common prefix;
remaining parts retain there (implicit) glob pattern. That is, we get something
like
/usr/local/s/z*/f*
share status ...
how does it differ from
2. We complete /u/l/s/z/f*s -> /usr/local/share/zsh/functions ?
In no way, except, that we know better some patterns (more than only initial
character) and thus are able to reduce possible matches. Note, that patterns are
often longer than most common prefix - typing /u/l/lib*X* will typically leave
me with just 'lib' prefix.
So, I think, that either match_insert should be changed to always insert prefix
(irrespectively of length) or we need additional config key to force it.
And about cutrrent behaviour:
compconf correct_accept='2n'
compconf match_original='yes'
compconf completer='_complete:_match'
compconf dumpfile='/home/bor/.zcompdump'
compconf path_cursor='yes'
compconf match_insert='unambig'
compconf correct_prompt='correct to:'
bor@itsrm2:~%> l /u/l/lib*X*<TAB>
bor@itsrm2:~%> l /usr/lib/lib*X*
lib/ lib64s/ ^ cursor here
That is correct and is what I expected. But simply pressing TAB once more
results in
bor@itsrm2:~%> l /usr/lib/libX11.a
lib/ lib64s/
While if I press any cursor movement key and then TAB I get
bor@itsrm2:~%> l /usr/lib/lib*X*
lib/ lib64s/ ^ cursor here (after cursor-right)
bor@itsrm2:~%> l /usr/lib/libX11.a
libX11.a@ libXaw.so.6.1@ libXmSni.so.3.0@ libXpm.so.3.4@
libX11.so@ libXdUtils.so.3.1@ libXmu.a@ libXpm.so.4.6@
.................... (long list),
or if I explicitly enter '6'
bor@itsrm2:~%> l /usr/lib/lib*X*
lib/ lib64s/ ^ cursor here
bor@itsrm2:~%> l /usr/lib6/lib*X*
lib/ lib64s/ ^ cursor here and TAB
bor@itsrm2:~%> l /usr/lib64s/libX11.a
libX11.a@ libXaw.so.6.1@ libXmu.so@ libXpm.so@
libX11.so@ libXdmcp.a@ libXmu.so.6.0@ libXpm.so.3.4@
........................
Looks like a problem with list redisplay. Completion code thinks, it has still
old valid list. And this also illustrates my point - in this case I do not want
menu completion - I just want list to be dislpayed. But, unfortunatley,
length(lib) < length(lib*X*) :-(
/andrej
Just in case:
6731, 6732 applied
Messages sorted by:
Reverse Date,
Date,
Thread,
Author