fossil.plugin.zsh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. _FOSSIL_PROMPT=""
  2. # Prefix at the very beginning of the prompt, before the branch name
  3. ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}"
  4. # At the very end of the prompt
  5. ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})"
  6. # Text to display if the branch is dirty
  7. ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖"
  8. # Text to display if the branch is clean
  9. ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
  10. function fossil_prompt_info() {
  11. local _OUTPUT=`fossil branch 2>&1`
  12. local _STATUS=`echo $_OUTPUT | grep "use --repo"`
  13. if [ "$_STATUS" = "" ]; then
  14. local _EDITED=`fossil changes`
  15. local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
  16. local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
  17. if [ "$_EDITED" != "" ]; then
  18. _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
  19. fi
  20. echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
  21. "$_BRANCH" \
  22. "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
  23. "$_EDITED_SYM"\
  24. "%{$reset_color%}"
  25. fi
  26. }
  27. function _fossil_prompt () {
  28. local current=`echo $PROMPT $RPROMPT | grep fossil`
  29. if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then
  30. local _prompt=${PROMPT}
  31. local _rprompt=${RPROMPT}
  32. local is_prompt=`echo $PROMPT | grep git`
  33. if [ "$is_prompt" = "" ]; then
  34. RPROMPT="$_rprompt"'$(fossil_prompt_info)'
  35. else
  36. PROMPT="$_prompt"'$(fossil_prompt_info) '
  37. fi
  38. _FOSSIL_PROMPT="1"
  39. fi
  40. }
  41. autoload -U add-zsh-hook
  42. add-zsh-hook precmd _fossil_prompt