Created
September 24, 2022 21:24
-
-
Save yellowgh0st/3225747250ade5a3cdb7cbb600fb920e to your computer and use it in GitHub Desktop.
hybrid.zsh-theme
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# hybrid oh-my-zsh theme | |
# ylwghst | |
export VIRTUAL_ENV_DISABLE_PROMPT=1 | |
function virtualenv_info { | |
[ $VIRTUAL_ENV ] && echo '('%F{blue}`basename $VIRTUAL_ENV`%f') ' | |
} | |
PR_GIT_UPDATE=1 | |
setopt prompt_subst | |
autoload -U add-zsh-hook | |
autoload -Uz vcs_info | |
#use extended color palette if available | |
if [[ $terminfo[colors] -ge 256 ]]; then | |
turquoise="%F{81}" | |
orange="%F{166}" | |
purple="%F{135}" | |
hotpink="%F{161}" | |
limegreen="%F{118}" | |
else | |
turquoise="%F{cyan}" | |
orange="%F{yellow}" | |
purple="%F{magenta}" | |
hotpink="%F{red}" | |
limegreen="%F{green}" | |
fi | |
# enable VCS systems you use | |
zstyle ':vcs_info:*' enable git | |
# check-for-changes can be really slow. | |
# you should disable it, if you work with large repositories | |
zstyle ':vcs_info:*:prompt:*' check-for-changes true | |
# set formats | |
# %b - branchname | |
# %u - unstagedstr (see below) | |
# %c - stagedstr (see below) | |
# %a - action (e.g. rebase-i) | |
# %R - repository path | |
# %S - path in the repository | |
PR_RST="%f" | |
FMT_BRANCH="%B(%b%u%c${PR_RST})" | |
FMT_ACTION="%B(%{$limegreen%}%a${PR_RST})" | |
FMT_UNSTAGED="%{$orange%}●" | |
FMT_STAGED="%{$limegreen%}●" | |
zstyle ':vcs_info:*:prompt:*' unstagedstr "${FMT_UNSTAGED}" | |
zstyle ':vcs_info:*:prompt:*' stagedstr "${FMT_STAGED}" | |
zstyle ':vcs_info:*:prompt:*' actionformats "${FMT_BRANCH}${FMT_ACTION}" | |
zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}" | |
zstyle ':vcs_info:*:prompt:*' nvcsformats "" | |
function hedgehog_preexec { | |
case "$2" in | |
*git*) | |
PR_GIT_UPDATE=1 | |
;; | |
*hub*) | |
PR_GIT_UPDATE=1 | |
;; | |
*svn*) | |
PR_GIT_UPDATE=1 | |
;; | |
esac | |
} | |
add-zsh-hook preexec hedgehog_preexec | |
function hedgehog_chpwd { | |
PR_GIT_UPDATE=1 | |
} | |
add-zsh-hook chpwd hedgehog_chpwd | |
function hedgehog_precmd { | |
if [[ -n "$PR_GIT_UPDATE" ]] ; then | |
# check for untracked files or updated submodules, since vcs_info doesn't | |
if git ls-files --other --exclude-standard 2> /dev/null | grep -q "."; then | |
PR_GIT_UPDATE=1 | |
FMT_BRANCH="%B(%b%u%c%{$hotpink%}●${PR_RST})" | |
else | |
FMT_BRANCH="%B(%b%u%c${PR_RST})" | |
fi | |
zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH} " | |
vcs_info 'prompt' | |
PR_GIT_UPDATE= | |
fi | |
} | |
add-zsh-hook precmd hedgehog_precmd | |
# Color shortcuts | |
R=$fg_no_bold[red] | |
B=$fg_no_bold[blue] | |
M=$fg_no_bold[magenta] | |
RESET=$reset_color | |
local return_side="%(?..%{$R%}%? «%{$RESET%})" | |
# Prompt | |
PROMPT='%B%2~%b $vcs_info_msg_0_$(virtualenv_info)%{$M%}$ %{$RESET%}' | |
RPS1="${return_side}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment