diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2013-12-22 23:34:13 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2013-12-22 23:34:13 +0000 |
commit | 3b2ca955f8a2aa20d55aed7f0b8fb63533fddb64 (patch) | |
tree | e82445f6f67dcbe0c89395f44bf802693714be39 /term.c | |
parent | cac6ca6afd5184c9e640382fcad986fa5922cec9 (diff) | |
download | mandoc-3b2ca955f8a2aa20d55aed7f0b8fb63533fddb64.tar.gz |
Polishing the worms in my favourite can, term_flushln().
The TERMP_TWOSPACE flag i introduced in August 2009 was idiosyncratic
and served only a very narrow purpose. Replace it by a more intuitive
and more general termp attribute "trailspace", to be used together
with TERMP_NOBREAK, to request a minimum amount of whitespace at
the end of the current column. Adapt all code to the new interface.
No functional change intended;
code reviews to confirm that are welcome *eg*.
Diffstat (limited to 'term.c')
-rw-r--r-- | term.c | 12 |
1 files changed, 5 insertions, 7 deletions
@@ -83,9 +83,8 @@ term_end(struct termp *p) * - TERMP_NOBREAK: this is the most important and is used when making * columns. In short: don't print a newline and instead expect the * next call to do the padding up to the start of the next column. - * - * - TERMP_TWOSPACE: make sure there is room for at least two space - * characters of padding. Otherwise, rather break the line. + * p->trailspace may be set to 0, 1, or 2, depending on how many + * space characters are required at the end of the column. * * - TERMP_DANGLE: don't newline when TERMP_NOBREAK is specified and * the line is overrun, and don't pad-right if it's underrun. @@ -269,8 +268,8 @@ term_flushln(struct termp *p) } if (TERMP_HANG & p->flags) { - /* We need one blank after the tag. */ - p->overstep = (int)(vis - maxvis + (*p->width)(p, ' ')); + p->overstep = (int)(vis - maxvis + + p->trailspace * (*p->width)(p, ' ')); /* * If we have overstepped the margin, temporarily move @@ -285,8 +284,7 @@ term_flushln(struct termp *p) return; /* If the column was overrun, break the line. */ - if (maxvis <= vis + - ((TERMP_TWOSPACE & p->flags) ? (*p->width)(p, ' ') : 0)) { + if (maxvis < vis + p->trailspace * (*p->width)(p, ' ')) { (*p->endline)(p); p->viscol = 0; } |