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

[PATCH 1/1] pretty-formats: add hard truncation, without ellipsis, options

From
Philip Oakley <philipoakley@iee.email>
Date
Oct 30, 2022, 18:56 UTC
Message-ID
<20221030185614.3842-2-philipoakley@iee.email>
In-Reply-To
<20221030185614.3842-1-philipoakley@iee.email>

Instead of replacing with "..", replace with the empty string "", having adjusted the padding length calculation.

Needswork: There are no tests for these pretty formats, before or after this change.

Signed-off-by: Philip Oakley <philipoakley@iee.email>
---
 Documentation/pretty-formats.txt |  7 ++++---
 pretty.c                         | 18 +++++++++++++++++-
 2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 0b4c1c8d98..bd1657c032 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -146,14 +146,15 @@ The placeholders are:
 '%m':: left (`<`), right (`>`) or boundary (`-`) mark
 '%w([<w>[,<i1>[,<i2>]]])':: switch line wrapping, like the -w option of
 			    linkgit:git-shortlog[1].
-'%<(<N>[,trunc|ltrunc|mtrunc])':: make the next placeholder take at
+'%<(<N>[,trunc|ltrunc|mtrunc|Trunc|Ltrunc])':: make the next placeholder take at
 				  least N columns, padding spaces on
 				  the right if necessary.  Optionally
-				  truncate at the beginning (ltrunc),
+				  truncate (with ellipsis '..') at the beginning (ltrunc),
 				  the middle (mtrunc) or the end
 				  (trunc) if the output is longer than
-				  N columns.  Note that truncating
+				  N columns.  Note that truncating with ellipsis
 				  only works correctly with N >= 2.
+				  Use (Trunc|Ltrunc) for hard truncation without ellipsis.
 '%<|(<N>)':: make the next placeholder take at least until Nth
 	     columns, padding spaces on the right if necessary
 '%>(<N>)', '%>|(<N>)':: similar to '%<(<N>)', '%<|(<N>)' respectively,
diff --git a/pretty.c b/pretty.c
index 6cb363ae1c..f67844d638 100644
--- a/pretty.c
+++ b/pretty.c
@@ -857,7 +857,9 @@ enum trunc_type {
 	trunc_none,
 	trunc_left,
 	trunc_middle,
-	trunc_right
+	trunc_right,
+	trunc_left_hard,
+	trunc_right_hard
 };
 
 struct format_commit_context {
@@ -1145,6 +1147,10 @@ static size_t parse_padding_placeholder(const char *placeholder,
 				c->truncate = trunc_left;
 			else if (starts_with(start, "mtrunc)"))
 				c->truncate = trunc_middle;
+			else if (starts_with(start, "Ltrunc)"))
+				c->truncate = trunc_left_hard;
+			else if (starts_with(start, "Trunc)"))
+				c->truncate = trunc_right_hard;
 			else
 				return 0;
 		} else
@@ -1743,6 +1749,16 @@ static size_t format_and_pad_commit(struct strbuf *sb, /* in UTF-8 */
 					    padding - 2, len - (padding - 2),
 					    "..");
 			break;
+		case trunc_left_hard:
+			strbuf_utf8_replace(&local_sb,
+					    0, len - (padding),
+					    "");
+			break;
+		case trunc_right_hard:
+			strbuf_utf8_replace(&local_sb,
+					    padding, len - (padding),
+					    "");
+			break;
 		case trunc_none:
 			break;
 		}
-- 
2.38.1.281.g83ef3ded8d
Previous: Philip OakleyNext: Taylor Blau
Message 2 of 30 in “extend the truncating pretty formats”
  1. 0/1 extend the truncating pretty formatsPhilip Oakley, Oct 30, 2022
  2. 1/1 pretty-formats: add hard truncation, without ellipsis, optionsPhilip Oakley, Oct 30, 2022
  3. Taylor BlauOct 30, 2022
  4. Philip OakleyOct 30, 2022
  5. Taylor BlauOct 30, 2022
  6. Philip OakleyOct 30, 2022
  7. 0/1 extend the truncating pretty formatsPhilip Oakley, Nov 1, 2022
  8. 1/1 pretty-formats: add hard truncation, without ellipsis, optionsPhilip Oakley, Nov 1, 2022
  9. Philip OakleyNov 1, 2022
  10. Taylor BlauNov 2, 2022
  11. pretty-formats: add hard truncation, without ellipsis, optionsPhilip Oakley, Nov 2, 2022
  12. pretty-formats: add hard truncation, without ellipsis, optionsPhilip Oakley, Nov 12, 2022
  13. Junio C HamanoNov 21, 2022
  14. Philip OakleyNov 21, 2022
  15. Junio C HamanoNov 22, 2022
  16. Philip OakleyNov 23, 2022
  17. Junio C HamanoNov 25, 2022
  18. Philip OakleyNov 26, 2022
  19. Philip OakleyNov 26, 2022
  20. Junio C HamanoNov 26, 2022
  21. Philip OakleyNov 28, 2022
  22. Junio C HamanoNov 29, 2022
  23. Philip OakleyDec 7, 2022
  24. Junio C HamanoDec 7, 2022
  25. 0/5 Pretty formats: Clarify column alignmentPhilip Oakley, Jan 19, 2023
  26. 3/5 doc: pretty-formats document negative column alignmentsPhilip Oakley, Jan 19, 2023
  27. 1/5 doc: pretty-formats: separate parameters from placeholdersPhilip Oakley, Jan 19, 2023
  28. 2/5 doc: pretty-formats: delineate `%<|(` parameter valuesPhilip Oakley, Jan 19, 2023
  29. 4/5 doc: pretty-formats describe use of ellipsis in truncationPhilip Oakley, Jan 19, 2023
  30. 5/5 doc: pretty-formats note wide char limitations, and add testsPhilip Oakley, Jan 19, 2023

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.