Re: [PATCH 2/2] git-prompt.zsh: introduce thin ZSH wrapper
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- May 11, 2013, 21:26 UTC
- Message-ID
- <CAMP44s1pO+ytNWEV6ykRn671yf50+oMZQMnrcTN+s5ykPRpumg@mail.gmail.com>
- In-Reply-To
- <1368289513-8700-3-git-send-email-artagnon@gmail.com>
On Sat, May 11, 2013 at 11:25 AM, Ramkumar Ramachandra <artagnon@gmail.com> wrote:
> To facilitate a colored prompt in ZSH, write a thin wrapper around > git-prompt.sh, factoring out and overriding the coloring logic. Since > ZSH lacks a PROMPT_COMMAND, instruct the user to execute __git_ps1 > inside precmd().
I think this is two logical changes into one.
Show 24 quoted lines
> --- /dev/null
> +++ b/contrib/completion/git-prompt.zsh
> @@ -0,0 +1,59 @@
> +# git prompt support for zsh: wrapper around git-prompt.sh
> +#
> +# To enable:
> +#
> +# 1) Copy this file and git-prompt.sh to ~/.zsh/prompt
> +# 2) Add the following lines to your .zshrc:
> +#
> +# source ~/.zsh/prompt/git-prompt.zsh
> +# GIT_PS1_SHOWCOLORHINTS=true
> +# precmd () { __git_ps1 "%n|" ":%~$ " "%s" }
> +#
> +# 3) You can now add the following to ~/.zshrc and expect the
> +# characters to be displayed in color:
> +#
> +# GIT_PS1_DESCRIBE_STYLE=branch
> +# GIT_PS1_SHOWUPSTREAM=auto
> +# GIT_PS1_SHOWDIRTYSTATE=true
> +# GIT_PS1_SHOWUNTRACKEDFILES=true
> +
> +test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-prompt.sh
> +ZSH_VERSION='' . "$script"I've been thinking that this method of loading the script is not the best; we should probably have a list of locations where distributions usually put this file. So if we could avoid the creation of of a new file, that would be great.
Show 14 quoted lines
> +autoload colors
> +colors
> +
> +__git_ps1_colorize_gitstring ()
> +{
> + local c_red='%F{red}'
> + local c_green='%F{green}'
> + local c_lblue='%F{blue}'
> + local c_clear='%f'
> + local bad_color=$c_red
> + local ok_color=$c_green
> + local branch_color="$c_clear"
> + local flags_color="$c_lblue"
> + local branchstring="$c${b##refs/heads/}"This is the only real difference with bash colors, no? I think it's overkill to create a new file, and load the old one, only to override part of a function. We should probably start with everything in the same file, and only later if we find it's necessary, split.
Show 23 quoted lines
> + if [ $detached = no ]; then > + branch_color="$ok_color" > + else > + branch_color="$bad_color" > + fi > + > + gitstring="$branch_color$branchstring$c_clear" > + > + if [ "$w" = "*" ]; then > + gitstring="$gitstring$bad_color$w" > + fi > + if [ -n "$i" ]; then > + gitstring="$gitstring$ok_color$i" > + fi > + if [ -n "$s" ]; then > + gitstring="$gitstring$flags_color$s" > + fi > + if [ -n "$u" ]; then > + gitstring="$gitstring$bad_color$u" > + fi > + gitstring="$gitstring$c_clear$r$p" > +} > --
-- Felipe Contreras