Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Unexpected behavior for completion funcion _remote_files()
- X-seq: zsh-workers 39200
- From: Yoshio Hanawa <y@xxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: Unexpected behavior for completion funcion _remote_files()
- Date: Wed, 7 Sep 2016 02:26:28 +0900
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hnw-jp.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=BYmZa1xuAXR+TnUNMxDj58kjOA5hHZ535DcMvlZXwqY=; b=QUPzJHLSaf6m4Cc0opvmv6paKIwrXhR9Aa/Ph0Ac7fBTJG6u6hmoOTQ+uXnL934gYQ VxU8Nea7lT+tA7rskeQYsAyjEyGqhvYNtfI+nsbTL6qSwj1NtgW5HZCj3Q/2TYMcQuY+ L9kffRXd4aoPr+ZitgE/9ztI785jUT5X8VFgveCShHRdMNrvs0vtx8DWILX18/GGOIrD 6mEtqCOOYoesthb25hloTbhQ3NiIaeJlWM99Mqw9N07W9w8MqVPixbHLcJFmhlUXRawE gXQ5XroFagEpJDU5gpgyLdcD4i/tbdB54vOurHKIYEib7O9Lt23D8Qvqn3gHHaJyMUhX g7gg==
- In-reply-to: <95820.1473177359@hydra.kiddle.eu>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <CA+JhjB_Ry--Va9-Vz4z_6V7iEeEpJ2UbdAsFJFPe7vYcknB60A@mail.gmail.com> <95820.1473177359@hydra.kiddle.eu>
Hi.
> Ideally, any extra options from before -- should be passed on.
I understood your intention well.
> Could you perhaps try the following?
Your patch works fine with 'docker exec ...'.
I also check '_remote_files -x foobar -- docker exec ..',
it works as expected.
Thank you so much.
2016-09-07 0:55 GMT+09:00 Oliver Kiddle <okiddle@xxxxxxxxxxx>:
> Yoshio Hanawa wrote:
> > When I tried Zsh completion funcion _remote_files with 'docker exec
> ...', I
> > found the command line options for _remote_files (in this case, 'exec
> ...')
> > are passed directly to compadd. I think it's unexpected behavior.
>
> Yes, _remote_files shouldn't pass options that come after -- to compadd.
> Thanks for the report.
>
> > "$@" in compadd arguments seems to be unnecessary, so should simply be
> > removed.
>
> Ideally, any extra options from before -- should be passed on.
> At the very least it should allow for them being there - currently, just
> using
> _wanted with _remote_files fails. Using this would allow docker
> completion to override the description given with the files if 'remote
> file' is not applicable.
>
> > The following patch works fine on my environment.
>
> Could you perhaps try the following? I don't have docker so have only
> tested this with ssh.
>
> Thanks
>
> Oliver
>
> diff --git a/Completion/Unix/Type/_remote_files b/Completion/Unix/Type/_
> remote_files
> index db33164..54bd438 100644
> --- a/Completion/Unix/Type/_remote_files
> +++ b/Completion/Unix/Type/_remote_files
> @@ -28,16 +28,19 @@
>
>
> # There should be coloring based on all the different ls -F classifiers.
> -local expl rempat remfiles remdispf remdispd args cmd cmd_args suf ret=1
> +local expl rempat remfiles remdispf remdispd args cmd suf ret=1
> +local -a args cmd_args
> local glob host
>
> if zstyle -T ":completion:${curcontext}:files" remote-access; then
>
> # Parse options to _remote_files. Stops at the first "--".
> zparseopts -D -E -a args / g:=glob h:=host
> - shift
> (( $#host)) && shift host || host="${IPREFIX%:}"
>
> + args=( ${argv[1,(I)--]} )
> + shift ${#args}
> + args[-1]=()
> # Command to run on the remote system.
> cmd="$1"
> shift
> @@ -45,9 +48,9 @@ if zstyle -T ":completion:${curcontext}:files"
> remote-access; then
> # Handle arguments to ssh.
> if [[ $cmd == ssh ]]; then
> zparseopts -D -E -a cmd_args p: 1 2 4 6 F:
> - cmd_args="-o BatchMode=yes $cmd_args -a -x"
> + cmd_args=( -o BatchMode=yes "$cmd_args[@]" -a -x )
> else
> - cmd_args="$@"
> + cmd_args=( "$@" )
> fi
>
> if [[ -z $QIPREFIX ]]
> @@ -74,8 +77,8 @@ if zstyle -T ":completion:${curcontext}:files"
> remote-access; then
> while _tags; do
> while _next_label files expl ${suf:-remote directory}; do
> [[ -n $suf ]] &&
> - compadd "$@" "$expl[@]" -d remdispf ${(q)remdispf%[*=|]} &&
> ret=0
> - compadd ${suf:+-S/} -r "/ \t\n\-" "$@" "$expl[@]" -d remdispd \
> + compadd "$args[@]" "$expl[@]" -d remdispf ${(q)remdispf%[*=|]}
> && ret=0
> + compadd ${suf:+-S/} -r "/ \t\n\-" "$args[@]" "$expl[@]" -d remdispd
> \
> ${(q)remdispd%/} && ret=0
> done
> (( ret )) || return 0
>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author