Browse Source

Added fossil plugin.

jgmdev 8 years ago
parent
commit
2bce3b1f58
2 changed files with 96 additions and 0 deletions
  1. 7 0
      plugins/fossil/README.md
  2. 89 0
      plugins/fossil/fossil.plugin.zsh

+ 7 - 0
plugins/fossil/README.md

@@ -0,0 +1,7 @@
+## Fossil Plugin
+
+This plugin adds completion support and prompt for fossil repositories.
+The prompt will display the current branch and status been dirty or clean.
+
+### CONTRIBUTOR
+ - Jefferson González ([jgmdev](https://github.com/jgmdev))

+ 89 - 0
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