Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Path with spaces in _canonical_paths




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