blob: c1925ffe485ebbd0e42d22340e7d4ad13b204703 (
plain) (
tree)
|
|
# vcs_info modifications from Bart Trojanowski's zsh prompt:
# http://www.jukie.net/bart/blog/pimping-out-zsh-prompt
#
# git untracked files modification from Brian Carper:
# http://briancarper.net/blog/570/git-info-in-your-zsh-prompt
function virtualenv_info {
if [[ -a ./bin/activate ]]; then
source ./bin/activate > /dev/null
fi
[ $VIRTUAL_ENV ] && echo ' ('`basename $VIRTUAL_ENV`')'
}
#add-zsh-hook chpwd virtualenv_info
PR_GIT_UPDATE=1
setopt prompt_subst
autoload -U add-zsh-hook
autoload -Uz vcs_info
#use extended color pallete if available
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
turquoise="%F{81}"
orange="%F{166}"
purple="%F{135}"
hotpink="%F{161}"
limegreen="%F{118}"
lorange="%F{222}"
batyellow="%F{226}"
muckgreen="%F{29}"
batgreen="%F{76}"
batred="%F{88}"
purblue="%F{69}"
swampgreen="%F{64}"
purple4="%F{54}"
deeppink="%F{109}"
limblue="%F{154}"
skyblue="%F{30}"
teal="%F{31}"
new="%F{45}"
new2="%F{50}"
sneakyc="%F{63}"
gnew="%F{65}"
gnew2="%F{67}"
gover="%F{111}"
rust="%F{36}"
typescript="%F{37}"
viinsert="%F{33}"
someblue="%F{27}"
else
turquoise="$fg[cyan]"
orange="$fg[yellow]"
purple="$fg[magenta]"
hotpink="$fg[red]"
limegreen="$fg[green]"
batyellow="%fg[yellow]"
batgreen="%fg[green]"
batred="%fg[red]"
fi
# enable VCS systems you use
zstyle ':vcs_info:*' enable git svn
# 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="%{${reset_color}%}"
FMT_BRANCH=" on %{$turquoise%}%s-➜%r-➜%b%u%c%a${PR_RST} "
FMT_ACTION=" performing a %{$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 steeef_preexec {
#case "$(history $HISTCMD)" in
case "$2" in
*git*)
PR_GIT_UPDATE=1
;;
*svn*)
PR_GIT_UPDATE=1
;;
esac
}
add-zsh-hook preexec steeef_preexec
function steeef_chpwd {
#this is here so we dont get errors when we are in a bare git dir
result=$(git rev-parse --is-bare-repository 2> /dev/null)
if [[ $? == 0 ]]; then
if [[ $result == true ]]; then
PR_GIT_UPDATE=
else
PR_GIT_UPDATE=1
fi
else
PR_GIT_UPDATE=1
fi
}
add-zsh-hook chpwd steeef_chpwd
function steeef_precmd {
if [[ -n "$PR_GIT_UPDATE" ]] ; then
# check for untracked files or updated submodules, since vcs_info doesn't
if [[ ! -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
PR_GIT_UPDATE=1
FMT_BRANCH="${PM_RST} on %{$turquoise%}%s-➜%r-➜%b%u%c%a%{$hotpink%} ●${PR_RST} "
else
FMT_BRANCH="${PM_RST} on %{$turquoise%}%s-➜%r-➜%b%u%c%a${PR_RST} "
fi
zstyle ':vcs_info:*:prompt:*' formats "${FMT_BRANCH}"
vcs_info 'prompt'
PR_GIT_UPDATE=
fi
}
add-zsh-hook precmd steeef_precmd
# function guess_who {
# upower -e > /dev/null 2>&1
# if [ $? -eq 0 ]; then
# os="lin"
# else
# os="win"
# fi
# }
# add-zsh-hook precmd guess_who
function time_function {
date | gawk '{print $2" "$3" "$4}'
}
function node_version {
version=$(nvm current)
echo " <$version>"
}
function sudo_query {
sudo -nv > /dev/null 2>&1
if [[ $? == 0 ]]; then
#echo
echo " "
else
:
fi
}
function dir_writeable {
if [ -w $(pwd) ]; then :;else echo ;fi
}
function sneaky {
if [[ $! -ne 0 ]]; then
echo " $!"
fi
}
function gitadditions {
git rev-parse --git-dir > /dev/null 2>&1
if [[ $? == 0 ]]; then
insertions=$(git --no-pager diff --numstat 2> /dev/null | awk '{sum1+=$1}END{print sum1}')
if [[ $insertions == "" ]]; then
:
else
echo " "$insertions:
fi
fi
}
function gitdeletions {
git rev-parse --git-dir > /dev/null 2>&1
if [[ $? == 0 ]]; then
deletions=$(git --no-pager diff --numstat 2> /dev/null | awk '{sum2+=$2}END{print sum2}')
if [[ $deletions == "" ]]; then
:
else
echo $deletions" "
fi
fi
}
function goversion {
VERSION=$("go" version | gawk '{print $3}')
echo " <${VERSION:2:$((${#VERSION}))}>"
}
function rustversion {
VERSION=$(rustc --version | gawk '{print $2}')
echo " <$VERSION>"
}
function typescriptversion {
VERSION=$(tvm tsc --version | gawk '{print $2}')
echo " <$VERSION>"
}
PROMPT=$'%{$new2%}$(sudo_query)%{$reset_color%}%{$swampgreen%}%n%{$reset_color%} on %{$purblue%}%M%{$reset_color%} in %{$limegreen%}%/%{$reset_color%} at %{$muckgreen%}$(time_function)%{$reset_color%}$(ruby_prompt_info " with%{$fg[red]%} " v g "%{$reset_color%}")$vcs_info_msg_0_%{$limblue%}%{$gnew%}$(gitadditions)%{$gnew2%}$(gitdeletions)%{$reset_color%}%{$deeppink%}$(virtualenv_info)%{$reset_color%}%{$teal%}$(node_version)%{$reset_color%}%{$gover%}$(goversion)%{$reset_color%}%{$rust%}$(rustversion)%{$reset_color%}%{$sneakyc%}$(sneaky)%{$reset_color%}%{$new%}$(rebuildquery)%{$reset_color%} %{$someblue%}<$ZSH_KUBECTL_PROMPT>%{$reset_color%}%{$batred%}$(dir_writeable)%{$reset_color%}\n%{$limblue%}--➜%{$reset_color%}'
function rebuildquery {
make -q > /dev/null 2>&1
if [[ $? == 1 ]]; then
echo " ::rebuild::"
else
:
fi
}
#function vi-replacee {
# RPS1="$VIM_PROMPT_REPLACE %{$lorange%}%?↵%{$reset_color%} %{$batcolor%}$(batcharge_printer)%%{$reset_color%}"
# zle vi-replace
#}
#zle -N vi-replace-mode-widget vi-replacee
# bind R only in vicmd keymapping
#bindkey -M vicmd 'R' vi-replace-mode-widget
#https://raw.githubusercontent.com/alfredodeza/zsh-plugins/master/vi/zle_vi_visual.zsh
#this gives us vivis and vivli
source ~/.oh-my-zsh/plugins/zle-vi-visual/zle_vi_visual.zsh
function zle-line-init zle-keymap-select {
VIM_PROMPT_INSERT="%{$fg_bold[cyan]%}% [% INS]% %{$reset_color%}"
VIM_PROMPT_MAIN="%{$fg_bold[blue]%}% [% INSERT]% %{$reset_color%}"
VIM_PROMPT_REPLACE="%{$fg_bold[black]%}% %{$bg_bold[red]%}% [% REPLACE]% %{$reset_color%}"
VIM_PROMPT_VISUAL_LINE="%{$fg_bold[red]%}% [% VISUAL-LINE]% %{$reset_color%}"
VIM_PROMPT_VISUAL_CHAR="%{$fg_bold[red]%}% [% VISUAL]% %{$reset_color%}"
VIM_PROMPT_CMD="%{$fg_bold[green]%}% [% NORMAL]% %{$reset_color%}"
if [[ $KEYMAP == vivis ]]; then
RPS1="$VIM_PROMPT_VISUAL_CHAR %{$lorange%}%?↵%{$reset_color%}"
elif [[ $KEYMAP == vivli ]]; then
RPS1="$VIM_PROMPT_VISUAL_LINE %{$lorange%}%?↵%{$reset_color%}"
elif [[ $KEYMAP == vicmd ]];then
RPS1="$VIM_PROMPT_CMD %{$lorange%}%?↵%{$reset_color%}"
elif [[ $KEYMAP == viins ]]; then
RPS1="$VIM_PROMPT_INSERT %{$lorange%}%?↵%{$reset_color%}"
elif [[ $KEYMAP == main ]]; then
RPS1="$VIM_PROMPT_MAIN %{$lorange%}%?↵%{$reset_color%}"
VI_MODE_R_ENTERED="no"
fi
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
#bindkey "^[[3~" delete-char
#bindkey "^[3;5~" delete-char
export KEYTIMEOUT=1
|