* [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly
@ 2015-09-11 13:47 Josef Kufner
2015-09-11 16:54 ` Junio C Hamano
0 siblings, 1 reply; 8+ messages in thread
From: Josef Kufner @ 2015-09-11 13:47 UTC (permalink / raw)
To: git; +Cc: Josef Kufner
Pass graph width to pretty formatting function, so it can handle
'%>|(N)' paddings correctly when --graph option is used.
Example:
git log --all --graph --pretty='format: [%>|(20)%h] %ar%d'
All commit hashes should be aligned at 20th column from edge of the
terminal, not from the edge of the graph.
Signed-off-by: Josef Kufner <josef@kufner.cz>
---
commit.h | 1 +
graph.c | 7 +++++++
graph.h | 5 +++++
log-tree.c | 2 ++
pretty.c | 1 +
5 files changed, 16 insertions(+)
diff --git a/commit.h b/commit.h
index 5d58be0..0a9a707 100644
--- a/commit.h
+++ b/commit.h
@@ -160,6 +160,7 @@ struct pretty_print_context {
* should not be counted on by callers.
*/
struct string_list in_body_headers;
+ int graph_width;
};
struct userformat_want {
diff --git a/graph.c b/graph.c
index c25a09a..4802411 100644
--- a/graph.c
+++ b/graph.c
@@ -671,6 +671,13 @@ static void graph_output_padding_line(struct git_graph *graph,
graph_pad_horizontally(graph, sb, graph->num_new_columns * 2);
}
+
+int graph_width(struct git_graph *graph)
+{
+ return graph->width;
+}
+
+
static void graph_output_skip_line(struct git_graph *graph, struct strbuf *sb)
{
/*
diff --git a/graph.h b/graph.h
index 0be62bd..3f48c19 100644
--- a/graph.h
+++ b/graph.h
@@ -68,6 +68,11 @@ int graph_next_line(struct git_graph *graph, struct strbuf *sb);
/*
+ * Return current width of the graph in on-screen characters.
+ */
+int graph_width(struct git_graph *graph);
+
+/*
* graph_show_*: helper functions for printing to stdout
*/
diff --git a/log-tree.c b/log-tree.c
index 7b1b57a..08fd5b6 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -686,6 +686,8 @@ void show_log(struct rev_info *opt)
ctx.output_encoding = get_log_output_encoding();
if (opt->from_ident.mail_begin && opt->from_ident.name_begin)
ctx.from_ident = &opt->from_ident;
+ if (opt->graph)
+ ctx.graph_width = graph_width(opt->graph);
pretty_print_commit(&ctx, commit, &msgbuf);
if (opt->add_signoff)
diff --git a/pretty.c b/pretty.c
index 151c2ae..f1cf9e2 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1297,6 +1297,7 @@ static size_t format_and_pad_commit(struct strbuf *sb, /* in UTF-8 */
if (!start)
start = sb->buf;
occupied = utf8_strnwidth(start, -1, 1);
+ occupied += c->pretty_ctx->graph_width;
padding = (-padding) - occupied;
}
while (1) {
--
2.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly
2015-09-11 13:47 [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly Josef Kufner
@ 2015-09-11 16:54 ` Junio C Hamano
2015-09-11 17:50 ` [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly" Josef Kufner
2015-09-11 17:52 ` [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly Josef Kufner
0 siblings, 2 replies; 8+ messages in thread
From: Junio C Hamano @ 2015-09-11 16:54 UTC (permalink / raw)
To: Josef Kufner; +Cc: git, Nguyễn Thái Ngọc Duy
This "feels" correct ;-), but let me summon Duy who did the %><
padding at around a5752342 (pretty: support padding placeholders, %<
%> and %><, 2013-04-19) for an extra set of eyes.
Care to add a test or two while at it?
Thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly"
2015-09-11 16:54 ` Junio C Hamano
@ 2015-09-11 17:50 ` Josef Kufner
2015-09-11 19:37 ` Eric Sunshine
2015-09-11 17:52 ` [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly Josef Kufner
1 sibling, 1 reply; 8+ messages in thread
From: Josef Kufner @ 2015-09-11 17:50 UTC (permalink / raw)
To: git; +Cc: Josef Kufner
---
t/t4205-log-pretty-formats.sh | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
index 7398605..3358837 100755
--- a/t/t4205-log-pretty-formats.sh
+++ b/t/t4205-log-pretty-formats.sh
@@ -319,6 +319,18 @@ EOF
test_cmp expected actual
'
+# Note: Space between 'message' and 'two' should be in the same column as in previous test.
+test_expect_success 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding' '
+ git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
+* $head1 message two
+* $head2 message one
+* $head3 add bar
+* $head4 $(commit_msg)
+EOF
+ test_cmp expected actual
+'
+
test_expect_success 'right alignment formatting with no padding' '
git log --pretty="tformat:%>(1)%s" >actual &&
cat <<EOF >expected &&
@@ -330,6 +342,17 @@ EOF
test_cmp expected actual
'
+test_expect_success 'right alignment formatting with no padding and with --graph' '
+ git log --graph --pretty="tformat:%>(1)%s" >actual &&
+ cat <<EOF >expected &&
+* message two
+* message one
+* add bar
+* $(commit_msg)
+EOF
+ test_cmp expected actual
+'
+
test_expect_success 'right alignment formatting with no padding. i18n.logOutputEncoding' '
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
--
2.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly
2015-09-11 16:54 ` Junio C Hamano
2015-09-11 17:50 ` [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly" Josef Kufner
@ 2015-09-11 17:52 ` Josef Kufner
1 sibling, 0 replies; 8+ messages in thread
From: Josef Kufner @ 2015-09-11 17:52 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Nguyễn Thái Ngọc Duy
[-- Attachment #1: Type: text/plain, Size: 419 bytes --]
Ok, there are the two tests (see the second e-mail). It should cover two
cases where something may go wrong.
Junio C Hamano wrote, on 11.9.2015 18:54:
> This "feels" correct ;-), but let me summon Duy who did the %><
> padding at around a5752342 (pretty: support padding placeholders, %<
> %> and %><, 2013-04-19) for an extra set of eyes.
>
> Care to add a test or two while at it?
>
> Thanks.
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly"
2015-09-11 17:50 ` [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly" Josef Kufner
@ 2015-09-11 19:37 ` Eric Sunshine
2015-09-11 20:19 ` Junio C Hamano
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Eric Sunshine @ 2015-09-11 19:37 UTC (permalink / raw)
To: Josef Kufner; +Cc: Git List
On Fri, Sep 11, 2015 at 1:50 PM, Josef Kufner <josef@kufner.cz> wrote:
> ---
Missing sign-off. Or is this intended to be concatenated with the
patch you sent earlier?
> diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
> index 7398605..3358837 100755
> --- a/t/t4205-log-pretty-formats.sh
> +++ b/t/t4205-log-pretty-formats.sh
> @@ -319,6 +319,18 @@ EOF
> test_cmp expected actual
> '
>
> +# Note: Space between 'message' and 'two' should be in the same column as in previous test.
> +test_expect_success 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding' '
> + git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
> + qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
You don't seem to be taking advantage of qz_to_tab_space's
transliteration of Q to tab and Z to space, so s/qz_to_tab_space/cat/
would make the code clearer.
> +* $head1 message two
> +* $head2 message one
> +* $head3 add bar
> +* $head4 $(commit_msg)
> +EOF
> + test_cmp expected actual
> +'
> +
> test_expect_success 'right alignment formatting with no padding' '
> git log --pretty="tformat:%>(1)%s" >actual &&
> cat <<EOF >expected &&
> @@ -330,6 +342,17 @@ EOF
> test_cmp expected actual
> '
>
> +test_expect_success 'right alignment formatting with no padding and with --graph' '
> + git log --graph --pretty="tformat:%>(1)%s" >actual &&
> + cat <<EOF >expected &&
> +* message two
> +* message one
> +* add bar
> +* $(commit_msg)
> +EOF
> + test_cmp expected actual
> +'
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly"
2015-09-11 19:37 ` Eric Sunshine
@ 2015-09-11 20:19 ` Junio C Hamano
2015-09-11 20:22 ` Josef Kufner
2015-09-11 20:25 ` Josef Kufner
2 siblings, 0 replies; 8+ messages in thread
From: Junio C Hamano @ 2015-09-11 20:19 UTC (permalink / raw)
To: Eric Sunshine; +Cc: Josef Kufner, Git List
Eric Sunshine <sunshine@sunshineco.com> writes:
>> + qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
>
> You don't seem to be taking advantage of qz_to_tab_space's
> transliteration of Q to tab and Z to space, so s/qz_to_tab_space/cat/
> would make the code clearer.
Don't cat into a pipe unless you are concatenating multiple files,
though ;-).
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly"
2015-09-11 19:37 ` Eric Sunshine
2015-09-11 20:19 ` Junio C Hamano
@ 2015-09-11 20:22 ` Josef Kufner
2015-09-11 20:25 ` Josef Kufner
2 siblings, 0 replies; 8+ messages in thread
From: Josef Kufner @ 2015-09-11 20:22 UTC (permalink / raw)
To: git; +Cc: Josef Kufner
Signed-off-by: Josef Kufner <josef@kufner.cz>
---
t/t4205-log-pretty-formats.sh | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
index 7398605..3358837 100755
--- a/t/t4205-log-pretty-formats.sh
+++ b/t/t4205-log-pretty-formats.sh
@@ -319,6 +319,18 @@ EOF
test_cmp expected actual
'
+# Note: Space between 'message' and 'two' should be in the same column as in previous test.
+test_expect_success 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding' '
+ git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
+ qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
+* $head1 message two
+* $head2 message one
+* $head3 add bar
+* $head4 $(commit_msg)
+EOF
+ test_cmp expected actual
+'
+
test_expect_success 'right alignment formatting with no padding' '
git log --pretty="tformat:%>(1)%s" >actual &&
cat <<EOF >expected &&
@@ -330,6 +342,17 @@ EOF
test_cmp expected actual
'
+test_expect_success 'right alignment formatting with no padding and with --graph' '
+ git log --graph --pretty="tformat:%>(1)%s" >actual &&
+ cat <<EOF >expected &&
+* message two
+* message one
+* add bar
+* $(commit_msg)
+EOF
+ test_cmp expected actual
+'
+
test_expect_success 'right alignment formatting with no padding. i18n.logOutputEncoding' '
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
--
2.5.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly"
2015-09-11 19:37 ` Eric Sunshine
2015-09-11 20:19 ` Junio C Hamano
2015-09-11 20:22 ` Josef Kufner
@ 2015-09-11 20:25 ` Josef Kufner
2 siblings, 0 replies; 8+ messages in thread
From: Josef Kufner @ 2015-09-11 20:25 UTC (permalink / raw)
To: Eric Sunshine; +Cc: Git List
[-- Attachment #1: Type: text/plain, Size: 1339 bytes --]
Eric Sunshine wrote, on 11.9.2015 21:37:
> On Fri, Sep 11, 2015 at 1:50 PM, Josef Kufner <josef@kufner.cz> wrote:
>> ---
>
> Missing sign-off. Or is this intended to be concatenated with the
> patch you sent earlier?
Just forgot to add it. Fixed patch on the way.
>> diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
>> index 7398605..3358837 100755
>> --- a/t/t4205-log-pretty-formats.sh
>> +++ b/t/t4205-log-pretty-formats.sh
>> @@ -319,6 +319,18 @@ EOF
>> test_cmp expected actual
>> '
>>
>> +# Note: Space between 'message' and 'two' should be in the same column as in previous test.
>> +test_expect_success 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding' '
>> + git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
>> + qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
>
> You don't seem to be taking advantage of qz_to_tab_space's
> transliteration of Q to tab and Z to space, so s/qz_to_tab_space/cat/
> would make the code clearer.
I've copied another test which tests the padding without --graph and
added it to test the new case. I have no idea what qz_to_tab_space can
do. If you wish some clean up, it should be done on older tests too :)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-09-11 20:25 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-11 13:47 [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly Josef Kufner
2015-09-11 16:54 ` Junio C Hamano
2015-09-11 17:50 ` [PATCH] Add tests for "Pass graph width to pretty formatting, so '%>|' can work properly" Josef Kufner
2015-09-11 19:37 ` Eric Sunshine
2015-09-11 20:19 ` Junio C Hamano
2015-09-11 20:22 ` Josef Kufner
2015-09-11 20:25 ` Josef Kufner
2015-09-11 17:52 ` [PATCH] Pass graph width to pretty formatting, so '%>|' can work properly Josef Kufner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.