Thread (1 message) 1 message, 1 author, 2016-06-16

Re: [PATCH] git-prompt: make colors available in custom prompts

From: Simon Oosthoek <hidden>
Date: 2016-06-16 02:19:07

Hi Andrew

sorry, I only noticed your request this morning...

On 22/04/16 07:00, Andrew Schwartzmeyer wrote:
quoted hunk
This was disabled in the original implementation, probably because it
does not work if the __git_ps1 function is single-quoted. However, if
you double-quote per the updated documentation, you can have colors in
your custom Git prompt function, no problem.

Signed-off-by: Andrew Schwartzmeyer <redacted>
---
  contrib/completion/git-prompt.sh | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index f18aedc73..ffe79168c 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -12,8 +12,8 @@
  #        source ~/.git-prompt.sh
  #    3a) Change your PS1 to call __git_ps1 as
  #        command-substitution:
-#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
-#        ZSH:  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
+#        Bash: PS1="[\u@\h \W$(__git_ps1 ' (%s)')]\$ "
+#        ZSH:  setopt PROMPT_SUBST ; PS1="[%n@%m %c$(__git_ps1 ' (%s)')]\$ "
I haven't tested this at all, but when using double quotes, you need to 
at least check all the escapings, like \$ should probably be: \\\$ when 
used in double quotes.
quoted hunk
  #        the optional argument will be used as format string.
  #    3b) Alternatively, for a slightly faster prompt, __git_ps1 can
  #        be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
@@ -82,8 +82,9 @@
  #
  # If you would like a colored hint about the current dirty state, set
  # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
-# the colored output of "git status -sb" and are available only when
-# using __git_ps1 for PROMPT_COMMAND or precmd.
+# the colored output of "git status -sb". If you are using your own
+# PROMPT_COMMAND function, you must use double-quotes when calling
+# __git_ps1, e.g. PS1="$(__git_ps1 '%s ')".
  #
  # If you would like __git_ps1 to do nothing in the case when the current
  # directory is set up to be ignored by git, then set
@@ -499,8 +500,7 @@ __git_ps1 ()

  	local z="${GIT_PS1_STATESEPARATOR-" "}"

-	# NO color option unless in PROMPT_COMMAND mode
-	if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
+	if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
  		__git_ps1_colorize_gitstring
  	fi
The original reason for not using colors in command substitution mode 
was that the prompt string length was not calculated correctly by bash 
and it messed up the commandline with very long commands (relative to 
the terminal width), when browsing the command history.
However I think I've seen this effect even with the new code, but I've 
never dug into this.

Cheers

Simon
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help