4119f53004de987215e4ae2ce49d0f818ad58c63
- Author
- Marc Cornellà <hello@mcornella.com>
- Committer
- Marc Cornellà <hello@mcornella.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/plugins/mercurial/mercurial.plugin.zsh b/plugins/mercurial/mercurial.plugin.zsh
2index 8b50da9d8267f287cfc1ab59aa98e7b5768c0a6b..6e72f0b1ee8d84ba89457d5139c89257ed09047b 100644
3--- a/plugins/mercurial/mercurial.plugin.zsh
4+++ b/plugins/mercurial/mercurial.plugin.zsh
5@@ -21,65 +21,86 @@ alias hgo='hg outgoing'
6 alias hglg='hg log --stat -v'
7 alias hglgp='hg log --stat -p -v'
8
9+function hgic() {
10+ hg incoming "$@" | grep "changeset" | wc -l
11+}
12+
13+function hgoc() {
14+ hg outgoing "$@" | grep "changeset" | wc -l
15+}
16+
17+# functions
18+function hg_root() {
19+ local dir="$PWD"
20+ while [[ "$dir" != "/" ]]; do
21+ if [[ -d "$dir/.hg" ]]; then
22+ echo "$dir"
23+ return 0
24+ fi
25+ dir="${dir:h}"
26+ done
27+ return 1
28+}
29+
30 function in_hg() {
31- if $(hg branch > /dev/null 2>&1); then
32- echo 1
33- fi
34+ hg_root >/dev/null
35 }
36
37 function hg_get_branch_name() {
38- branch=`hg branch 2>/dev/null`
39- if [ $? -eq 0 ]; then
40- echo $branch
41+ local dir
42+ if ! dir=$(hg_root); then
43+ return
44 fi
45- unset branch
46-}
47
48-function hg_prompt_info {
49- local info rev branch dirty
50-
51- if ! info=$(hg id --id --branch 2>/dev/null); then
52+ if [[ ! -f "$dir/.hg/branch" ]]; then
53+ echo default
54 return
55 fi
56
57- rev="${info[(w)1]}"
58- branch="${${info[(w)2]}:gs/%/%%}"
59+ echo "$(<"$dir/.hg/branch")"
60+}
61
62- if [[ "$rev" = *+ ]]; then
63- dirty="$ZSH_THEME_HG_PROMPT_DIRTY"
64- else
65- dirty="$ZSH_THEME_HG_PROMPT_CLEAN"
66+function hg_get_bookmark_name() {
67+ local dir
68+ if ! dir=$(hg_root); then
69+ return
70 fi
71
72- echo "${ZSH_THEME_HG_PROMPT_PREFIX}${branch}${dirty}${ZSH_THEME_HG_PROMPT_SUFFIX}"
73+ if [[ ! -f "$dir/.hg/bookmarks.current" ]]; then
74+ return
75+ fi
76+
77+ echo "$(<"$dir/.hg/bookmarks.current")"
78 }
79
80-function hg_dirty_choose {
81- hg status -mar 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'
82- if [ $? -eq 0 ]; then
83- if [ $pipestatus[-1] -eq 0 ]; then
84- # Grep exits with 0 when "One or more lines were selected", return "dirty".
85- echo $1
86- return
87- fi
88+function hg_prompt_info {
89+ local dir branch dirty
90+ if ! dir=$(hg_root); then
91+ return
92 fi
93- echo $2
94-}
95
96-function hg_dirty {
97- hg_dirty_choose $ZSH_THEME_HG_PROMPT_DIRTY $ZSH_THEME_HG_PROMPT_CLEAN
98-}
99+ if [[ ! -f "$dir/.hg/branch" ]]; then
100+ branch=default
101+ else
102+ branch="$(<"$dir/.hg/branch")"
103+ fi
104
105diff --git a/themes/minimal.zsh-theme b/themes/minimal.zsh-theme
106index e05df9c9bc0bd4f83c96e5b50572b44e4c994ca6..588ab698284e5550bed68005cd8af60ed040d3d1 100644
107--- a/themes/minimal.zsh-theme
108+++ b/themes/minimal.zsh-theme
109@@ -2,23 +2,25 @@ ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}["
110 ZSH_THEME_GIT_PROMPT_SUFFIX=""
111 ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$fg[white]%}]%{$reset_color%} "
112 ZSH_THEME_GIT_PROMPT_CLEAN="]%{$reset_color%} "
113-ZSH_THEME_SVN_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
114-ZSH_THEME_SVN_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
115-ZSH_THEME_SVN_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
116-ZSH_THEME_SVN_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
117-ZSH_THEME_HG_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
118-ZSH_THEME_HG_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
119-ZSH_THEME_HG_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
120-ZSH_THEME_HG_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
121+
122+ZSH_THEME_SVN_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
123+ZSH_THEME_SVN_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
124+ZSH_THEME_SVN_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
125+ZSH_THEME_SVN_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"
126+
127+ZSH_THEME_HG_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
128+ZSH_THEME_HG_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
129+ZSH_THEME_HG_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
130+ZSH_THEME_HG_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"
131
132 vcs_status() {
133- if [[ $(whence in_svn) != "" ]] && in_svn; then
134- svn_prompt_info
135- elif [[ $(whence in_hg) != "" ]] && in_hg; then
136- hg_prompt_info
137- else
138- git_prompt_info
139- fi
140+ if (( ${+functions[in_svn]} )) && in_svn; then
141+ svn_prompt_info
142+ elif (( ${+functions[in_hg]} )) && in_hg; then
143+ hg_prompt_info
144+ else
145+ git_prompt_info
146+ fi
147 }
148
149 PROMPT='%2~ $(vcs_status)»%b '