ohmyzsh/plugins/fossil/fossil.plugin.zsh

63 lines
2 KiB
Bash
Raw Normal View History

2016-05-10 13:23:23 -03:00
_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 info=$(fossil branch 2>&1)
# if we're not in a fossil repo, don't show anything
! command grep -q "use --repo" <<< "$info" || return
2016-05-10 13:23:23 -03:00
local branch=$(echo $info | grep "* " | sed 's/* //g')
local changes=$(fossil changes)
local dirty="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
if [[ -n "$changes" ]]; then
dirty="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
2016-05-10 13:23:23 -03:00
fi
printf '%s %s %s %s %s' \
"$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
"${branch:gs/%/%%}" \
"$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
"$dirty" \
"%{$reset_color%}"
2016-05-10 13:23:23 -03:00
}
function _fossil_prompt () {
if [ -z "$_FOSSIL_PROMPT" ]; then
# Use substitutions to work out what other plugins and themes have
# done ahead of us so we don't duplicate their work.
#
# If $fossil_prompt_info isn't in the prompt strings already but we
# can find $git_prompt_info, put it immediately afterward so that
# one or the other appears in the prompt. We're gambling that you
# aren't in a directory that's a checkout for both a Git repo and a
# Fossil repo.
#
# Otherwise, don't guess about where the user wants our prompt info
# placed. They can edit their theme to place it manually.
if [ "${PROMPT/fossil_prompt_info//}" = "$PROMPT" ]; then
PROMPT="${PROMPT/git_prompt_info/git_prompt_info)\$(fossil_prompt_info}"
fi
if [ "${RPROMPT/fossil_prompt_info//}" = "$RPROMPT" ]; then
RPROMPT="${RPROMPT/git_prompt_info/git_prompt_info)\$(fossil_prompt_info}"
2016-05-10 13:23:23 -03:00
fi
_FOSSIL_PROMPT="1"
fi
}
autoload -U add-zsh-hook
add-zsh-hook precmd _fossil_prompt