git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Ramkumar RamachandraNext: Ramkumar Ramachandra
Message 12 of 16 in “Colored prompt for zsh”
  1. 0/2 Colored prompt for zshRamkumar Ramachandra, May 11, 2013
  2. 1/2 git-prompt.sh: strip unnecessary space in prompt stringRamkumar Ramachandra, May 11, 2013
  3. Junio C HamanoMay 13, 2013
  4. Ramkumar RamachandraMay 13, 2013
  5. SZEDER GáborMay 13, 2013
  6. Ramkumar RamachandraMay 13, 2013
  7. SZEDER GáborMay 13, 2013
  8. SZEDER GáborMay 13, 2013
  9. Junio C HamanoMay 13, 2013
  10. Ramkumar RamachandraMay 13, 2013
  11. 2/2 git-prompt.zsh: introduce thin ZSH wrapperRamkumar Ramachandra, May 11, 2013
  12. Felipe ContrerasMay 11, 2013
  13. git-prompt.sh: colorize ZSH promptRamkumar Ramachandra, May 11, 2013
  14. Felipe ContrerasMay 11, 2013
  15. Ramkumar RamachandraMay 11, 2013
  16. Felipe ContrerasMay 11, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.