From 0b8db4f1c67d001d7e43ac9154a6cbdbcfb1790e Mon Sep 17 00:00:00 2001 From: Blista Kanjo Date: Wed, 2 Aug 2023 20:40:22 -0400 Subject: feat: migrated `fish` config to `zsh` (may be buggy) --- .config/shell/git-prompt_examples/pure.zsh | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .config/shell/git-prompt_examples/pure.zsh (limited to '.config/shell/git-prompt_examples/pure.zsh') 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 -- cgit v1.2.3