summaryrefslogtreecommitdiff
path: root/plugins/fossil/fossil.plugin.zsh
diff options
context:
space:
mode:
authorjgmdev <jgmdev@gmail.com>2016-05-10 13:23:23 -0300
committerjgmdev <jgmdev@gmail.com>2016-05-10 13:23:23 -0300
commit2bce3b1f588ef2a5245e7a3f4b1693c2c07d1dbc (patch)
treee9d51398ade4be721c2badd9b881462078765a5b /plugins/fossil/fossil.plugin.zsh
parent0ebe35968cee69431790c78d427813d073db71c1 (diff)
downloadzsh-2bce3b1f588ef2a5245e7a3f4b1693c2c07d1dbc.tar.gz
zsh-2bce3b1f588ef2a5245e7a3f4b1693c2c07d1dbc.tar.bz2
zsh-2bce3b1f588ef2a5245e7a3f4b1693c2c07d1dbc.zip
Added fossil plugin.
Diffstat (limited to 'plugins/fossil/fossil.plugin.zsh')
-rw-r--r--plugins/fossil/fossil.plugin.zsh89
1 files changed, 89 insertions, 0 deletions
diff --git a/plugins/fossil/fossil.plugin.zsh b/plugins/fossil/fossil.plugin.zsh
new file mode 100644
index 000000000..1ae166e62
--- /dev/null
+++ b/plugins/fossil/fossil.plugin.zsh
@@ -0,0 +1,89 @@
+_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 _OUTPUT=`fossil branch 2>&1`
+ local _STATUS=`echo $_OUTPUT | grep "use --repo"`
+ if [ "$_STATUS" = "" ]; then
+ local _EDITED=`fossil changes`
+ local _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_CLEAN"
+ local _BRANCH=`echo $_OUTPUT | grep "* " | sed 's/* //g'`
+
+ if [ "$_EDITED" != "" ]; then
+ _EDITED_SYM="$ZSH_THEME_FOSSIL_PROMPT_DIRTY"
+ fi
+
+ echo "$ZSH_THEME_FOSSIL_PROMPT_PREFIX" \
+ "$_BRANCH" \
+ "$ZSH_THEME_FOSSIL_PROMPT_SUFFIX" \
+ "$_EDITED_SYM"\
+ "%{$reset_color%}"
+ fi
+}
+
+function _fossil_get_command_list () {
+ fossil help -a | grep -v "Usage|Common|This is"
+}
+
+function _fossil () {
+ local context state state_descr line
+ typeset -A opt_args
+
+ _arguments \
+ '1: :->command'\
+ '2: :->subcommand'
+
+ case $state in
+ command)
+ local _OUTPUT=`fossil branch 2>&1 | grep "use --repo"`
+ if [ "$_OUTPUT" = "" ]; then
+ compadd `_fossil_get_command_list`
+ else
+ compadd clone init import help version
+ fi
+ ;;
+ subcommand)
+ if [ "$words[2]" = "help" ]; then
+ compadd `_fossil_get_command_list`
+ else
+ compcall -D
+ fi
+ ;;
+ esac
+}
+
+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
+ export RPROMPT="$_rprompt"'$(fossil_prompt_info)'
+ else
+ export PROMPT="$_prompt"'$(fossil_prompt_info) '
+ fi
+
+ _FOSSIL_PROMPT="1"
+ fi
+}
+
+compdef _fossil fossil
+
+autoload -U add-zsh-hook
+
+add-zsh-hook precmd _fossil_prompt