浏览代码

Fixing virtualenvwrapper plugin for Ubuntu (and Debian)

Ubuntu and Debian store the system-installed virtualenvwrapper in
/etc/bash_completion.d/virtualenvwrapper, so that it gets automatically sourced
at startup in Bash. By not putting it somewhere in $PATH, they end up excluding
others (e.g. Zsh) that might want to use that file. Oops!

The virtualenvwrapper plugin should account for this so that Ubuntu (or Debian)
users don't end up with this message:

zsh virtualenvwrapper plugin: Cannot find virtualenvwrapper.sh. Please install with `pip install virtualenvwrapper`.

even when they have a virtualenvwrapper installed to a known location.
Brandon Sandrowicz 10 年之前
父节点
当前提交
4161aa4f9d
共有 1 个文件被更改,包括 10 次插入3 次删除
  1. 10 3
      plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh

+ 10 - 3
plugins/virtualenvwrapper/virtualenvwrapper.plugin.zsh

@@ -1,12 +1,19 @@
 virtualenvwrapper='virtualenvwrapper.sh'
-if (( $+commands[$virtualenvwrapper] )); then
 
+if (( $+commands[$virtualenvwrapper] )); then
   source ${${virtualenvwrapper}:c}
+elif [[ -f "/etc/bash_completion.d/virtualenvwrapper" ]]; then
+  virtualenvwrapper="/etc/bash_completion.d/virtualenvwrapper"
+  source "/etc/bash_completion.d/virtualenvwrapper"
+else
+  print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}. Please install with \`pip install virtualenvwrapper\`."
+  return
+fi
 
+if type workon 2>&1 >/dev/null; then
   if [[ "$WORKON_HOME" == "" ]]; then
     echo "\$WORKON_HOME is not defined so ZSH plugin virtualenvwrapper will not work"
   else
-
     if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
       # Automatically activate Git projects's virtual environments based on the
       # directory name of the project. Virtual environment name can be overridden
@@ -61,5 +68,5 @@ if (( $+commands[$virtualenvwrapper] )); then
     fi
   fi
 else
-  print "zsh virtualenvwrapper plugin: Cannot find ${virtualenvwrapper}. Please install with \`pip install virtualenvwrapper\`."
+  print "zsh virtualenvwrapper plugin: shell function 'workon' not defined. Please check ${virtualenvwrapper}." >&2
 fi