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

Re: command completion

On 2011-08-14 16:56:50 -0700, Bart Schaefer wrote:
> As I said before, it's really got to do with how _autocd insinuates itself
> into the process.
> Autocd makes itself the handler for -command-.  It then calls both
> _command_names and _cd, each of which takes a spin through _alternative,
> so it goes around the _tags loop twice as well.
> If there were only one pass through _alternative, I think you'd get what
> you're looking for; but because there are two passes and there are no
> *additional* completions for the "command" tag added inside _cd, all
> the defaults for _cd get added as well.

OK, but this behavior is a bit strange: if I use

  zstyle ':completion:*:complete:-command-:*' tag-order 'commands'

on my example, then I get:
  % prefix-
  prefix-cmd1  prefix-dir/
from the "dir" directory. And from the parent directory "temp_dir",
prefix[TAB] gives prefix-cmd1 only (i.e. prefix-dir/ has mysteriously
disappeared though it is a cd target).

> So, unfortunately, I don't believe you can get what you want with
> zstyles.  You'll have to rewrite _autocd, something like so:
> #compdef -command-
> _command_names && return 0
> [[ -o autocd ]] && _cd && return 0
> return 1

This works. However wouldn't it be cleaner if there were a specific
tag for autocd?

Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)

Messages sorted by: Reverse Date, Date, Thread, Author