diff options
-rwxr-xr-x | t/t4202-log.sh | 21 | ||||
-rw-r--r-- | utf8.c | 26 |
2 files changed, 38 insertions, 9 deletions
diff --git a/t/t4202-log.sh b/t/t4202-log.sh index 1e952ca55..779a5adf5 100755 --- a/t/t4202-log.sh +++ b/t/t4202-log.sh @@ -64,6 +64,27 @@ test_expect_success 'format' ' ' 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 5d31159 fourth @@ -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; } |