提交 37bb5d74 编写于 作者: R René Scharfe 提交者: Junio C Hamano

strbuf_add_wrapped_text(): factor out strbuf_add_indented_text()

Add a new helper function, strbuf_add_indented_text(), to indent text
without a width limit, and call it from strbuf_add_wrapped_text().  It
respects both indent (applied to the first line) and indent2 (applied to
the rest of the lines); indent2 was ignored by the indent-only path of
strbuf_add_wrapped_text() before the patch.

Two simple test cases are added, one exercising strbuf_add_wrapped_text()
and the other strbuf_add_indented_text().
Signed-off-by: NRene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 b4827599
......@@ -63,6 +63,27 @@ test_expect_success 'format' '
test_cmp expect actual
'
cat > expect << EOF
This is
the sixth
commit.
This is
the fifth
commit.
EOF
test_expect_success 'format %w(12,1,2)' '
git log -2 --format="%w(12,1,2)This is the %s commit." > actual &&
test_cmp expect actual
'
test_expect_success 'format %w(,1,2)' '
git log -2 --format="%w(,1,2)This is%nthe %s%ncommit." > actual &&
test_cmp expect actual
'
cat > expect << EOF
804a787 sixth
394ef78 fifth
......
......@@ -298,6 +298,22 @@ static void print_spaces(struct strbuf *buf, int count)
strbuf_write(buf, s, count);
}
static void strbuf_add_indented_text(struct strbuf *buf, const char *text,
int indent, int indent2)
{
if (indent < 0)
indent = 0;
while (*text) {
const char *eol = strchrnul(text, '\n');
if (*eol == '\n')
eol++;
print_spaces(buf, indent);
strbuf_write(buf, text, eol - text);
text = eol;
indent = indent2;
}
}
/*
* Wrap the text, if necessary. The variable indent is the indent for the
* first line, indent2 is the indent for all other lines.
......@@ -311,15 +327,7 @@ int strbuf_add_wrapped_text(struct strbuf *buf,
const char *bol = text, *space = NULL;
if (width <= 0) {
/* just indent */
while (*text) {
const char *eol = strchrnul(text, '\n');
if (*eol == '\n')
eol++;
print_spaces(buf, indent);
strbuf_write(buf, text, eol-text);
text = eol;
}
strbuf_add_indented_text(buf, text, indent, indent2);
return 1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册