diff options
Diffstat (limited to '.config/shell/git-prompt_examples')
| -rw-r--r-- | .config/shell/git-prompt_examples/ascii.zsh | 25 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/bashgitprompt.zsh | 28 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/compact.zsh | 24 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/default.zsh | 25 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/kj_sh604.zsh | 70 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/multiline.zsh | 24 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/pure.zsh | 74 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/rprompt.zsh | 24 | ||||
| -rw-r--r-- | .config/shell/git-prompt_examples/wprompt.zsh | 97 |
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 |
