Skip to content

Instantly share code, notes, and snippets.

@xjtu-blacksmith
Created January 12, 2021 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xjtu-blacksmith/b4f5a57b9efba7c8d69444ce66d5970d to your computer and use it in GitHub Desktop.
Save xjtu-blacksmith/b4f5a57b9efba7c8d69444ce66d5970d to your computer and use it in GitHub Desktop.
bash-it: theme Iterate with conda_env_prompt support
#!/usr/bin/env bash
SCM_GIT_CHAR="± "
SCM_HG_CHAR="☿ "
SCM_SVN_CHAR="⑆ "
SCM_NONE_CHAR=""
SCM_THEME_PROMPT_DIRTY=" ${red}✗"
SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓"
SCM_THEME_PROMPT_PREFIX="|"
SCM_THEME_PROMPT_SUFFIX="${green}| "
SCM_GIT_AHEAD_CHAR="${green}+"
SCM_GIT_BEHIND_CHAR="${red}-"
GIT_THEME_PROMPT_DIRTY=" ${bold_red}✗"
GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓"
GIT_THEME_PROMPT_PREFIX="${cyan}|"
GIT_THEME_PROMPT_SUFFIX="${cyan}| "
RVM_THEME_PROMPT_PREFIX="|"
RVM_THEME_PROMPT_SUFFIX="| "
VIRTUALENV_THEME_PROMPT_PREFIX="|"
VIRTUALENV_THEME_PROMPT_SUFFIX="| "
RBENV_THEME_PROMPT_PREFIX="|"
RBENV_THEME_PROMPT_SUFFIX="| "
RBFU_THEME_PROMPT_PREFIX="|"
RBFU_THEME_PROMPT_SUFFIX="| "
CONDAENV_THEME_PROMPT_PREFIX="(conda: "
CONDAENV_THEME_PROMPT_SUFFIX=") "
function rvm_version_prompt {
if which rvm &> /dev/null; then
rvm_current=$(rvm tools identifier) || return
rvm_default=$(rvm strings default) || return
[ "$rvm_current" != "$rvm_default" ] && ( echo -e "$RVM_THEME_PROMPT_PREFIX$rvm_current$RVM_THEME_PROMPT_SUFFIX" )
fi
}
function git_prompt_info {
git_prompt_vars
echo -e "$SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_GIT_AHEAD$SCM_GIT_BEHIND$SCM_GIT_STASH$SCM_SUFFIX"
}
function conda_env_prompt {
if [ -n "$CONDA_DEFAULT_ENV" ]; then
echo -e "$CONDAENV_THEME_PROMPT_PREFIX$CONDA_DEFAULT_ENV$CONDAENV_THEME_PROMPT_SUFFIX"
fi
}
LAST_PROMPT=""
function prompt_command() {
local new_PS1="${bold_cyan}$(scm_char)${yellow}$(ruby_version_prompt)${green}\w $(scm_prompt_info)"
local new_prompt=$(PS1="$new_PS1" "$BASH" --norc -i </dev/null 2>&1 | sed -n '${s/^\(.*\)exit$/\1/p;}')
if [ "$LAST_PROMPT" = "$new_prompt" ]; then
new_PS1=""
else
LAST_PROMPT="$new_prompt"
fi
local wrap_char=""
[[ $COLUMNS && ${#new_PS1} > $(($COLUMNS/1)) ]] && wrap_char="\n"
PS1="${new_PS1}${red}$(conda_env_prompt)${green}${wrap_char}→${reset_color} "
}
safe_append_prompt_command prompt_command
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment