tweaks: factor out a fragment of code that is repeated three times
parent
c3bf17a801
commit
45b1a38b82
37
src/text.c
37
src/text.c
|
@ -1596,6 +1596,15 @@ size_t indent_length(const char *line)
|
||||||
#endif /* !NANO_TINY || ENABLE_JUSTIFY */
|
#endif /* !NANO_TINY || ENABLE_JUSTIFY */
|
||||||
|
|
||||||
#ifdef ENABLE_JUSTIFY
|
#ifdef ENABLE_JUSTIFY
|
||||||
|
/* Copy a character from one place to another. */
|
||||||
|
void copy_character(char **from, char **to)
|
||||||
|
{
|
||||||
|
int charlen = parse_mbchar(*from, NULL, NULL);
|
||||||
|
|
||||||
|
while (--charlen >= 0)
|
||||||
|
*((*to)++) = *((*from)++);
|
||||||
|
}
|
||||||
|
|
||||||
/* In the given line, replace any series of blanks with a single space,
|
/* In the given line, replace any series of blanks with a single space,
|
||||||
* but keep two spaces (if there are two) after any closing punctuation,
|
* but keep two spaces (if there are two) after any closing punctuation,
|
||||||
* and remove all blanks from the end of the line. Leave the first skip
|
* and remove all blanks from the end of the line. Leave the first skip
|
||||||
|
@ -1603,7 +1612,6 @@ size_t indent_length(const char *line)
|
||||||
void squeeze(linestruct *line, size_t skip)
|
void squeeze(linestruct *line, size_t skip)
|
||||||
{
|
{
|
||||||
char *from, *to, *newdata;
|
char *from, *to, *newdata;
|
||||||
int charlen;
|
|
||||||
|
|
||||||
newdata = charalloc(strlen(line->data) + 1);
|
newdata = charalloc(strlen(line->data) + 1);
|
||||||
strncpy(newdata, line->data, skip);
|
strncpy(newdata, line->data, skip);
|
||||||
|
@ -1622,21 +1630,10 @@ void squeeze(linestruct *line, size_t skip)
|
||||||
while (*from != '\0' && is_blank_mbchar(from))
|
while (*from != '\0' && is_blank_mbchar(from))
|
||||||
from += parse_mbchar(from, NULL, NULL);
|
from += parse_mbchar(from, NULL, NULL);
|
||||||
} else if (mbstrchr(punct, from) != NULL) {
|
} else if (mbstrchr(punct, from) != NULL) {
|
||||||
charlen = parse_mbchar(from, NULL, NULL);
|
copy_character(&from, &to);
|
||||||
|
|
||||||
while (charlen > 0) {
|
if (*from != '\0' && mbstrchr(brackets, from) != NULL)
|
||||||
*(to++) = *(from++);
|
copy_character(&from, &to);
|
||||||
charlen--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*from != '\0' && mbstrchr(brackets, from) != NULL) {
|
|
||||||
charlen = parse_mbchar(from, NULL, NULL);
|
|
||||||
|
|
||||||
while (charlen > 0) {
|
|
||||||
*(to++) = *(from++);
|
|
||||||
charlen--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*from != '\0' && is_blank_mbchar(from)) {
|
if (*from != '\0' && is_blank_mbchar(from)) {
|
||||||
from += parse_mbchar(from, NULL, NULL);
|
from += parse_mbchar(from, NULL, NULL);
|
||||||
|
@ -1649,14 +1646,8 @@ void squeeze(linestruct *line, size_t skip)
|
||||||
|
|
||||||
while (*from != '\0' && is_blank_mbchar(from))
|
while (*from != '\0' && is_blank_mbchar(from))
|
||||||
from += parse_mbchar(from, NULL, NULL);
|
from += parse_mbchar(from, NULL, NULL);
|
||||||
} else {
|
} else
|
||||||
charlen = parse_mbchar(from, NULL, NULL);
|
copy_character(&from, &to);
|
||||||
|
|
||||||
while (charlen > 0) {
|
|
||||||
*(to++) = *(from++);
|
|
||||||
charlen--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there are spaces at the end of the line, remove them. */
|
/* If there are spaces at the end of the line, remove them. */
|
||||||
|
|
Loading…
Reference in New Issue