зеркало из https://github.com/microsoft/git.git
Actually make print_wrapped_text() useful
Now, it returns the current column, does not add a newline, and you can pass a negative indent, to indicate that the indent was already printed. With this, you can actually continue in the middle of a paragraph, not having to print everything into a buffer first. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
e52a5de45a
Коммит
094e03b039
17
utf8.c
17
utf8.c
|
@ -235,12 +235,19 @@ static void print_spaces(int count)
|
|||
/*
|
||||
* Wrap the text, if necessary. The variable indent is the indent for the
|
||||
* first line, indent2 is the indent for all other lines.
|
||||
* If indent is negative, assume that already -indent columns have been
|
||||
* consumed (and no extra indent is necessary for the first line).
|
||||
*/
|
||||
void print_wrapped_text(const char *text, int indent, int indent2, int width)
|
||||
int print_wrapped_text(const char *text, int indent, int indent2, int width)
|
||||
{
|
||||
int w = indent, assume_utf8 = is_utf8(text);
|
||||
const char *bol = text, *space = NULL;
|
||||
|
||||
if (indent < 0) {
|
||||
w = -indent;
|
||||
space = text;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
char c = *text;
|
||||
if (!c || isspace(c)) {
|
||||
|
@ -251,10 +258,9 @@ void print_wrapped_text(const char *text, int indent, int indent2, int width)
|
|||
else
|
||||
print_spaces(indent);
|
||||
fwrite(start, text - start, 1, stdout);
|
||||
if (!c) {
|
||||
putchar('\n');
|
||||
return;
|
||||
} else if (c == '\t')
|
||||
if (!c)
|
||||
return w;
|
||||
else if (c == '\t')
|
||||
w |= 0x07;
|
||||
space = text;
|
||||
w++;
|
||||
|
@ -275,6 +281,7 @@ void print_wrapped_text(const char *text, int indent, int indent2, int width)
|
|||
text++;
|
||||
}
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
int is_encoding_utf8(const char *name)
|
||||
|
|
2
utf8.h
2
utf8.h
|
@ -5,7 +5,7 @@ int utf8_width(const char **start);
|
|||
int is_utf8(const char *text);
|
||||
int is_encoding_utf8(const char *name);
|
||||
|
||||
void print_wrapped_text(const char *text, int indent, int indent2, int len);
|
||||
int print_wrapped_text(const char *text, int indent, int indent2, int len);
|
||||
|
||||
#ifndef NO_ICONV
|
||||
char *reencode_string(const char *in, const char *out_encoding, const char *in_encoding);
|
||||
|
|
Загрузка…
Ссылка в новой задаче