aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tbl_term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-08 18:11:22 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-08 18:11:22 +0000
commit487d956e07013bc929ab478a0503246df414b00a (patch)
tree22c2d5abff010bc035dd6d8ee6c0d64f46a9b627 /tbl_term.c
parent789580a2a2366243d622766fdadd094931ca6596 (diff)
downloadmandoc-487d956e07013bc929ab478a0503246df414b00a.tar.gz
mandoc-487d956e07013bc929ab478a0503246df414b00a.tar.zst
mandoc-487d956e07013bc929ab478a0503246df414b00a.zip
Implement w layout specifier (minimum column width).
Improve width calculation of text blocks. Reduces the groff/mandoc diff in Base+Xenocara by about 800 lines.
Diffstat (limited to 'tbl_term.c')
-rw-r--r--tbl_term.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/tbl_term.c b/tbl_term.c
index 98afde3d..52c41a21 100644
--- a/tbl_term.c
+++ b/tbl_term.c
@@ -1,4 +1,4 @@
-/* $Id: tbl_term.c,v 1.45 2017/06/07 17:38:26 schwarze Exp $ */
+/* $Id: tbl_term.c,v 1.46 2017/06/08 18:11:22 schwarze Exp $ */
/*
* Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011,2012,2014,2015,2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -30,6 +30,7 @@
static size_t term_tbl_len(size_t, void *);
static size_t term_tbl_strlen(const char *, void *);
+static size_t term_tbl_sulen(const struct roffsu *, void *);
static void tbl_char(struct termp *, char, size_t);
static void tbl_data(struct termp *, const struct tbl_opts *,
const struct tbl_dat *,
@@ -44,16 +45,20 @@ static void tbl_word(struct termp *, const struct tbl_dat *);
static size_t
-term_tbl_strlen(const char *p, void *arg)
+term_tbl_sulen(const struct roffsu *su, void *arg)
{
+ return term_hspan((const struct termp *)arg, su) / 24;
+}
+static size_t
+term_tbl_strlen(const char *p, void *arg)
+{
return term_strlen((const struct termp *)arg, p);
}
static size_t
term_tbl_len(size_t sz, void *arg)
{
-
return term_len((const struct termp *)arg, sz);
}
@@ -78,6 +83,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp)
if (tp->tbl.cols == NULL) {
tp->tbl.len = term_tbl_len;
tp->tbl.slen = term_tbl_strlen;
+ tp->tbl.sulen = term_tbl_sulen;
tp->tbl.arg = tp;
tblcalc(&tp->tbl, sp, tp->tcol->rmargin - tp->tcol->offset);