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

Re: Ignore commands if autocomplete to directory is possible

On Apr 24, 10:41pm, Prateek Agarwal wrote:
} I am using setopt auto_cd. But when autocompleting for directories, i want
} that first preference is to be given to directories than to commands. Which
} means, if directory is present that matches the substring then zsh should
} not search for commands.

Hmm.  Ordinarily you'd do this with the tag-order style like

    # Note this does not actually work
    zstyle ':completion:*:-command-::' tag-order \*-directories

(the "everything else" is implied if no directories match).  However,
this doesn't work for autocd because the _autocd function explicitly
calls _command_names before testing the autocd option and then calling
_cd.  So there's no way to exclude command names with a style in this
context, except by *always* exluding them (which you don't want).

You have two options.

You can replace the _autocd function with this:

    _autocd() { [[ -o autocd ]] && _cd || _command_names }

Or you can use a group-order style:

    zstyle ':completion:*:-command-::' group-order \*-directories

which will cause all the directory names to appear first in the menu,
even though any commands that match will also appear.

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