From 4a4657f9f40ea60d08ecfb7c12fc46e29440ff58 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sun, 4 Jun 2017 22:44:15 +0000 Subject: Implement the roff(7) .mc (right margin character) request. The Tcl/Tk manual pages use this extensively. Delete the TERM_MAXMARGIN hack, it breaks .mc inside .nf; instead, implement a proper TERMP_BRNEVER flag. --- mdoc_term.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'mdoc_term.c') diff --git a/mdoc_term.c b/mdoc_term.c index 0f885f81..3ba02290 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.360 2017/06/04 18:50:35 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.361 2017/06/04 22:44:15 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012-2017 Ingo Schwarze @@ -1413,7 +1413,7 @@ termp_fa_pre(DECL_ARGS) static int termp_bd_pre(DECL_ARGS) { - size_t lm, len, rm, rmax; + size_t lm, len; struct roff_node *nn; int offset; @@ -1460,17 +1460,14 @@ termp_bd_pre(DECL_ARGS) } lm = p->offset; - rm = p->rmargin; - rmax = p->maxrmargin; - p->rmargin = p->maxrmargin = TERM_MAXMARGIN; - + p->flags |= TERMP_BRNEVER; for (nn = n->child; nn; nn = nn->next) { if (DISP_centered == n->norm->Bd.type) { if (nn->type == ROFFT_TEXT) { len = term_strlen(p, nn->string); - p->offset = len >= rm ? 0 : - lm + len >= rm ? rm - len : - (lm + rm - len) / 2; + p->offset = len >= p->rmargin ? 0 : + lm + len >= p->rmargin ? p->rmargin - len : + (lm + p->rmargin - len) / 2; } else p->offset = lm; } @@ -1500,32 +1497,21 @@ termp_bd_pre(DECL_ARGS) term_flushln(p); p->flags |= TERMP_NOSPACE; } - - p->rmargin = rm; - p->maxrmargin = rmax; + p->flags &= ~TERMP_BRNEVER; return 0; } static void termp_bd_post(DECL_ARGS) { - size_t rm, rmax; - if (n->type != ROFFT_BODY) return; - - rm = p->rmargin; - rmax = p->maxrmargin; - if (DISP_literal == n->norm->Bd.type || DISP_unfilled == n->norm->Bd.type) - p->rmargin = p->maxrmargin = TERM_MAXMARGIN; - + p->flags |= TERMP_BRNEVER; p->flags |= TERMP_NOSPACE; term_newln(p); - - p->rmargin = rm; - p->maxrmargin = rmax; + p->flags &= ~TERMP_BRNEVER; } static int -- cgit v1.2.3-56-ge451