=================================================================== RCS file: /cvs/mandoc/man_macro.c,v retrieving revision 1.143 retrieving revision 1.146 diff -u -p -r1.143 -r1.146 --- mandoc/man_macro.c 2019/01/05 00:36:50 1.143 +++ mandoc/man_macro.c 2022/04/13 14:45:50 1.146 @@ -1,7 +1,7 @@ -/* $Id: man_macro.c,v 1.143 2019/01/05 00:36:50 schwarze Exp $ */ +/* $Id: man_macro.c,v 1.146 2022/04/13 14:45:50 schwarze Exp $ */ /* + * Copyright (c) 2012-2015,2017-2020,2022 Ingo Schwarze * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2012-2015, 2017-2019 Ingo Schwarze * Copyright (c) 2013 Franco Fichtner * * Permission to use, copy, modify, and distribute this software for any @@ -107,9 +107,12 @@ man_unscope(struct roff_man *man, const struct roff_no mandoc_msg(MANDOCERR_BLK_LINE, n->line, n->pos, "EOF breaks %s", roff_name[n->tok]); - if (man->flags & MAN_ELINE) - man->flags &= ~MAN_ELINE; - else { + if (man->flags & MAN_ELINE) { + if (n->parent->type == ROFFT_ROOT || + (man_macro(n->parent->tok)->flags & + MAN_ESCOPED) == 0) + man->flags &= ~MAN_ELINE; + } else { assert(n->type == ROFFT_HEAD); n = n->parent; man->flags &= ~MAN_BLINE; @@ -297,8 +300,10 @@ blk_exp(MACRO_PROT_ARGS) char *p; int la; - if (tok == MAN_RS) + if (tok == MAN_RS) { rew_scope(man, tok); + man->flags |= ROFF_NONOFILL; + } roff_block_alloc(man, line, ppos, tok); head = roff_head_alloc(man, line, ppos, tok); @@ -322,6 +327,7 @@ blk_exp(MACRO_PROT_ARGS) man_unscope(man, head); roff_body_alloc(man, line, ppos, tok); + man->flags &= ~ROFF_NONOFILL; } /*