Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
4119f530
Unverified
Commit
4119f530
authored
Dec 02, 2021
by
Marc Cornellà
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf(mercurial): optimize utility functions
parent
d058801a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
55 deletions
+78
-55
mercurial.plugin.zsh
plugins/mercurial/mercurial.plugin.zsh
+61
-40
minimal.zsh-theme
themes/minimal.zsh-theme
+17
-15
No files found.
plugins/mercurial/mercurial.plugin.zsh
View file @
4119f530
...
...
@@ -21,65 +21,86 @@ alias hgo='hg outgoing'
alias
hglg
=
'hg log --stat -v'
alias
hglgp
=
'hg log --stat -p -v'
function
hgic
()
{
hg incoming
"
$@
"
|
grep
"changeset"
|
wc
-l
}
function
hgoc
()
{
hg outgoing
"
$@
"
|
grep
"changeset"
|
wc
-l
}
# functions
function
hg_root
()
{
local dir
=
"
$PWD
"
while
[[
"
$dir
"
!=
"/"
]]
;
do
if
[[
-d
"
$dir
/.hg"
]]
;
then
echo
"
$dir
"
return
0
fi
dir
=
"
${
dir
:h
}
"
done
return
1
}
function
in_hg
()
{
if
$(
hg branch
>
/dev/null 2>&1
)
;
then
echo
1
fi
hg_root
>
/dev/null
}
function
hg_get_branch_name
()
{
branch
=
`
hg branch 2>/dev/null
`
if
[
$?
-eq
0
]
;
then
echo
$branch
local dir
if
!
dir
=
$(
hg_root
)
;
then
return
fi
unset
branch
}
function
hg_prompt_info
{
local
info rev branch dirty
if
!
info
=
$(
hg
id
--id
--branch
2>/dev/null
)
;
then
if
[[
!
-f
"
$dir
/.hg/branch"
]]
;
then
echo
default
return
fi
rev
=
"
${
info
[(w)1]
}
"
branch
=
"
${${
info
[(w)2]
}
:gs/%/%%
}
"
echo
"
$(
<
"
$dir
/.hg/branch"
)
"
}
if
[[
"
$rev
"
=
*
+
]]
;
then
dirty
=
"
$ZSH_THEME_HG_PROMPT_DIRTY
"
else
dirty
=
"
$ZSH_THEME_HG_PROMPT_CLEAN
"
function
hg_get_bookmark_name
()
{
local dir
if
!
dir
=
$(
hg_root
)
;
then
return
fi
echo
"
${
ZSH_THEME_HG_PROMPT_PREFIX
}${
branch
}${
dirty
}${
ZSH_THEME_HG_PROMPT_SUFFIX
}
"
if
[[
!
-f
"
$dir
/.hg/bookmarks.current"
]]
;
then
return
fi
echo
"
$(
<
"
$dir
/.hg/bookmarks.current"
)
"
}
function
hg_dirty_choose
{
hg status
-mar
2> /dev/null |
command grep
-Eq
'^\s*[ACDIM!?L]'
if
[
$?
-eq
0
]
;
then
if
[
$pipestatus
[
-1
]
-eq
0
]
;
then
# Grep exits with 0 when "One or more lines were selected", return "dirty".
echo
$1
return
fi
function
hg_prompt_info
{
local dir
branch dirty
if
!
dir
=
$(
hg_root
)
;
then
return
fi
echo
$2
}
function
hg_dirty
{
hg_dirty_choose
$ZSH_THEME_HG_PROMPT_DIRTY
$ZSH_THEME_HG_PROMPT_CLEAN
}
if
[[
!
-f
"
$dir
/.hg/branch"
]]
;
then
branch
=
default
else
branch
=
"
$(
<
"
$dir
/.hg/branch"
)
"
fi
function
hgic
()
{
hg incoming
"
$@
"
|
grep
"changeset"
|
wc
-l
}
dirty
=
"
$(
hg_dirty
)
"
function
hgoc
()
{
hg outgoing
"
$@
"
|
grep
"changeset"
|
wc
-l
echo
"
${
ZSH_THEME_HG_PROMPT_PREFIX
}${
branch
:gs/%/%%
}${
dirty
}${
ZSH_THEME_HG_PROMPT_SUFFIX
}
"
}
function
hg_get_bookmark_name
()
{
if
[
$(
in_hg
)
]
;
then
echo
$(
hg
id
-B
)
function
hg_dirty
{
local
hg_status
if
!
hg_status
=
"
$(
hg status
-mar
2>/dev/null
)
"
;
then
return
fi
# grep exits with 0 when dirty
if
command grep
-Eq
'^\s*[ACDIM!?L]'
<<<
"
$hg_status
"
;
then
echo
$ZSH_THEME_HG_PROMPT_DIRTY
return
fi
echo
$ZSH_THEME_HG_PROMPT_CLEAN
}
themes/minimal.zsh-theme
View file @
4119f530
...
...
@@ -2,23 +2,25 @@ ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[white]%}["
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$fg[white]%}]%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_CLEAN="]%{$reset_color%} "
ZSH_THEME_SVN_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
ZSH_THEME_SVN_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
ZSH_THEME_SVN_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
ZSH_THEME_SVN_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
ZSH_THEME_HG_PROMPT_PREFIX=$ZSH_THEME_GIT_PROMPT_PREFIX
ZSH_THEME_HG_PROMPT_SUFFIX=$ZSH_THEME_GIT_PROMPT_SUFFIX
ZSH_THEME_HG_PROMPT_DIRTY=$ZSH_THEME_GIT_PROMPT_DIRTY
ZSH_THEME_HG_PROMPT_CLEAN=$ZSH_THEME_GIT_PROMPT_CLEAN
ZSH_THEME_SVN_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
ZSH_THEME_SVN_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
ZSH_THEME_SVN_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
ZSH_THEME_SVN_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"
ZSH_THEME_HG_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
ZSH_THEME_HG_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
ZSH_THEME_HG_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
ZSH_THEME_HG_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"
vcs_status() {
if [[ $(whence in_svn) != "" ]]
&& in_svn; then
svn_prompt_info
elif [[ $(whence in_hg) != "" ]]
&& in_hg; then
hg_prompt_info
else
git_prompt_info
fi
if (( ${+functions[in_svn]} ))
&& in_svn; then
svn_prompt_info
elif (( ${+functions[in_hg]} ))
&& in_hg; then
hg_prompt_info
else
git_prompt_info
fi
}
PROMPT='%2~ $(vcs_status)»%b '
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