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

Re: [PATCH v3] git-prompt: make colourization consistent

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 3, 2022, 16:38 UTC
Message-ID
<xmqqy1ydhfcc.fsf@gitster.g>
In-Reply-To
<20220603142521.42863-1-joak-pet@online.no>
This is not a new issue, but seeing this:
 	if [ $detached = no ]; then
 		branch_color="$ok_color"
 	else
 		branch_color="$bad_color"
 	fi
 	c="$branch_color$c"
 
 	z="$c_clear$z"
 	if [ "$w" = "*" ]; then
 		w="$bad_color$w"
 	fi
 	if [ -n "$i" ]; then
 		i="$ok_color$i"
 	fi
 	if [ -n "$s" ]; then
 		s="$flags_color$s"
 	fi
 	if [ -n "$u" ]; then
 		u="$bad_color$u"
 	fi
+	if [ -n "$p" ]; then
+		p="$c_clear$p"
+	fi
+	if [ -n "$sparse" ]; then
+		sparse="$c_clear$sparse"
+	fi
 	r="$c_clear$r"
 }

it makes me wonder if the more forward looking and future-proof way that is resistant to any future and random reshuffling like what 0ec7c23c (git-prompt: make upstream state indicator location consistent, 2022-02-27) did would be to make it a rule to maintain that there is no coloring by default, and when any of these tokens like w, i, s, ... are not empty, enclose them inside "color-on" and "color-off" sequence.

For example, 
 	if [ "$w" = "*" ]; then
 		w="$bad_color$w"
 	fi

would mean $w, when it is "*", would cause gitstring to contain an asterisk that is painted in $bad_color, but ALSO causes whatever that happens to come AFTER $w in gitstring to be painted in the same color UNLESS it tries to protect itself. Right now, $w may be immediately followed by $i, and $i does protect itself by prefixing with $ok_color, but if $i is empty, $w's coloring will extend to $s.

So, if we did this instead:
- 	z="$c_clear$z"
 	if [ "$w" = "*" ]; then
- 		w="$bad_color$w"
+ 		w="$bad_color$w$c_clear"
 	fi

and make similar changes to everything else we see above, we probably can lose the ones that prefix with $c_clear, because each token that paints itself in unusual color is now responsible for returning the terminal state to normal with the $c_clear sequence after it is done with it. We do not have to special case sparse, p, or r in this helper function at all if we go that route, no?

If the helper were written that way, then reshuffling the order of the tokens done in 0ec7c23c (git-prompt: make upstream state indicator location consistent, 2022-02-27) wouldn't have made the patch under discussion necessary at all, which is what I see is valuable from the "maintainability" point of view.

Previous: Joakim PetersenNext: Joakim Petersen
Message 12 of 43 in “git-prompt: make colourization consistent”
  1. git-prompt: make colourization consistentJoakim Petersen, Jun 1, 2022
  2. Ævar Arnfjörð BjarmasonJun 1, 2022
  3. Joakim PetersenJun 1, 2022
  4. Junio C HamanoJun 1, 2022
  5. Joakim PetersenJun 1, 2022
  6. Junio C HamanoJun 1, 2022
  7. git-prompt: make colourization consistentJoakim Petersen, Jun 2, 2022
  8. joak-pet@online.noJun 2, 2022
  9. Junio C HamanoJun 2, 2022
  10. Joakim PetersenJun 3, 2022
  11. git-prompt: make colourization consistentJoakim Petersen, Jun 3, 2022
  12. Junio C HamanoJun 3, 2022
  13. Joakim PetersenJun 3, 2022
  14. Joakim PetersenJun 3, 2022
  15. Justin DonnellyJun 3, 2022
  16. Junio C HamanoJun 3, 2022
  17. Joakim PetersenJun 4, 2022
  18. Junio C HamanoJun 6, 2022
  19. Junio C HamanoJun 3, 2022
  20. git-prompt: make colourization consistentJoakim Petersen, Jun 4, 2022
  21. Justin DonnellyJun 4, 2022
  22. Joakim PetersenJun 4, 2022
  23. git-prompt: make colourization consistentJoakim Petersen, Jun 4, 2022
  24. Bagas SanjayaJun 6, 2022
  25. Junio C HamanoJun 7, 2022
  26. Joakim PetersenJun 9, 2022
  27. Junio C HamanoJun 6, 2022
  28. Joakim PetersenJun 6, 2022
  29. Junio C HamanoJun 6, 2022
  30. Joakim PetersenJun 7, 2022
  31. git-prompt: make colourization consistentJoakim Petersen, Jun 6, 2022
  32. git-prompt: make colourization consistentJoakim Petersen, Jun 7, 2022
  33. Junio C HamanoJun 7, 2022
  34. Joakim PetersenJun 9, 2022
  35. SZEDER GáborJun 9, 2022
  36. Joakim PetersenJun 9, 2022
  37. Junio C HamanoJun 9, 2022
  38. SZEDER GáborJun 11, 2022
  39. git-prompt: make colouring consistentJoakim Petersen, Jun 9, 2022
  40. git-prompt: fix expansion of branch colour codesJoakim Petersen, Jun 9, 2022
  41. Junio C HamanoJun 10, 2022
  42. Joakim PetersenJun 10, 2022
  43. git-prompt: fix expansion of branch colour codesJoakim Petersen, Jun 10, 2022

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.