[PATCH v2] git-prompt.sh: colorize ZSH prompt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add colors suitable for use in the ZSH prompt.  Having learnt that the
ZSH equivalent of PROMPT_COMMAND is precmd (), you can now use
GIT_PS1_SHOWCOLORHINTS with ZSH.

Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx>
---
 You like this more?  I don't mind going either way.

 contrib/completion/git-prompt.sh | 67 ++++++++++++++++++++++++++++------------
 1 file changed, 47 insertions(+), 20 deletions(-)

diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 08c9b22..26e5bc2 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -20,7 +20,8 @@
 #        <post>, which are strings you would put in $PS1 before
 #        and after the status string generated by the git-prompt
 #        machinery.  e.g.
-#           PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
+#        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
+#        ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
 #        will show username, at-sign, host, colon, cwd, then
 #        various status string, followed by dollar and SP, as
 #        your prompt.
@@ -363,10 +364,18 @@ __git_ps1 ()
 		if [ $pcmode = yes ]; then
 			local gitstring=
 			if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
-				local c_red='\e[31m'
-				local c_green='\e[32m'
-				local c_lblue='\e[1;34m'
-				local c_clear='\e[0m'
+				if [[ -n ${ZSH_VERSION-} ]]; then
+					local c_red='%F{red}'
+					local c_green='%F{green}'
+					local c_lblue='%F{blue}'
+					local c_clear='%f'
+				else
+					local c_red='\e[31m'
+					local c_green='\e[32m'
+					local c_lblue='\e[1;34m'
+					local c_clear='\e[0m'
+				fi
+
 				local bad_color=$c_red
 				local ok_color=$c_green
 				local branch_color="$c_clear"
@@ -379,23 +388,41 @@ __git_ps1 ()
 					branch_color="$bad_color"
 				fi
 
-				# Setting gitstring directly with \[ and \] around colors
-				# is necessary to prevent wrapping issues!
-				gitstring="\[$branch_color\]$branchstring\[$c_clear\]"
+				if [[ -n ${ZSH_VERSION-} ]]; then
+					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"
+					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"
+				else
+					# Setting gitstring directly with \[ and \] around colors
+					# is necessary to prevent wrapping issues!
+					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"
 				fi
-				gitstring="$gitstring\[$c_clear\]$r$p"
 			else
 				gitstring="$c${b##refs/heads/}${f:+$f}$r$p"
 			fi
-- 
1.8.3.rc1.46.gfc3cab0

--
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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]