Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Path with spaces in _canonical_paths
On Wed, Nov 23, 2022 at 2:24 PM Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
>
> Yes. That's why the comment says s/$origpref/$canpref/ rather than
> s/$canpref/$origpref/ as the code in HEAD says.
Ah, I see. The comment is explaining what the else-branch OUGHT to be
accomplishing, rather than what it actually IS doing. That was not
clear.
> I'm not sure off the top of my head. Perhaps that patch needs an extra
> ${(q)} somewhere? Or perhaps we should add -Q to the if() codepath?
> What do callers expect?
Callers expect it in the form from the if-branch (what compadd
produces), so I think the else-branch needs some variant of (q).
Thomas, can you try this?
diff --git a/Completion/Unix/Type/_canonical_paths
b/Completion/Unix/Type/_canonical_paths
index a8fbbb524..1444bc165 100644
--- a/Completion/Unix/Type/_canonical_paths
+++ b/Completion/Unix/Type/_canonical_paths
@@ -42,7 +42,8 @@ _canonical_paths_add_paths () {
# ### Ideally, this codepath would do what the 'if' above does,
# ### but telling compadd to pretend the "word on the command line"
# ### is ${"the word on the command line"/$origpref/$canpref}.
- matches+=(${${(M)files:#$canpref*}/$canpref/$origpref})
+ # ### The following approximates that.
+ matches+=(${(q)${(M)files:#$canpref*}/$canpref/$origpref})
fi
for subdir in $expref?*(@); do
Messages sorted by:
Reverse Date,
Date,
Thread,
Author