]> src.twobees.de Git - dotfiles.git/blob - stow/oh-my-zsh/.oh-my-zsh/plugins/fossil/fossil.plugin.zsh
...
[dotfiles.git] / stow / oh-my-zsh / .oh-my-zsh / plugins / fossil / fossil.plugin.zsh
1 _FOSSIL_PROMPT=""
2
3 # Prefix at the very beginning of the prompt, before the branch name
4 ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}"
5
6 # At the very end of the prompt
7 ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})"
8
9 # Text to display if the branch is dirty
10 ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
11
12 # Text to display if the branch is clean
13 ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
14
15 function fossil_prompt_info() {
16   local branch=$(fossil branch current 2>&1)
17
18   # if we're not in a fossil repo, don't show anything
19   ! command grep -q "use --repo" <<< "$branch" || return
20
21   local changes=$(fossil changes)
22   local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
23
24   if [[ -n "$changes" ]]; then
25     dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
26   fi
27
28   printf '%s %s %s %s %s' \
29     "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
30     "${branch:gs/%/%%}" \
31     "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
32     "$dirty" \
33     "%{$reset_color%}"
34 }
35
36 function _fossil_prompt () {
37   local current=`echo $PROMPT $RPROMPT | grep fossil`
38
39   if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then
40     local _prompt=${PROMPT}
41     local _rprompt=${RPROMPT}
42
43     local is_prompt=`echo $PROMPT | grep git`
44
45     if [ "$is_prompt" = "" ]; then
46       RPROMPT="$_rprompt"'$(fossil_prompt_info)'
47     else
48       PROMPT="$_prompt"'$(fossil_prompt_info) '
49     fi
50
51     _FOSSIL_PROMPT="1"
52   fi
53 }
54
55 autoload -U add-zsh-hook
56 add-zsh-hook precmd _fossil_prompt