Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH] remote files completion: remove double-escaping
On Wed, Apr 10, 2024 at 12:47 PM Lyn Fugmann <me@xxxxxxxx> wrote:
>
> Removes the double escaping in the remote files completion. This affects rsync and scp.
> For example, instead of a space character in a remote filename turning into `\\\ `, it will now correctly turn into `\ `.
> While scp apparently works with either one, rsync requires the latter since version 3.2.4[1] (unless the legacy behavior is explicitly enabled).
> This has been a problem for almost two years now.
This should probably be behind a zstyle (I guess it's fine if it
defaults to the new behavior), as currently this patch will break
completion for older versions of scp and rsync. That way users can
easily configure it per command or globally if they want.
> diff --git a/Completion/Unix/Type/_remote_files b/Completion/Unix/Type/_remote_files
> index 93e1b7f43..4d4a7abbf 100644
> --- a/Completion/Unix/Type/_remote_files
> +++ b/Completion/Unix/Type/_remote_files
> @@ -60,10 +60,7 @@ if zstyle -T ":completion:${curcontext}:files" remote-access; then
> dirprefix=${dir}/
> fi
>
> - if [[ -z $QIPREFIX ]]
> - then rempat="${dirprefix}${PREFIX%%[^./][^/]#}\*"
> - else rempat="${dirprefix}${(q)PREFIX%%[^./][^/]#}\*"
> - fi
> + rempat="${dirprefix}${(q)PREFIX%%[^./][^/]#}\*"
>
> # remote filenames
> remfiles=(${(M)${(f)"$(
> @@ -92,9 +89,9 @@ if zstyle -T ":completion:${curcontext}:files" remote-access; then
> while _tags; do
> while _next_label remote-files expl ${suf:-remote directory}; do
> [[ -n $suf ]] &&
> - compadd "$args[@]" "$expl[@]" -d remdispf -- ${(q)remdispf%[*=|]} && ret=0
> + compadd "$args[@]" "$expl[@]" -d remdispf -- ${remdispf%[*=|]} && ret=0
> compadd ${suf:+-S/} $autoremove "$args[@]" "$expl[@]" -d remdispd \
> - -- ${(q)remdispd%/} && ret=0
> + -- ${remdispd%/} && ret=0
> done
> (( ret )) || return 0
> done
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author