From df248e60e5ecdca2f8f0e9ed49acc655127485a7 Mon Sep 17 00:00:00 2001 From: Patrik Fimml Date: Mon, 15 Oct 2018 18:15:12 +0200 Subject: [PATCH] Don't override zsh users' compinit options. I call "compinit -i" in my .zshrc, to allow loading autocompletion from "unsafe" locations. envsetup.sh breaks that. Change behavior to only call compinit if bash-style completion is not already enabled. This is a minimal fix; an alternative would be to rely on the user to call 'bashcompinit' in their .zshrc instead, and just skip all autocomplete functionality if they don't. Test: manual - source ./envsetup.sh in {bash, zsh, zsh -f} and test completion for lunch Change-Id: Ibb10eb68a96d69c19b9db9b21e0546fe8ae299b2 --- envsetup.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/envsetup.sh b/envsetup.sh index 4579beffc1..a4d950e81e 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -1574,9 +1574,12 @@ function atest() } # Zsh needs bashcompinit called to support bash-style completion. -function add_zsh_completion() { - autoload -U compinit && compinit - autoload -U bashcompinit && bashcompinit +function enable_zsh_completion() { + # Don't override user's options if bash-style completion is already enabled. + if ! declare -f complete >/dev/null; then + autoload -U compinit && compinit + autoload -U bashcompinit && bashcompinit + fi } function validate_current_shell() { @@ -1587,7 +1590,7 @@ function validate_current_shell() { ;; *zsh*) function check_type() { type "$1"; } - add_zsh_completion ;; + enable_zsh_completion ;; *) echo -e "WARNING: Only bash and zsh are supported.\nUse of other shell would lead to erroneous results." ;;