diff options
| author | Joshua McKinney | 2016-06-27 14:42:46 -0500 |
|---|---|---|
| committer | Joshua McKinney | 2016-06-30 15:43:17 -0500 |
| commit | bf4f33790370b7d2eb5d2b4464d6e54f686f31d0 (patch) | |
| tree | ded49315298f4d03b35da7bdf2154dff86b2823c | |
| parent | fc85a6fab67df7b4412d6910ef7a1f6ff1299531 (diff) | |
| download | brew-bf4f33790370b7d2eb5d2b4464d6e54f686f31d0.tar.bz2 | |
Call subcommands from zsh completion
This change is inspired by the way that the git zsh completions work by foisting
the responsibility for sub commands onto the command themselves.
It is paired with another change that takes the oh-my-zsh brew cask plugin and
makes it into a first class completion rather than it overriding this.
This change requires fixes in brew, oh-my-zsh and the zsh-completions, and will
likely cause the brew cask completions to break until these have been fully
accepted into each project.
| -rw-r--r-- | share/zsh/site-functions/_brew | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/share/zsh/site-functions/_brew b/share/zsh/site-functions/_brew index 57b07d1cc..8fd49da38 100644 --- a/share/zsh/site-functions/_brew +++ b/share/zsh/site-functions/_brew @@ -2,8 +2,6 @@ #autoload # Brew ZSH completion function -# -# altered from _fink _brew_all_formulae() { formulae=(`brew search`) @@ -29,6 +27,12 @@ _brew_outdated_formulae() { outdated_formulae=(`brew outdated`) } +__brew_command() { + local command="$1" + local completion_func="_brew_${command//-/_}" + declare -f "$completion_func" >/dev/null && "$completion_func" && return +} + local -a _1st_arguments _1st_arguments=( 'audit:check formulae for Homebrew coding style' @@ -95,7 +99,8 @@ if (( CURRENT == 1 )); then return fi -case "$words[1]" in +local command="$words[1]" +case "$command" in analytics) compadd on off state regenerate-uuid ;; install|reinstall|audit|home|homepage|log|info|abv|uses|cat|deps|desc|edit|options|switch) _brew_all_formulae @@ -145,4 +150,6 @@ case "$words[1]" in _brew_outdated_formulae _wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae fi ;; + *) + __brew_command "$command" ;; esac |
