mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-26 20:31:15 +01:00
feat(branch): show mercurial bookmarks if used (#9948)
Co-authored-by: Marc Cornellà <hello@mcornella.com>
This commit is contained in:
parent
c66fc00401
commit
46e63340ee
2 changed files with 56 additions and 36 deletions
|
@ -1,31 +1,47 @@
|
||||||
# Branch
|
# Branch plugin
|
||||||
|
|
||||||
Displays the current Git or Mercurial branch fast.
|
This plugin displays the current Git or Mercurial branch, fast. If in a Mercurial repository,
|
||||||
|
also display the current bookmark, if present.
|
||||||
|
|
||||||
|
To use it, add `branch` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... branch)
|
||||||
|
```
|
||||||
|
|
||||||
## Speed test
|
## Speed test
|
||||||
|
|
||||||
### Mercurial
|
- `hg branch`:
|
||||||
|
|
||||||
```shell
|
```console
|
||||||
$ time hg branch
|
$ time hg branch
|
||||||
0.11s user 0.14s system 70% cpu 0.355 total
|
0.11s user 0.14s system 70% cpu 0.355 total
|
||||||
```
|
```
|
||||||
|
|
||||||
### Branch plugin
|
- branch plugin:
|
||||||
|
|
||||||
```shell
|
```console
|
||||||
$ time zsh /tmp/branch_prompt_info_test.zsh
|
$ time zsh /tmp/branch_prompt_info_test.zsh
|
||||||
0.00s user 0.01s system 78% cpu 0.014 total
|
0.00s user 0.01s system 78% cpu 0.014 total
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`)
|
Copy your theme to `$ZSH_CUSTOM/themes/` and modify it to add `$(branch_prompt_info)` in your prompt.
|
||||||
adding `$(branch_prompt_info)` in your prompt like this:
|
This example is for the `robbyrussell` theme:
|
||||||
|
|
||||||
```diff
|
```diff
|
||||||
- PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
|
diff --git a/themes/robbyrussell.zsh-theme b/themes/robbyrussell.zsh-theme
|
||||||
+ PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)$(branch_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
|
index 2fd5f2cd..9d89a464 100644
|
||||||
|
--- a/themes/robbyrussell.zsh-theme
|
||||||
|
+++ b/themes/robbyrussell.zsh-theme
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
|
||||||
|
-PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
|
||||||
|
+PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(branch_prompt_info)'
|
||||||
|
|
||||||
|
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
|
||||||
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
|
||||||
```
|
```
|
||||||
|
|
||||||
## Maintainer
|
## Maintainer
|
||||||
|
|
|
@ -3,29 +3,33 @@
|
||||||
# Oct 2, 2015
|
# Oct 2, 2015
|
||||||
|
|
||||||
function branch_prompt_info() {
|
function branch_prompt_info() {
|
||||||
# Defines path as current directory
|
# Start checking in current working directory
|
||||||
local current_dir=$PWD
|
local branch="" dir="$PWD"
|
||||||
# While current path is not root path
|
while [[ "$dir" != '/' ]]; do
|
||||||
while [[ $current_dir != '/' ]]
|
# Found .git directory
|
||||||
do
|
if [[ -d "${dir}/.git" ]]; then
|
||||||
# Git repository
|
branch="${"$(<"${dir}/.git/HEAD")"##*/}"
|
||||||
if [[ -d "${current_dir}/.git" ]]
|
echo '±' "${branch:gs/%/%%}"
|
||||||
then
|
return
|
||||||
echo '±' ${"$(<"$current_dir/.git/HEAD")"##*/}
|
|
||||||
return;
|
|
||||||
fi
|
fi
|
||||||
# Mercurial repository
|
|
||||||
if [[ -d "${current_dir}/.hg" ]]
|
# Found .hg directory
|
||||||
then
|
if [[ -d "${dir}/.hg" ]]; then
|
||||||
if [[ -f "$current_dir/.hg/branch" ]]
|
if [[ -f "${dir}/.hg/branch" ]]; then
|
||||||
then
|
branch="$(<"${dir}/.hg/branch")"
|
||||||
echo '☿' $(<"$current_dir/.hg/branch")
|
|
||||||
else
|
else
|
||||||
echo '☿ default'
|
branch="default"
|
||||||
fi
|
fi
|
||||||
return;
|
|
||||||
|
if [[ -f "${dir}/.hg/bookmarks.current" ]]; then
|
||||||
|
branch="${branch}/$(<"${dir}/.hg/bookmarks.current")"
|
||||||
fi
|
fi
|
||||||
# Defines path as parent directory and keeps looking for :)
|
|
||||||
current_dir="${current_dir:h}"
|
echo '☿' "${branch:gs/%/%%}"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check parent directory
|
||||||
|
dir="${dir:h}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue