summaryrefslogtreecommitdiff
path: root/themes/agnoster.zsh-theme
diff options
context:
space:
mode:
Diffstat (limited to 'themes/agnoster.zsh-theme')
-rw-r--r--themes/agnoster.zsh-theme51
1 files changed, 49 insertions, 2 deletions
diff --git a/themes/agnoster.zsh-theme b/themes/agnoster.zsh-theme
index c3107c06c..a9de8c84e 100644
--- a/themes/agnoster.zsh-theme
+++ b/themes/agnoster.zsh-theme
@@ -71,7 +71,6 @@ prompt_context() {
prompt_git() {
local ref dirty
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
- ZSH_THEME_GIT_PROMPT_DIRTY='±'
dirty=$(parse_git_dirty)
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
if [[ -n $dirty ]]; then
@@ -79,10 +78,57 @@ prompt_git() {
else
prompt_segment green black
fi
- echo -n "${ref/refs\/heads\//⭠ }$dirty"
+
+ setopt promptsubst
+ autoload -Uz vcs_info
+
+ zstyle ':vcs_info:*' enable git
+ zstyle ':vcs_info:*' get-revision true
+ zstyle ':vcs_info:*' check-for-changes true
+ zstyle ':vcs_info:*' stagedstr '✚'
+ zstyle ':vcs_info:git:*' unstagedstr '●'
+ zstyle ':vcs_info:*' formats ' %u%c'
+ zstyle ':vcs_info:*' actionformats '%u%c'
+ vcs_info
+ echo -n "${ref/refs\/heads\//⭠ }${vcs_info_msg_0_}"
fi
}
+prompt_hg() {
+ local rev status
+ if $(hg id >/dev/null 2>&1); then
+ if $(hg prompt >/dev/null 2>&1); then
+ if [[ $(hg prompt "{status|unknown}") = "?" ]]; then
+ # if files are not added
+ prompt_segment red white
+ st='±'
+ elif [[ -n $(hg prompt "{status|modified}") ]]; then
+ # if any modification
+ prompt_segment yellow black
+ st='±'
+ else
+ # if working copy is clean
+ prompt_segment green black
+ fi
+ echo -n $(hg prompt "⭠ {rev}@{branch}") $st
+ else
+ st=""
+ rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
+ branch=$(hg id -b 2>/dev/null)
+ if `hg st | grep -Eq "^\?"`; then
+ prompt_segment red black
+ st='±'
+ elif `hg st | grep -Eq "^(M|A)"`; then
+ prompt_segment yellow black
+ st='±'
+ else
+ prompt_segment green black
+ fi
+ echo -n "⭠ $rev@$branch" $st
+ fi
+ fi
+}
+
# Dir: current working directory
prompt_dir() {
prompt_segment blue black '%~'
@@ -109,6 +155,7 @@ build_prompt() {
prompt_context
prompt_dir
prompt_git
+ prompt_hg
prompt_end
}