aboutsummaryrefslogtreecommitdiff
path: root/.config/shell/git-prompt_examples
diff options
context:
space:
mode:
Diffstat (limited to '.config/shell/git-prompt_examples')
-rw-r--r--.config/shell/git-prompt_examples/ascii.zsh25
-rw-r--r--.config/shell/git-prompt_examples/bashgitprompt.zsh28
-rw-r--r--.config/shell/git-prompt_examples/compact.zsh24
-rw-r--r--.config/shell/git-prompt_examples/default.zsh25
-rw-r--r--.config/shell/git-prompt_examples/kj_sh604.zsh70
-rw-r--r--.config/shell/git-prompt_examples/multiline.zsh24
-rw-r--r--.config/shell/git-prompt_examples/pure.zsh74
-rw-r--r--.config/shell/git-prompt_examples/rprompt.zsh24
-rw-r--r--.config/shell/git-prompt_examples/wprompt.zsh97
9 files changed, 391 insertions, 0 deletions
diff --git a/.config/shell/git-prompt_examples/ascii.zsh b/.config/shell/git-prompt_examples/ascii.zsh
new file mode 100644
index 0000000..986d08c
--- /dev/null
+++ b/.config/shell/git-prompt_examples/ascii.zsh
@@ -0,0 +1,25 @@
+# Name: Ascii
+# Description: A prompt using only ASCII characters.
+
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="no"
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" "
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" "
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_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[red]%}v"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg[green]%}^"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}x"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}o"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}+"
+ZSH_THEME_GIT_PROMPT_UNTRACKED=".."
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}$"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}>"
+
+PROMPT='%B%40<..<%~%b$(gitprompt)'
+PROMPT+='%(?.%(!.%F{yellow}.%F{green})>%f.%F{red}>%f) '
+RPROMPT=''
diff --git a/.config/shell/git-prompt_examples/bashgitprompt.zsh b/.config/shell/git-prompt_examples/bashgitprompt.zsh
new file mode 100644
index 0000000..0e2018f
--- /dev/null
+++ b/.config/shell/git-prompt_examples/bashgitprompt.zsh
@@ -0,0 +1,28 @@
+# Name: [bash-git-prompt](https://github.com/magicmonty/bash-git-prompt) clone
+# Description:
+# This example mimics the [bash-git-prompt](https://github.com/magicmonty/bash-git-prompt)
+# informative git prompt for bash.
+
+ZSH_GIT_PROMPT_FORCE_BLANK=1
+ZSH_GIT_PROMPT_SHOW_STASH=1
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="symbol"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%B %b["
+ZSH_THEME_GIT_PROMPT_SUFFIX="]"
+ZSH_THEME_GIT_PROMPT_SEPARATOR="|"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg[magenta]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SYMBOL=" %{$fg_bold[yellow]%}⟳ "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_PREFIX="%{$fg[yellow]%} ⤳ "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_no_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg_no_bold[cyan]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}āœ”"
+
+PROMPT=$'%(?..%F{red}%?%f Ā· )%F{yellow}%B%~%b%F{white}$(gitprompt)\n%D{%H:%M} $ '
+RPROMPT=''
diff --git a/.config/shell/git-prompt_examples/compact.zsh b/.config/shell/git-prompt_examples/compact.zsh
new file mode 100644
index 0000000..13a9336
--- /dev/null
+++ b/.config/shell/git-prompt_examples/compact.zsh
@@ -0,0 +1,24 @@
+# Name: Compact
+
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="no"
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" "
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_SEPARATOR="|"
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_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="↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}āœ”"
+
+PROMPT='%B%40<..<%~%b$(gitprompt)'
+PROMPT+='%(?.%(!.%F{yellow}.%F{green}).%F{red})āÆ%f '
+RPROMPT=''
diff --git a/.config/shell/git-prompt_examples/default.zsh b/.config/shell/git-prompt_examples/default.zsh
new file mode 100644
index 0000000..d7a3721
--- /dev/null
+++ b/.config/shell/git-prompt_examples/default.zsh
@@ -0,0 +1,25 @@
+# Name: Default
+# Description: Same as shown in [screenshot.svg](../screenshot.svg).
+
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="no"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="["
+ZSH_THEME_GIT_PROMPT_SUFFIX="] "
+ZSH_THEME_GIT_PROMPT_SEPARATOR="|"
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_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="↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}āœ”"
+
+PROMPT='%B%40<..<%~ %b$(gitprompt)'
+PROMPT+='%(?.%(!.%F{white}āÆ%F{yellow}āÆ%F{red}.%F{blue}āÆ%F{cyan}āÆ%F{green})āÆ.%F{red}āÆāÆāÆ)%f '
+RPROMPT=''
diff --git a/.config/shell/git-prompt_examples/kj_sh604.zsh b/.config/shell/git-prompt_examples/kj_sh604.zsh
new file mode 100644
index 0000000..05bc937
--- /dev/null
+++ b/.config/shell/git-prompt_examples/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[red]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[red]%}↑"
+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
diff --git a/.config/shell/git-prompt_examples/multiline.zsh b/.config/shell/git-prompt_examples/multiline.zsh
new file mode 100644
index 0000000..bc722a3
--- /dev/null
+++ b/.config/shell/git-prompt_examples/multiline.zsh
@@ -0,0 +1,24 @@
+# Name: Multi-line prompt
+
+ZSH_GIT_PROMPT_FORCE_BLANK=1
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="full"
+
+ZSH_THEME_GIT_PROMPT_PREFIX="%B Ā· %b"
+ZSH_THEME_GIT_PROMPT_SUFFIX="›"
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" ‹"
+ZSH_THEME_GIT_PROMPT_BRANCH="āŽ‡ %{$fg_bold[cyan]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SYMBOL="%{$fg_bold[yellow]%}⟳ "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_PREFIX="%{$fg[yellow]%} ⤳ "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_no_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg_no_bold[cyan]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}āœ”"
+
+PROMPT=$'ā”ā•ø%(?..%F{red}%?%f Ā· )%B%~%b$(gitprompt)\n┗╸%F{blue}āÆ%f%F{cyan}āÆ%f%F{green}āÆ%f '
+RPROMPT=''
diff --git a/.config/shell/git-prompt_examples/pure.zsh b/.config/shell/git-prompt_examples/pure.zsh
new file mode 100644
index 0000000..e71c7ab
--- /dev/null
+++ b/.config/shell/git-prompt_examples/pure.zsh
@@ -0,0 +1,74 @@
+# 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="no"
+
+ZSH_THEME_GIT_PROMPT_PREFIX=""
+ZSH_THEME_GIT_PROMPT_SUFFIX=" "
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" "
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_no_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_no_bold[grey]%}"
+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[cyan]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+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{blue}%~%f %F{242}$(gitprompt)%f
+%(12V.%F{242}%12v%f .)%(?.%F{magenta}.%F{red})āÆ%f '
+
+RPROMPT=''
+
+
+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
diff --git a/.config/shell/git-prompt_examples/rprompt.zsh b/.config/shell/git-prompt_examples/rprompt.zsh
new file mode 100644
index 0000000..09d95b7
--- /dev/null
+++ b/.config/shell/git-prompt_examples/rprompt.zsh
@@ -0,0 +1,24 @@
+# Name: Git status on the right
+
+ZSH_GIT_PROMPT_FORCE_BLANK=1
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="symbol"
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg_bold[default]%}≺ "
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" "
+ZSH_THEME_GIT_PROMPT_DETACHED="%{$fg_no_bold[cyan]%}:"
+ZSH_THEME_GIT_PROMPT_BRANCH="%{$fg_no_bold[grey]%}"
+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[cyan]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[cyan]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}āœ”"
+
+PROMPT='%B%~%b %F{blue}≻≻≻%f '
+RPROMPT='$(gitprompt)'
diff --git a/.config/shell/git-prompt_examples/wprompt.zsh b/.config/shell/git-prompt_examples/wprompt.zsh
new file mode 100644
index 0000000..b6232fa
--- /dev/null
+++ b/.config/shell/git-prompt_examples/wprompt.zsh
@@ -0,0 +1,97 @@
+# Name: Woefe's prompt (wprompt)
+# Description:
+# The wprompt example is similar to the multi-line and Pure examples, but with optional
+# [vi-mode](https://github.com/woefe/vi-mode.zsh) and the secondary prompt enabled.
+#
+# - Depends on [Font Awesome](https://fontawesome.com/)
+# - Optionally depends on [vi-mode](https://github.com/woefe/vi-mode.zsh)
+# - Source this example after fzf and after loading
+# [vi-mode](https://github.com/woefe/vi-mode.zsh)
+#
+# If you want to try other examples again after sourcing this 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_ENABLE_SECONDARY=1
+ZSH_GIT_PROMPT_SHOW_UPSTREAM="notracking"
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" Ā· "
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_SEPARATOR=" Ā· "
+ZSH_THEME_GIT_PROMPT_BRANCH="āŽ‡ %{$fg_bold[cyan]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SYMBOL="%{$fg_bold[green]%} "
+ZSH_THEME_GIT_PROMPT_UPSTREAM_NO_TRACKING="%{$fg_bold[red]%}!"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_PREFIX="%{$fg[red]%}(%{$fg[yellow]%}"
+ZSH_THEME_GIT_PROMPT_UPSTREAM_SUFFIX="%{$fg[red]%})"
+ZSH_THEME_GIT_PROMPT_DETACHED="@%{$fg_no_bold[cyan]%}"
+ZSH_THEME_GIT_PROMPT_BEHIND="%{$fg_no_bold[red]%}↓"
+ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_no_bold[green]%}↑"
+ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[red]%}āœ–"
+ZSH_THEME_GIT_PROMPT_STAGED="%{$fg[green]%}ā—"
+ZSH_THEME_GIT_PROMPT_UNSTAGED="%{$fg[red]%}✚"
+ZSH_THEME_GIT_PROMPT_UNTRACKED="…"
+ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}āš‘"
+ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}ļ€Œ "
+ZSH_THEME_GIT_PROMPT_TAGS_PREFIX=" Ā·  "
+
+RPROMPT=''
+PROMPT=$'ā”ā•ø'
+[ -n "$SSH_CLIENT" ] \
+ && [ -n "$SSH_TTY" ] \
+ && PROMPT+='%B%F{blue}@%m%f%b Ā· ' # Hostname, if in SSH session
+PROMPT+='%B%30<..<%~%b%<<' # Path truncated to 30 characters
+PROMPT+='%(12V. Ā· %F{244}ļ¢ %12v%f.)' # Python virtualenv name
+PROMPT+='$(gitprompt)' # Git status
+PROMPT+='$(gitprompt_secondary)' # Git status secondary info
+PROMPT+=$'\n┗╸' # Newline
+
+_WPROMPT_END='%(?.%(!.%F{white}āÆ%F{yellow}āÆ%F{red}.%F{blue}āÆ%F{cyan}āÆ%F{green})āÆ%f.%F{red}āÆāÆāÆ%f) '
+# Vi mode indicator, if github.com/woefe/vi-mode.zsh is loaded
+if (( $+functions[vi_mode_status] )); then
+ VI_INSERT_MODE_INDICATOR=$_WPROMPT_END
+ VI_NORMAL_MODE_INDICATOR=${_WPROMPT_END//āÆ/•}
+
+ PROMPT+='$(vi_mode_status)'
+else
+ PROMPT+=$_WPROMPT_END
+fi
+
+
+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