* Junio C Hamano <gitster@xxxxxxxxx> [2012-12-25 23:47:53 -0800]: > Can we make it take an optional third parameter so that we could say > > PROMPT_COMMAND='__git_ps1 ": \h \W" "; " "/%s"' > > to do the same as what the command substitution mode would have > given for > > PS1=': \h \W$(__git_ps1 "/%s"); ' > > perhaps? > > Totally untested, but perhaps along this line. > I tried your patch and (to my surprise, after the first reading) it worked. I've further modified git-prompt.sh to include more usage text and I changed the name of ps1 to gitstring, as it might be confused with PS1 upon casual reading. I'll be sending a format-patch patchmail ASAP... > contrib/completion/git-prompt.sh | 24 ++++++++++++++---------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh > index 9b074e1..b2579f4 100644 > --- a/contrib/completion/git-prompt.sh > +++ b/contrib/completion/git-prompt.sh > @@ -236,9 +236,10 @@ __git_ps1 () > local printf_format=' (%s)' > > case "$#" in > - 2) pcmode=yes > + 2|3) pcmode=yes > ps1pc_start="$1" > ps1pc_end="$2" > + printf_format="${3:-$printf_format}" > ;; > 0|1) printf_format="${1:-$printf_format}" > ;; > @@ -339,6 +340,7 @@ __git_ps1 () > > local f="$w$i$s$u" > if [ $pcmode = yes ]; then > + local ps1= > if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then > local c_red='\e[31m' > local c_green='\e[32m' > @@ -356,29 +358,31 @@ __git_ps1 () > branch_color="$bad_color" > fi > > - # Setting PS1 directly with \[ and \] around colors > + # Setting ps1 directly with \[ and \] around colors > # is necessary to prevent wrapping issues! > - PS1="$ps1pc_start (\[$branch_color\]$branchstring\[$c_clear\]" > + ps1="\[$branch_color\]$branchstring\[$c_clear\]" > > if [ -n "$w$i$s$u$r$p" ]; then > - PS1="$PS1 " > + ps1="$ps1 " > fi > if [ "$w" = "*" ]; then > - PS1="$PS1\[$bad_color\]$w" > + ps1="$ps1\[$bad_color\]$w" > fi > if [ -n "$i" ]; then > - PS1="$PS1\[$ok_color\]$i" > + ps1="$ps1\[$ok_color\]$i" > fi > if [ -n "$s" ]; then > - PS1="$PS1\[$flags_color\]$s" > + ps1="$ps1\[$flags_color\]$s" > fi > if [ -n "$u" ]; then > - PS1="$PS1\[$bad_color\]$u" > + ps1="$ps1\[$bad_color\]$u" > fi > - PS1="$PS1\[$c_clear\]$r$p)$ps1pc_end" > + ps1="$ps1\[$c_clear\]$r$p" > else > - PS1="$ps1pc_start ($c${b##refs/heads/}${f:+ $f}$r$p)$ps1pc_end" > + ps1="$c${b##refs/heads/}${f:+ $f}$r$p" > fi > + ps1=$(printf -- "$printf_format" "$ps1") > + PS1="$ps1pc_start$ps1$ps1pc_end" > else > # NO color option unless in PROMPT_COMMAND mode > printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p" /Simon -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html