Browse Source

feat(pipenv): add option to disable auto shell feature

Closes #11472
Carlo Sala 8 months ago
parent
commit
079dbff2c4
2 changed files with 34 additions and 19 deletions
  1. 14 1
      plugins/pipenv/README.md
  2. 20 18
      plugins/pipenv/pipenv.plugin.zsh

+ 14 - 1
plugins/pipenv/README.md

@@ -1,6 +1,7 @@
 # Pipenv
 
 ## Installation
+
 In your `.zshrc` file, add `pipenv` to the plugins section
 
 ```
@@ -8,7 +9,9 @@ plugins=(... pipenv ...)
 ```
 
 ## Features
-This plugin provides some features to simplify the use of Pipenv while working on ZSH. 
+
+This plugin provides some features to simplify the use of Pipenv while working on ZSH.
+
 - Adds completion for pipenv
 - Auto activates and deactivates pipenv shell
 - Adds short aliases for common pipenv commands
@@ -27,3 +30,13 @@ This plugin provides some features to simplify the use of Pipenv while working o
   - `pwh` is aliased to `pipenv --where`
   - `pvenv` is aliased to `pipenv --venv`
   - `ppy` is aliased to `pipenv --py`
+
+## Configuration
+
+### Shell activation
+
+If you want to disable the shell activation and deactivation feature, add the following style to your `.zshrc` before sourcing `oh-my-zsh.sh`:
+
+```zsh
+zstyle ':omz:plugins:pipenv' auto-shell no
+```

+ 20 - 18
plugins/pipenv/pipenv.plugin.zsh

@@ -12,28 +12,30 @@ fi
 
 _PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &|
 
-# Automatic pipenv shell activation/deactivation
-_togglePipenvShell() {
-  # deactivate shell if Pipfile doesn't exist and not in a subdir
-  if [[ ! -f "$PWD/Pipfile" ]]; then
-    if [[ "$PIPENV_ACTIVE" == 1 ]]; then
-      if [[ "$PWD" != "$pipfile_dir"* ]]; then
-        exit
+if zstyle -T ':omz:plugins:pipenv' auto-shell; then
+  # Automatic pipenv shell activation/deactivation
+  _togglePipenvShell() {
+    # deactivate shell if Pipfile doesn't exist and not in a subdir
+    if [[ ! -f "$PWD/Pipfile" ]]; then
+      if [[ "$PIPENV_ACTIVE" == 1 ]]; then
+        if [[ "$PWD" != "$pipfile_dir"* ]]; then
+          exit
+        fi
       fi
     fi
-  fi
 
-  # activate the shell if Pipfile exists
-  if [[ "$PIPENV_ACTIVE" != 1 ]]; then
-    if [[ -f "$PWD/Pipfile" ]]; then
-      export pipfile_dir="$PWD"
-      pipenv shell
+    # activate the shell if Pipfile exists
+    if [[ "$PIPENV_ACTIVE" != 1 ]]; then
+      if [[ -f "$PWD/Pipfile" ]]; then
+        export pipfile_dir="$PWD"
+        pipenv shell
+      fi
     fi
-  fi
-}
-autoload -U add-zsh-hook
-add-zsh-hook chpwd _togglePipenvShell
-_togglePipenvShell
+  }
+  autoload -U add-zsh-hook
+  add-zsh-hook chpwd _togglePipenvShell
+  _togglePipenvShell
+fi
 
 # Aliases
 alias pch="pipenv check"