commit
23ed432d35
2 changed files with 96 additions and 0 deletions
@ -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)) |
||||||
@ -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 |
||||||
Loading…
Reference in new issue