zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-users@zsh.org
Subject: Re: rsync --progress stops completion
Date: Sat, 20 Sep 2014 11:20:24 -0700	[thread overview]
Message-ID: <140920112024.ZM29459@torch.brasslantern.com> (raw)
In-Reply-To: <lvjuvl$mru$1@ger.gmane.org>
In-Reply-To: <lvjv8o$r67$1@ger.gmane.org>

On Sep 20,  3:20pm, Yuri D'Elia wrote:
}
} I'll take rsync as an example here.
} 
}   $ rsync --unknown
} 
} 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?"

On Sep 20,  3:25pm, Yuri D'Elia wrote:
}
} Also, to follow my previous discussion, I would somehow prefer a system
} where the completion *allows* unknown flags as a general rule for all
} completers.
} 
} I don't have enough knowledge of the existing completers to know though
} if this is feasible or not.

It's not particularly feasible because every completion function is just
that -- a shell function -- and there's no requirement that they be
implemented by passing through any single control point, except for
"compadd" by which time it is too late to affect the parse.  It might
be possible to add something to _arguments + comparguments to tell it
to ignore things it can't parse, but that still won't cover *every*
completion, and it would lead to false positives in cases where the
failure of one parse is followed by attempting a different one -- so
it would still have to be up to the individual completion functions to
"decide" whether to tell _arguments to do this.

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.


  reply	other threads:[~2014-09-20 18:21 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 [this message]
2014-09-21 16:43                     ` Yuri D'Elia
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=140920112024.ZM29459@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --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).