aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-12-22 23:34:13 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-12-22 23:34:13 +0000
commit7763823a09119fdfe1ca1e3baef83ca1b5a39713 (patch)
tree5640a8fd9667aa8c0f607065cb19adf7754ab748 /term.c
parentc7089c4c53f1f303b3db0a33aa5dbb9c79ded016 (diff)
downloadmandoc-7763823a09119fdfe1ca1e3baef83ca1b5a39713.tar.gz
mandoc-7763823a09119fdfe1ca1e3baef83ca1b5a39713.tar.zst
mandoc-7763823a09119fdfe1ca1e3baef83ca1b5a39713.zip
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.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/term.c b/term.c
index 16def787..db53c211 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.210 2013/08/21 21:20:40 schwarze Exp $ */
+/* $Id: term.c,v 1.211 2013/12/22 23:34:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -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;
}