From: Yuri D'Elia <wavexx@thregr.org>
To: zsh-users@zsh.org
Subject: Re: rsync --progress stops completion
Date: Sun, 21 Sep 2014 18:43:08 +0200 [thread overview]
Message-ID: <lvmv6s$o5c$1@ger.gmane.org> (raw)
In-Reply-To: <140920112024.ZM29459@torch.brasslantern.com>
On 09/20/2014 08:20 PM, Bart Schaefer wrote:
> } will stop the completion entirely. Surely, with _files you can go on,
> } but I would like /--?.*/ to be simply treated as an unknown argument, so
> } that a further flag would properly complete as expected as if --unknown
> } was never there in the first place.
>
> OK. so you'd like that. That doesn't mean everyone would like that, so
> you still haven't answered the question "how would you like to tell the
> completion system about it, if not in the completer zstyle?"
I mean, I don't particularly "like" that, it's obvious that I would love
the completion to be accurate (I guess I can't just be lazy about broken
completers.. right?).
I'm just sure that I don't like to have to force file completion "at
times", but I honestly don't have a better alternative. I was just
suggesting a possibility. I agree about all the counter points about
this approach as well.
And yes, a zstyle would definitely be the way I would tell the completer
about the preference.
> However, perhaps the following is close enough to what you want? This
> is similar to doing "compset -n $CURRENT" except that it retains the
> first word (presumably the command name).
>
>
> _try_again() {
> [[ $compstate[context] = command && CURRENT -gt 2 ]] || return 1
> words=("$words[1]" "${(@)words[CURRENT,-1]}")
> CURRENT=2
> _compskip=default
> _normal -s
> }
> zstyle ':completion:*' completer _oldlist _expand _complete _try_again
>
>
> Obviously this defeats any attempt at making option suggestions mutually
> exclusive, and might (depending again upon the implementation of the
> completion function) end up suggesting options where only a non-option
> argument is valid.
Good points about suggesting invalid alternatives, but very interesting
nonetheless:
_complete_failed()
{
if [[ $LASTWIDGET = *complete* && -z $_complete_failed_active ]]
then
local _complete_failed_active=1
[[ $compstate[context] = command && CURRENT -gt 2 ]] || return 1
words=("$words[1]" "${(@)words[CURRENT,-1]}")
CURRENT=2
_compskip=default
_normal -s
fi
}
Now, this only offers the fallback if we attempt completion *twice*, so
it's somewhat in the middle.
At first, trying it randomly, looks like a good compromise to me.
rsync --bullshit doesn't offer me any flat at first, but completes
sensibly at the second attempt. This means mutually exclusive options
will also correctly be offered.
next prev parent reply other threads:[~2014-09-21 16:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-16 15:00 Yuri D'Elia
2014-09-16 15:09 ` Vadim A. Misbakh-Soloviov
2014-09-16 17:50 ` Yuri D'Elia
2014-09-17 0:51 ` Bart Schaefer
2014-09-17 8:08 ` Yuri D'Elia
2014-09-17 15:51 ` Bart Schaefer
2014-09-18 9:42 ` Yuri D'Elia
2014-09-18 16:36 ` Bart Schaefer
2014-09-19 2:01 ` Bart Schaefer
2014-09-19 3:22 ` Mikael Magnusson
2014-09-19 11:40 ` Oliver Kiddle
2014-09-21 0:48 ` Bart Schaefer
2014-09-20 13:25 ` Yuri D'Elia
2014-09-20 18:20 ` Bart Schaefer
2014-09-21 16:43 ` Yuri D'Elia [this message]
2014-09-21 17:20 ` Bart Schaefer
2014-09-21 17:33 ` Yuri D'Elia
2014-09-21 19:38 ` Bart Schaefer
2014-09-21 20:27 ` Yuri D'Elia
2014-09-21 20:37 ` Yuri D'Elia
2014-09-21 22:07 ` Bart Schaefer
2014-09-21 22:29 ` Yuri D'Elia
2014-09-22 6:58 ` Bart Schaefer
2014-09-21 21:08 ` Bart Schaefer
2014-09-21 21:35 ` Yuri D'Elia
2014-09-21 21:54 ` typeset -g (was Re: rsync --progress stops completion) Bart Schaefer
2014-09-21 18:52 ` rsync --progress stops completion Yuri D'Elia
2014-09-21 18:59 ` Yuri D'Elia
2014-09-20 13:20 ` Yuri D'Elia
2014-09-23 14:23 ` Oliver Kiddle
2014-09-23 14:43 ` Peter Stephenson
2014-09-16 15:25 ` Vadim A. Misbakh-Soloviov
2014-09-16 16:28 ` Bart Schaefer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='lvmv6s$o5c$1@ger.gmane.org' \
--to=wavexx@thregr.org \
--cc=zsh-users@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).