diff options
-rw-r--r-- | TODO | 7 | ||||
-rw-r--r-- | man_macro.c | 7 | ||||
-rw-r--r-- | man_term.c | 39 |
3 files changed, 23 insertions, 30 deletions
@@ -1,6 +1,6 @@ ************************************************************************ * Official mandoc TODO. -* $Id: TODO,v 1.111 2011/06/18 16:18:04 kristaps Exp $ +* $Id: TODO,v 1.112 2011/06/18 17:36:52 kristaps Exp $ ************************************************************************ ************************************************************************ @@ -120,11 +120,6 @@ --- missing man features ----------------------------------------------- -- .RS/.RE can be nested, see e.g. the x11/fluxbox manuals - noticed by dcoppa@ Wed, Apr 13, 2011 at 04:58:14PM +0200: - also affects p5-Net-SFTP-Foreign-1.65 - as reported by gsoares@ Wed, 18 May 2011 09:59:06 -0300 - - groff an-ext.tmac macros (.UR, .UE) occur in xine(5) reported by brad@ Sat, 15 Jan 2011 15:45:23 -0500 diff --git a/man_macro.c b/man_macro.c index 915648b4..c5a7d4ab 100644 --- a/man_macro.c +++ b/man_macro.c @@ -1,4 +1,4 @@ -/* $Id: man_macro.c,v 1.62 2011/04/19 16:38:48 kristaps Exp $ */ +/* $Id: man_macro.c,v 1.63 2011/06/18 17:36:52 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -307,11 +307,6 @@ blk_exp(MACRO_PROT_ARGS) * anywhere. */ - if ( ! rew_scope(MAN_BODY, m, tok)) - return(0); - if ( ! rew_scope(MAN_BLOCK, m, tok)) - return(0); - if ( ! man_block_alloc(m, line, ppos, tok)) return(0); if ( ! man_head_alloc(m, line, ppos, tok)) @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.109 2011/05/17 14:38:34 kristaps Exp $ */ +/* $Id: man_term.c,v 1.110 2011/06/18 17:36:52 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> @@ -791,13 +791,12 @@ post_SH(DECL_ARGS) } } - /* ARGSUSED */ static int pre_RS(DECL_ARGS) { - const struct man_node *nn; - int ival; + int ival; + size_t sz; switch (n->type) { case (MAN_BLOCK): @@ -809,40 +808,44 @@ pre_RS(DECL_ARGS) break; } - if (NULL == (nn = n->parent->head->child)) { - mt->offset = mt->lmargin + term_len(p, INDENT); - p->offset = mt->offset; - return(1); - } + sz = term_len(p, INDENT); - if ((ival = a2width(p, nn->string)) < 0) - return(1); + if (NULL != (n = n->parent->head->child)) + if ((ival = a2width(p, n->string)) >= 0) + sz = (size_t)ival; - mt->offset = term_len(p, INDENT) + (size_t)ival; + mt->offset += sz; p->offset = mt->offset; return(1); } - /* ARGSUSED */ static void post_RS(DECL_ARGS) { + int ival; + size_t sz; switch (n->type) { case (MAN_BLOCK): - mt->offset = mt->lmargin = term_len(p, INDENT); - break; + return; case (MAN_HEAD): - break; + return; default: term_newln(p); - p->offset = term_len(p, INDENT); break; } -} + sz = term_len(p, INDENT); + + if (NULL != (n = n->parent->head->child)) + if ((ival = a2width(p, n->string)) >= 0) + sz = (size_t)ival; + + mt->offset = mt->offset < sz ? 0 : mt->offset - sz; + p->offset = mt->offset; +} static void print_man_node(DECL_ARGS) |