diff options
Diffstat (limited to 'oh-my-zsh/plugins/fossil/fossil.plugin.zsh')
| -rw-r--r-- | oh-my-zsh/plugins/fossil/fossil.plugin.zsh | 56 | 
1 files changed, 56 insertions, 0 deletions
diff --git a/oh-my-zsh/plugins/fossil/fossil.plugin.zsh b/oh-my-zsh/plugins/fossil/fossil.plugin.zsh new file mode 100644 index 0000000..fadf609 --- /dev/null +++ b/oh-my-zsh/plugins/fossil/fossil.plugin.zsh @@ -0,0 +1,56 @@ +_FOSSIL_PROMPT="" + +# Prefix at the very beginning of the prompt, before the branch name +ZSH_THEME_FOSSIL_PROMPT_PREFIX="%{$fg_bold[blue]%}fossil:(%{$fg_bold[red]%}" + +# At the very end of the prompt +ZSH_THEME_FOSSIL_PROMPT_SUFFIX="%{$fg_bold[blue]%})" + +# Text to display if the branch is dirty +ZSH_THEME_FOSSIL_PROMPT_DIRTY=" %{$fg_bold[red]%}✖" + +# Text to display if the branch is clean +ZSH_THEME_FOSSIL_PROMPT_CLEAN=" %{$fg_bold[green]%}✔" + +function fossil_prompt_info() { +  local branch=$(fossil branch current 2>&1) + +  # if we're not in a fossil repo, don't show anything +  ! command grep -q "use --repo" <<< "$branch" || return + +  local changes=$(fossil changes) +  local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN" + +  if [[ -n "$changes" ]]; then +    dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY" +  fi + +  printf '%s %s %s %s %s' \ +    "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \ +    "${branch:gs/%/%%}" \ +    "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \ +    "$dirty" \ +    "%{$reset_color%}" +} + +function _fossil_prompt () { +  local current=`echo $PROMPT $RPROMPT | grep fossil` + +  if [ "$_FOSSIL_PROMPT" = "" -o "$current" = "" ]; then +    local _prompt=${PROMPT} +    local _rprompt=${RPROMPT} + +    local is_prompt=`echo $PROMPT | grep git` + +    if [ "$is_prompt" = "" ]; then +      RPROMPT="$_rprompt"'$(fossil_prompt_info)' +    else +      PROMPT="$_prompt"'$(fossil_prompt_info) ' +    fi + +    _FOSSIL_PROMPT="1" +  fi +} + +autoload -U add-zsh-hook +add-zsh-hook precmd _fossil_prompt  | 
