pretty: Introduce ' ' modifier to add space if non-empty
We have the '+' modifiier which helps combine format specifiers which may possibly be empty, e.g. '%s%+b%n'. Introduce an analogous ' ' (space) modifier which adds a space before non-empty items. This helps assemble "one line type" format specifiers. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6068cdcc83
commit
7b88176e9b
@ -159,6 +159,10 @@ If you add a `-` (minus sign) after '%' of a placeholder, line-feeds that
|
|||||||
immediately precede the expansion are deleted if and only if the
|
immediately precede the expansion are deleted if and only if the
|
||||||
placeholder expands to an empty string.
|
placeholder expands to an empty string.
|
||||||
|
|
||||||
|
If you add a ` ` (space) after '%' of a placeholder, a space
|
||||||
|
is inserted immediately before the expansion if and only if the
|
||||||
|
placeholder expands to a non-empty string.
|
||||||
|
|
||||||
* 'tformat:'
|
* 'tformat:'
|
||||||
+
|
+
|
||||||
The 'tformat:' format works exactly like 'format:', except that it
|
The 'tformat:' format works exactly like 'format:', except that it
|
||||||
|
11
pretty.c
11
pretty.c
@ -942,6 +942,7 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
|||||||
NO_MAGIC,
|
NO_MAGIC,
|
||||||
ADD_LF_BEFORE_NON_EMPTY,
|
ADD_LF_BEFORE_NON_EMPTY,
|
||||||
DEL_LF_BEFORE_EMPTY,
|
DEL_LF_BEFORE_EMPTY,
|
||||||
|
ADD_SP_BEFORE_NON_EMPTY,
|
||||||
} magic = NO_MAGIC;
|
} magic = NO_MAGIC;
|
||||||
|
|
||||||
switch (placeholder[0]) {
|
switch (placeholder[0]) {
|
||||||
@ -951,6 +952,9 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
|||||||
case '+':
|
case '+':
|
||||||
magic = ADD_LF_BEFORE_NON_EMPTY;
|
magic = ADD_LF_BEFORE_NON_EMPTY;
|
||||||
break;
|
break;
|
||||||
|
case ' ':
|
||||||
|
magic = ADD_SP_BEFORE_NON_EMPTY;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -965,8 +969,11 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
|
|||||||
if ((orig_len == sb->len) && magic == DEL_LF_BEFORE_EMPTY) {
|
if ((orig_len == sb->len) && magic == DEL_LF_BEFORE_EMPTY) {
|
||||||
while (sb->len && sb->buf[sb->len - 1] == '\n')
|
while (sb->len && sb->buf[sb->len - 1] == '\n')
|
||||||
strbuf_setlen(sb, sb->len - 1);
|
strbuf_setlen(sb, sb->len - 1);
|
||||||
} else if ((orig_len != sb->len) && magic == ADD_LF_BEFORE_NON_EMPTY) {
|
} else if (orig_len != sb->len) {
|
||||||
|
if (magic == ADD_LF_BEFORE_NON_EMPTY)
|
||||||
strbuf_insert(sb, orig_len, "\n", 1);
|
strbuf_insert(sb, orig_len, "\n", 1);
|
||||||
|
else if (magic == ADD_SP_BEFORE_NON_EMPTY)
|
||||||
|
strbuf_insert(sb, orig_len, " ", 1);
|
||||||
}
|
}
|
||||||
return consumed + 1;
|
return consumed + 1;
|
||||||
}
|
}
|
||||||
@ -976,7 +983,7 @@ static size_t userformat_want_item(struct strbuf *sb, const char *placeholder,
|
|||||||
{
|
{
|
||||||
struct userformat_want *w = context;
|
struct userformat_want *w = context;
|
||||||
|
|
||||||
if (*placeholder == '+' || *placeholder == '-')
|
if (*placeholder == '+' || *placeholder == '-' || *placeholder == ' ')
|
||||||
placeholder++;
|
placeholder++;
|
||||||
|
|
||||||
switch (*placeholder) {
|
switch (*placeholder) {
|
||||||
|
@ -200,6 +200,16 @@ test_expect_success 'add LF before non-empty (2)' '
|
|||||||
grep "^$" actual
|
grep "^$" actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add SP before non-empty (1)' '
|
||||||
|
git show -s --pretty=format:"%s% bThanks" HEAD^^ >actual &&
|
||||||
|
test $(wc -w <actual) = 2
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add SP before non-empty (2)' '
|
||||||
|
git show -s --pretty=format:"%s% sThanks" HEAD^^ >actual &&
|
||||||
|
test $(wc -w <actual) = 4
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '--abbrev' '
|
test_expect_success '--abbrev' '
|
||||||
echo SHORT SHORT SHORT >expect2 &&
|
echo SHORT SHORT SHORT >expect2 &&
|
||||||
echo LONG LONG LONG >expect3 &&
|
echo LONG LONG LONG >expect3 &&
|
||||||
|
Loading…
Reference in New Issue
Block a user