Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
47c04d92
Commit
47c04d92
authored
Feb 25, 2016
by
Arnaud Thimel
Committed by
Marc Cornellà
Jan 15, 2021
Browse files
feat(git-prompt): display stash count in prompt
parent
63477411
Changes
2
Hide whitespace changes
Inline
Side-by-side
plugins/git-prompt/git-prompt.plugin.zsh
View file @
47c04d92
...
...
@@ -40,6 +40,8 @@ function update_current_git_vars() {
GIT_CONFLICTS
=
$__CURRENT_GIT_STATUS
[
5]
GIT_CHANGED
=
$__CURRENT_GIT_STATUS
[
6]
GIT_UNTRACKED
=
$__CURRENT_GIT_STATUS
[
7]
GIT_STASHED
=
$__CURRENT_GIT_STATUS
[
8]
GIT_CLEAN
=
$__CURRENT_GIT_STATUS
[
9]
}
git_super_status
()
{
...
...
@@ -65,7 +67,10 @@ git_super_status() {
if
[
"
$GIT_UNTRACKED
"
-ne
"0"
]
;
then
STATUS
=
"
$STATUS$ZSH_THEME_GIT_PROMPT_UNTRACKED$GIT_UNTRACKED
%{
${
reset_color
}
%}"
fi
if
[
"
$GIT_CHANGED
"
-eq
"0"
]
&&
[
"
$GIT_CONFLICTS
"
-eq
"0"
]
&&
[
"
$GIT_STAGED
"
-eq
"0"
]
&&
[
"
$GIT_UNTRACKED
"
-eq
"0"
]
;
then
if
[
"
$GIT_STASHED
"
-ne
"0"
]
;
then
STATUS
=
"
$STATUS$ZSH_THEME_GIT_PROMPT_STASHED$GIT_STASHED
%{
${
reset_color
}
%}"
fi
if
[
"
$GIT_CLEAN
"
-eq
"1"
]
;
then
STATUS
=
"
$STATUS$ZSH_THEME_GIT_PROMPT_CLEAN
"
fi
STATUS
=
"
$STATUS
%{
${
reset_color
}
%}
$ZSH_THEME_GIT_PROMPT_SUFFIX
"
...
...
@@ -84,6 +89,7 @@ ZSH_THEME_GIT_PROMPT_CHANGED="%{$fg[blue]%}%{✚%G%}"
ZSH_THEME_GIT_PROMPT_BEHIND
=
"%{↓%G%}"
ZSH_THEME_GIT_PROMPT_AHEAD
=
"%{↑%G%}"
ZSH_THEME_GIT_PROMPT_UNTRACKED
=
"%{
$fg
[cyan]%}%{…%G%}"
ZSH_THEME_GIT_PROMPT_STASHED
=
"%{
$fg_bold
[blue]%}%{⚑%G%}"
ZSH_THEME_GIT_PROMPT_CLEAN
=
"%{
$fg_bold
[green]%}%{✔%G%}"
# Set the prompt.
...
...
plugins/git-prompt/gitstatus.py
View file @
47c04d92
...
...
@@ -23,6 +23,18 @@ def get_tagname_or_hash():
return
hash_
return
None
# Re-use method from https://github.com/magicmonty/bash-git-prompt to get stashs count
def
get_stash
():
cmd
=
Popen
([
'git'
,
'rev-parse'
,
'--git-dir'
],
stdout
=
PIPE
,
stderr
=
PIPE
)
so
,
se
=
cmd
.
communicate
()
stash_file
=
'%s%s'
%
(
so
.
decode
(
'utf-8'
).
rstrip
(),
'/logs/refs/stash'
)
try
:
with
open
(
stash_file
)
as
f
:
return
sum
(
1
for
_
in
f
)
except
IOError
:
return
0
# `git status --porcelain --branch` can collect all information
# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind
...
...
@@ -68,6 +80,12 @@ for st in status:
elif
st
[
0
]
!=
' '
:
staged
.
append
(
st
)
stashed
=
get_stash
()
if
not
changed
and
not
staged
and
not
conflicts
and
not
untracked
and
not
stashed
:
clean
=
1
else
:
clean
=
0
out
=
' '
.
join
([
branch
,
str
(
ahead
),
...
...
@@ -76,5 +94,7 @@ out = ' '.join([
str
(
len
(
conflicts
)),
str
(
len
(
changed
)),
str
(
len
(
untracked
)),
str
(
stashed
),
str
(
clean
)
])
print
(
out
,
end
=
''
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment