aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua McKinney2016-06-27 14:42:46 -0500
committerJoshua McKinney2016-06-30 15:43:17 -0500
commitbf4f33790370b7d2eb5d2b4464d6e54f686f31d0 (patch)
treeded49315298f4d03b35da7bdf2154dff86b2823c
parentfc85a6fab67df7b4412d6910ef7a1f6ff1299531 (diff)
downloadbrew-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/_brew13
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