zsh-workers
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Lyn Fugmann <me@fugi.dev>
Cc: zsh-workers@zsh.org
Subject: Re: [PATCH] remote files completion: remove double-escaping
Date: Wed, 10 Apr 2024 20:45:24 +0200	[thread overview]
Message-ID: <CAHYJk3STBU_bwhferLZpuTn=ZmogtF5011BfhUq6zPGnoZMMwQ@mail.gmail.com> (raw)
In-Reply-To: <f000d5f5-05b0-47b7-af61-904ff9781f8e@fugi.dev>

On Wed, Apr 10, 2024 at 12:47 PM Lyn Fugmann <me@fugi.dev> 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


  reply	other threads:[~2024-04-10 18:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-10 10:46 Lyn Fugmann
2024-04-10 18:45 ` Mikael Magnusson [this message]
2024-04-12 18:59   ` 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='CAHYJk3STBU_bwhferLZpuTn=ZmogtF5011BfhUq6zPGnoZMMwQ@mail.gmail.com' \
    --to=mikachu@gmail.com \
    --cc=me@fugi.dev \
    --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).