Re: [PATCH 2/3] prompt: factor out gitstring coloring logic
Ramkumar Ramachandra writes: > So that we can extend it with ZSH-colors in a later patch. > > Signed-off-by: Ramkumar Ramachandra > --- > contrib/completion/git-prompt.sh | 79 > ++-- > 1 file changed, 43 insertions(+), 36 deletions(-) > > diff --git a/contrib/completion/git-prompt.sh > b/contrib/completion/git-prompt.sh > index fb9296b..263d2d7 100644 > --- a/contrib/completion/git-prompt.sh > +++ b/contrib/completion/git-prompt.sh > @@ -222,6 +222,48 @@ __git_ps1_show_upstream () > > } > > +# Helper function that is meant to be called from __git_ps1. It > +# builds up a gitstring injecting color codes into the appropriate > +# places. > +__git_ps1_colorize_gitstring () > +{ > + local c_red='\e[31m' > + local c_green='\e[32m' > + local c_lblue='\e[1;34m' > + local c_clear='\e[0m' > + 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/}" > + > + if [ $detached = no ]; then > + branch_color="$ok_color" > + else > + 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 "$w$i$s$u$r$p" ]; then > + gitstring="$gitstring$z" > + fi > + if [ "$w" = "*" ]; then > + gitstring="$gitstring\[$bad_color\]$w" > + fi > + if [ -n "$i" ]; then > + gitstring="$gitstring\[$ok_color\]$i" > + fi This is somewhat offtopic, but does anybody remember why $w (and only $w) has to be checked against '*', instead of [ -n "$w" ]? The primary reason I ask is because from time to time I hear people who forget what these *#$% line noises mean and have been wondering if we can add a GIT_PS1_SHOW_STATE_MNEMONIC option that shows these with mnemonic letter sequences (e.g. "wsu" for dirty working tree, unmodified index, with stash and untracked files). > + 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" > +} > > # __git_ps1 accepts 0 or 1 arguments (i.e., format string) > # when called from PS1 using command substitution > @@ -364,42 +406,7 @@ __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' > - 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/}" > - > - if [ $detached = no ]; then > - branch_color="$ok_color" > - else > - 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 "$w$i$s$u$r$p" ]; then > - gitstring="$gitstring$z" > - fi > - 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" > + __git_ps1_colorize_gitstring > else > gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p" > fi -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/major
[PATCH 2/3] prompt: factor out gitstring coloring logic
So that we can extend it with ZSH-colors in a later patch. Signed-off-by: Ramkumar Ramachandra --- contrib/completion/git-prompt.sh | 79 ++-- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index fb9296b..263d2d7 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -222,6 +222,48 @@ __git_ps1_show_upstream () } +# Helper function that is meant to be called from __git_ps1. It +# builds up a gitstring injecting color codes into the appropriate +# places. +__git_ps1_colorize_gitstring () +{ + local c_red='\e[31m' + local c_green='\e[32m' + local c_lblue='\e[1;34m' + local c_clear='\e[0m' + 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/}" + + if [ $detached = no ]; then + branch_color="$ok_color" + else + 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 "$w$i$s$u$r$p" ]; then + gitstring="$gitstring$z" + fi + 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" +} # __git_ps1 accepts 0 or 1 arguments (i.e., format string) # when called from PS1 using command substitution @@ -364,42 +406,7 @@ __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' - 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/}" - - if [ $detached = no ]; then - branch_color="$ok_color" - else - 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 "$w$i$s$u$r$p" ]; then - gitstring="$gitstring$z" - fi - 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" + __git_ps1_colorize_gitstring else gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p" fi -- 1.8.1.2.432.g070c57d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 2/3] prompt: factor out gitstring coloring logic
So that we can extend it with ZSH-colors in a later patch. Signed-off-by: Ramkumar Ramachandra --- contrib/completion/git-prompt.sh | 79 ++-- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 5d8b745..6943f86 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -222,6 +222,48 @@ __git_ps1_show_upstream () } +# Helper function that is meant to be called from __git_ps1. It +# builds up a gitstring injecting color codes into the appropriate +# places. +__git_ps1_colorize_gitstring () +{ + local c_red='\e[31m' + local c_green='\e[32m' + local c_lblue='\e[1;34m' + local c_clear='\e[0m' + 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/}" + + if [ $detached = no ]; then + branch_color="$ok_color" + else + 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 "$w$i$s$u$r$p" ]; then + gitstring="$gitstring$z" + fi + 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" +} # __git_ps1 accepts 0 or 1 arguments (i.e., format string) # when called from PS1 using command substitution @@ -368,42 +410,7 @@ __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' - 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/}" - - if [ $detached = no ]; then - branch_color="$ok_color" - else - 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 "$w$i$s$u$r$p" ]; then - gitstring="$gitstring$z" - fi - 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" + __git_ps1_colorize_gitstring else gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p" fi -- 1.8.3.rc1.57.g4ac1522 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html