Browse Source

feat(conda-env): add plugin for conda prompt display (#10619)

Co-authored-by: Jeonguk Choi <91456421+devj121@users.noreply.github.com>
Jeonguk Choi 9 months ago
parent
commit
70cfff448d

+ 1 - 0
lib/prompt_info_functions.zsh

@@ -20,6 +20,7 @@ function chruby_prompt_info \
   jenv_prompt_info \
   azure_prompt_info \
   tf_prompt_info \
+  conda_prompt_info \
 {
   return 1
 }

+ 44 - 0
plugins/conda-env/README.md

@@ -0,0 +1,44 @@
+# conda-env
+
+The plugin displays information of the created virtual container of conda and allows background theming.
+
+To use it, add `conda-env` to the plugins array of your zshrc file:
+```
+plugins=(... conda-env)
+```
+
+The plugin creates a `conda_prompt_info` function that you can use in your theme, which displays the
+basename of the current `$CONDA_DEFAULT_ENV`.
+
+You can use this prompt function in your themes, by adding it to the `PROMPT` or `RPROMPT` variables. See [Example](#example) for more information.
+
+## Settings
+
+It uses two variables to control how the information is shown:
+
+- `ZSH_THEME_CONDA_PREFIX`: sets the prefix of the CONDA_DEFAULT_ENV.
+Defaults to `[`.
+
+- `ZSH_THEME_CONDA_SUFFIX`: sets the suffix of the CONDA_DEFAULT_ENV.
+Defaults to `]`.
+
+## Example
+
+```sh
+ZSH_THEME_CONDA_PREFIX='conda:%F{green}'
+ZSH_THEME_CONDA_SUFFIX='%f'
+RPROMPT='$(conda_prompt_info)'
+```
+
+## `CONDA_CHANGEPS1`
+
+This plugin also automatically sets the `CONDA_CHANGEPS1` variable to `false` to avoid conda changing the prompt
+automatically. This has the same effect as running `conda config --set changeps1 false`.
+
+You can override this behavior by adding `unset CONDA_CHANGEPS1` in your `.zshrc` file, after Oh My Zsh has been
+sourced.
+
+References:
+
+- https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#determining-your-current-environment
+- https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#precedence

+ 9 - 0
plugins/conda-env/conda-env.plugin.zsh

@@ -0,0 +1,9 @@
+function conda_prompt_info(){
+  [[ -n ${CONDA_DEFAULT_ENV} ]] || return
+  echo "${ZSH_THEME_CONDA_PREFIX=[}${CONDA_DEFAULT_ENV:t:gs/%/%%}${ZSH_THEME_CONDA_SUFFIX=]}"
+}
+
+# Has the same effect as `conda config --set changeps1 false`
+# - https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#determining-your-current-environment
+# - https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#precedence
+export CONDA_CHANGEPS1=false