From 3aebc3c30c9b70518679c6e3c9610ac4ffc32b61 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sat, 5 Jan 2019 00:36:50 +0000 Subject: Some high-level block macros have an effect similar to temporarily suspending no-fill mode during their head. Model this with an additional roff parser state flag ROFF_NONOFILL. That is much simpler than it would be to save and restore the ROFF_NOFILL flag itself, in particular since the latter can be switched (with lasting effect) by the .nf and .fi requests even while its effect is temporarily suspended. This commit does not change formatting yet, but prepares for future formatting simplifications and improvements. --- man.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'man.c') diff --git a/man.c b/man.c index 6bdb4d91..f0e4002b 100644 --- a/man.c +++ b/man.c @@ -1,7 +1,7 @@ -/* $Id: man.c,v 1.186 2018/12/31 10:04:39 schwarze Exp $ */ +/* $Id: man.c,v 1.187 2019/01/05 00:36:50 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2013,2014,2015,2017,2018 Ingo Schwarze + * Copyright (c) 2013-2015, 2017-2019 Ingo Schwarze * Copyright (c) 2011 Joerg Sonnenberger * * Permission to use, copy, modify, and distribute this software for any @@ -92,9 +92,9 @@ man_descope(struct roff_man *man, int line, int offs, char *start) } if ( ! (man->flags & MAN_BLINE)) return; - man->flags &= ~MAN_BLINE; man_unscope(man, man->last->parent); roff_body_alloc(man, line, offs, man->last->tok); + man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); } static int @@ -268,9 +268,9 @@ man_pmacro(struct roff_man *man, int ln, char *buf, int offs) man_macro(tok)->flags & MAN_NSCOPED) return 1; - man->flags &= ~MAN_BLINE; man_unscope(man, man->last->parent); roff_body_alloc(man, ln, ppos, man->last->tok); + man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); return 1; } @@ -313,7 +313,7 @@ man_breakscope(struct roff_man *man, int tok) n = man->last; man_unscope(man, n); roff_body_alloc(man, n->line, n->pos, n->tok); - man->flags &= ~MAN_BLINE; + man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); } /* @@ -340,6 +340,6 @@ man_breakscope(struct roff_man *man, int tok) "%s breaks %s", roff_name[tok], roff_name[n->tok]); roff_node_delete(man, n); - man->flags &= ~MAN_BLINE; + man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); } } -- cgit v1.2.3