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.zsh9
1 files changed, 5 insertions, 4 deletions
diff --git a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
index 9fd0d3d8f..f5f37ff6f 100644
--- a/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
+++ b/plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh
@@ -30,16 +30,17 @@ if [[ "$WORKON_HOME" == "" ]]; then
fi
if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
- # Automatically activate Git projects's virtual environments based on the
+ # Automatically activate Git projects' virtual environments based on the
# directory name of the project. Virtual environment name can be overridden
# by placing a .venv file in the project root with a virtualenv name in it
function workon_cwd {
if [ ! $WORKON_CWD ]; then
WORKON_CWD=1
# Check if this is a Git repo
- PROJECT_ROOT=`pwd`
+ # Get absolute path, resolving symlinks
+ PROJECT_ROOT="${PWD:A}"
while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" ]]; do
- PROJECT_ROOT=`realpath $PROJECT_ROOT/..`
+ PROJECT_ROOT="${PROJECT_ROOT:h}"
done
if [[ "$PROJECT_ROOT" == "/" ]]; then
PROJECT_ROOT="."
@@ -50,7 +51,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
elif [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]];then
ENV_NAME="$PROJECT_ROOT/.venv"
elif [[ "$PROJECT_ROOT" != "." ]]; then
- ENV_NAME=`basename "$PROJECT_ROOT"`
+ ENV_NAME="${PROJECT_ROOT:t}"
else
ENV_NAME=""
fi