From: Oliver Kiddle <okiddle@yahoo.co.uk>
To: Yoshio Hanawa <y@hnw.jp>
Cc: zsh-workers@zsh.org
Subject: Re: Unexpected behavior for completion funcion _remote_files()
Date: Tue, 06 Sep 2016 17:55:59 +0200 [thread overview]
Message-ID: <95820.1473177359@hydra.kiddle.eu> (raw)
In-Reply-To: <CA+JhjB_Ry--Va9-Vz4z_6V7iEeEpJ2UbdAsFJFPe7vYcknB60A@mail.gmail.com>
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
next prev parent reply other threads:[~2016-09-06 16:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-06 14:34 Yoshio Hanawa
2016-09-06 15:55 ` Oliver Kiddle [this message]
2016-09-06 17:26 ` Yoshio Hanawa
2016-09-06 22:16 ` Daniel Shahaf
2016-09-12 15:30 ` Oliver Kiddle
2016-11-03 14:59 ` Daniel Shahaf
2016-11-03 15:37 ` 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=95820.1473177359@hydra.kiddle.eu \
--to=okiddle@yahoo.co.uk \
--cc=y@hnw.jp \
--cc=zsh-workers@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).