Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Path with spaces in _canonical_paths
- X-seq: zsh-workers 51014
- From: thomas@xxxxxxxxxx
- To: zsh-workers@xxxxxxx
- Subject: Re: Path with spaces in _canonical_paths
- Date: Mon, 21 Nov 2022 11:47:48 +0100
- Archived-at: <https://zsh.org/workers/51014>
- In-reply-to: <CAH+w=7ZBYX3-X2AD_iDR6T4Yz8OdA1TE+YeC2qZmHdk+W=VbgA@mail.gmail.com>
- List-id: <zsh-workers.zsh.org>
- References: <sympa.1668791373.628329.85325.773@zsh.org> <CAH+w=7ZBYX3-X2AD_iDR6T4Yz8OdA1TE+YeC2qZmHdk+W=VbgA@mail.gmail.com>
I'm not able to reproduce this using nothing but compinit plus the
compdef above. I get just one completion, "/tmp/My\ File", regardless
of whether that file exists or not.
Try this:
debug_canonical_paths () {
_canonical_paths -N files files /tmp/My\ File
}
compdef '_complete_debug debug_canonical_paths' cmd
Thanks for your answer! I can't reproduce with the minimal example
anymore either.
However, I still get similar behaviour by first doing:
sudo ln -s /tmp /foo
And then, same as before (with or without debug, with or without extra
function, with or without -N):
debug_canonical_paths () {
_canonical_paths -N files files /tmp/My\ File
}
compdef '_complete_debug debug_canonical_paths' cmd
cmd <Tab><Tab>
Results in:
/foo/My File
/tmp/My\ File
This is with blank zsh configuration `zsh -f` plus:
autoload -U compinit; compinit
> Pressing TAB then drops a file in /tmp with a debug trace of the
> execution of _canonical_paths. In particular look at which "zstyle"
> lookups are being done and which of those might be causing the extra
> entries. You can also look at the context around elements being added
> to the "matches" array.
The trace shows:
+_canonical_paths_add_paths:19> '(anon)'
[...]
+(anon):3> matches+=( '/tmp/My\ File' )
but later:
+_canonical_paths_add_paths:28> matches+=( '/foo/My File' )
which explains why `compadd -Q` handles those differently. So the
different unintended behaviour seems to appear only in the "alternative"
paths.
I originally encountered this behaviour with a file in
/var/run/media/thomas/ which is symlinked to /media on my system. I get
the same problem with files in /usr/bin/ which has several symlinks
/usr/sbin/, /bin, /sbin on archlinux.
I suspect when I previously also got a similar behaviour with my
original minimal example without the symlink, there might have been
tmpfs remounts or something(?), not sure what has changed, I did reboot
in between.
Best, Thomas
Messages sorted by:
Reverse Date,
Date,
Thread,
Author