parent
ed4e9af9c4
commit
342a011541
@ -0,0 +1,105 @@
|
||||
#
|
||||
# A theme based on the steeef theme with hg-prompt and more
|
||||
# information in the prompt.
|
||||
#
|
||||
# Authors:
|
||||
# Ahmad Khayyat <akhayyat@gmail.com>
|
||||
#
|
||||
# Screenshots:
|
||||
# http://i.imgur.com/jmOES.png
|
||||
#
|
||||
# Dependencies:
|
||||
# git
|
||||
# mercurial
|
||||
# hg-prompt (https://bitbucket.org/sjl/hg-prompt)
|
||||
#
|
||||
|
||||
function prompt_akhayyat_precmd {
|
||||
setopt LOCAL_OPTIONS
|
||||
unsetopt XTRACE KSH_ARRAYS
|
||||
|
||||
if (( $+functions[vcs_info] )); then
|
||||
vcs_info 'prompt'
|
||||
fi
|
||||
|
||||
if (( $+functions[python-info] )); then
|
||||
python-info
|
||||
fi
|
||||
}
|
||||
|
||||
function prompt_akhayyat_setup {
|
||||
setopt LOCAL_OPTIONS
|
||||
unsetopt XTRACE KSH_ARRAYS
|
||||
prompt_opts=(cr percent subst)
|
||||
|
||||
# Load required functions.
|
||||
autoload -Uz add-zsh-hook
|
||||
autoload -Uz vcs_info
|
||||
|
||||
# Use extended color pallete if available.
|
||||
if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
|
||||
orange="166"
|
||||
else
|
||||
orange="yellow"
|
||||
fi
|
||||
|
||||
# Add hook for calling *-info before each command.
|
||||
add-zsh-hook precmd prompt_akhayyat_precmd
|
||||
|
||||
# Set vcs_info parameters.
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*:prompt:*' check-for-changes true
|
||||
zstyle ':vcs_info:*:prompt:*' stagedstr "%F{green}●%f"
|
||||
zstyle ':vcs_info:*:prompt:*' unstagedstr "%F{$orange}●%f"
|
||||
zstyle ':vcs_info:*:prompt:*' formats " on ±%F{cyan}%r%f/%F{yellow}%b%f %c%u %m"
|
||||
zstyle ':vcs_info:*:prompt:*' actionformats " on ±%F{cyan}%r%f/%F{yellow}%b%f in %a %c%u %m"
|
||||
zstyle ':vcs_info:*:prompt:*' nvcsformats ""
|
||||
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked git-st
|
||||
|
||||
# Set python-info format
|
||||
zstyle ':prezto:module:python' virtualenv '(%v)'
|
||||
|
||||
# Define prompts.
|
||||
PROMPT="
|
||||
%F{magenta}%n%f@%F{magenta}%m%f:%F{cyan}%~%f"'$(hg_prompt_info)${vcs_info_msg_0_}
|
||||
${python_info[virtualenv]}» '
|
||||
|
||||
RPROMPT="%B%F{black}%D{%Y.%m.%d %a %I:%M %P}%f%b"
|
||||
}
|
||||
|
||||
function hg_prompt_info {
|
||||
hg prompt --angle-brackets "\
|
||||
<on ☿<%F{cyan}<root|basename>%f/>%F{yellow}<branch>%f>\
|
||||
<:%F{$orange}<bookmark>%f>\
|
||||
at %F{green}<rev>%f\
|
||||
<:%F{green}<tags>%f>\
|
||||
<%F{$orange}<status|modified>%f>\
|
||||
<%F{red}<status|unknown>%f>\
|
||||
<update>\
|
||||
< %F{yellow}↑%f<outgoing>>\
|
||||
< %F{$orange}↓$f<incoming>><
|
||||
patches: <patches|join( → )|pre_applied(%F{yellow})|post_applied(%f)|pre_unapplied(%B%F{black})|post_unapplied(%f%b)>>" 2>/dev/null
|
||||
}
|
||||
|
||||
function +vi-git-untracked {
|
||||
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
|
||||
git status --porcelain | grep '??' &> /dev/null ; then
|
||||
hook_com[unstaged]+="%F{red}●%f"
|
||||
fi
|
||||
}
|
||||
|
||||
function +vi-git-st() {
|
||||
local ahead behind
|
||||
local -a gitstatus
|
||||
|
||||
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
|
||||
(( $ahead )) && gitstatus+=( "%F{yellow}↑%f" )
|
||||
|
||||
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)
|
||||
(( $behind )) && gitstatus+=( "%F{$orange}↓%f" )
|
||||
|
||||
hook_com[misc]+=${(j:/:)gitstatus}
|
||||
}
|
||||
|
||||
|
||||
prompt_akhayyat_setup "$@"
|
Loading…
Reference in new issue