summaryrefslogtreecommitdiff
path: root/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh')
-rw-r--r--plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh21
1 files changed, 16 insertions, 5 deletions
diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 5faa1a823..9fd0d3d8f 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -1,10 +1,18 @@
virtualenvwrapper='virtualenvwrapper.sh'
if (( $+commands[$virtualenvwrapper] )); then
- source ${${virtualenvwrapper}:c}
+ function {
+ setopt local_options
+ unsetopt equals
+ source ${${virtualenvwrapper}:c}
+ }
elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then
- virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper"
- source "/etc/bash_completion.d/virtualenvwrapper"
+ function {
+ setopt local_options
+ unsetopt equals
+ virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper"
+ source "/etc/bash_completion.d/virtualenvwrapper"
+ }
else
print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}.\n"\
"Please install with \`pip install virtualenvwrapper\`" >&2
@@ -29,8 +37,11 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
if [ ! $WORKON_CWD ]; then
WORKON_CWD=1
# Check if this is a Git repo
- PROJECT_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
- if (( $? != 0 )); then
+ PROJECT_ROOT=`pwd`
+ while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" ]]; do
+ PROJECT_ROOT=`realpath $PROJECT_ROOT/..`
+ done
+ if [[ "$PROJECT_ROOT" == "/" ]]; then
PROJECT_ROOT="."
fi
# Check for virtualenv name override