aboutsummaryrefslogtreecommitdiff
path: root/.config/shell/git-prompts/kj_sh604.zsh
diff options
context:
space:
mode:
Diffstat (limited to '.config/shell/git-prompts/kj_sh604.zsh')
-rw-r--r--.config/shell/git-prompts/kj_sh604.zsh70
1 files changed, 70 insertions, 0 deletions
diff --git a/.config/shell/git-prompts/kj_sh604.zsh b/.config/shell/git-prompts/kj_sh604.zsh
new file mode 100644
index 0000000..0bbe030
--- /dev/null
+++ b/.config/shell/git-prompts/kj_sh604.zsh
@@ -0,0 +1,70 @@
+# Name: [Pure](https://github.com/sindresorhus/pure) clone
+# Description:
+# This clone of the Pure prompt has support for Python virtualenvs, but none of the timing
+# features or a vi mode. If you are using [fzf](https://github.com/junegunn/fzf), source the
+# example after sourcing fzf's keybindings.
+#
+# If you want to try other examples again after sourcing the Pure example, you might have to
+# restart your shell, because this prompt will always print a newline between prompts.
+
+ZSH_GIT_PROMPT_FORCE_BLANK=1
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="yes"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_no_bold[white]%}("
+ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg_no_bold[white]%}) "
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" "
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_no_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_no_bold[magenta]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SYMBOL="%{$fg_bold[yellow]%}^ "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_PREFIX="%{$fg[red]%}(%{$fg[yellow]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SUFFIX="%{$fg[red]%})"
+ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg_no_bold[white]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[white]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}x"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[yellow]%}•"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[blue]%}+"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[blue]%}U"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}☐"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓"
+
+# In the second line of the prompt $psvar[12] is read
+PROMPT=$'%F{cyan}%~%f %F{242}$(gitprompt)%f%(12V.%F{242}%12v%f .)%(?.%F{white}.%F{red})%%%f '
+
+setup() {
+ [[ -n $_PROMPT_INITIALIZED ]] && return
+ _PROMPT_INITIALIZED=1
+
+ # Prevent Python virtualenv from modifying the prompt
+ export VIRTUAL_ENV_DISABLE_PROMPT=1
+
+ # Set $psvar[12] to the current Python virtualenv
+ function _prompt_update_venv() {
+ psvar[12]=
+ if [[ -n $VIRTUAL_ENV ]] && [[ -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then
+ psvar[12]="${VIRTUAL_ENV:t}"
+ fi
+ }
+ add-zsh-hook precmd _prompt_update_venv
+
+ # Draw a newline between every prompt
+ function _prompt_newline(){
+ if [[ -z "$_PROMPT_NEWLINE" ]]; then
+ _PROMPT_NEWLINE=1
+ elif [[ -n "$_PROMPT_NEWLINE" ]]; then
+ echo
+ fi
+ }
+ add-zsh-hook precmd _prompt_newline
+
+ # To avoid glitching with fzf's alt+c binding we override the fzf-redraw-prompt widget.
+ # The widget by default reruns all precmd hooks, which prints the newline again.
+ # We therefore run all precmd hooks except _prompt_newline.
+ function fzf-redraw-prompt() {
+ local precmd
+ for precmd in ${precmd_functions:#_prompt_newline}; do
+ $precmd
+ done
+ zle reset-prompt
+ }
+}
+setup