summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man.c14
-rw-r--r--man_macro.c4
2 files changed, 16 insertions, 2 deletions
diff --git a/man.c b/man.c
index c0d245da..874787d9 100644
--- a/man.c
+++ b/man.c
@@ -283,6 +283,20 @@ man_breakscope(struct roff_man *man, int tok)
}
/*
+ * Weird special case:
+ * Switching fill mode closes section headers.
+ */
+
+ if (man->flags & MAN_BLINE &&
+ (tok == MAN_nf || tok == MAN_fi) &&
+ (man->last->tok == MAN_SH || man->last->tok == MAN_SS)) {
+ n = man->last;
+ man_unscope(man, n);
+ roff_body_alloc(man, n->line, n->pos, n->tok);
+ man->flags &= ~MAN_BLINE;
+ }
+
+ /*
* A block header next line scope is open,
* and the new macro is not allowed inside block headers.
* Delete the block that is being broken.
diff --git a/man_macro.c b/man_macro.c
index 4ba357b5..1b97ce8c 100644
--- a/man_macro.c
+++ b/man_macro.c
@@ -63,8 +63,8 @@ const struct man_macro __man_macros[MAN_MAX] = {
{ in_line_eoln, 0 }, /* IR */
{ in_line_eoln, 0 }, /* RI */
{ in_line_eoln, MAN_NSCOPED }, /* sp */
- { in_line_eoln, MAN_BSCOPE }, /* nf */
- { in_line_eoln, MAN_BSCOPE }, /* fi */
+ { in_line_eoln, MAN_NSCOPED }, /* nf */
+ { in_line_eoln, MAN_NSCOPED }, /* fi */
{ blk_close, MAN_BSCOPE }, /* RE */
{ blk_exp, MAN_BSCOPE }, /* RS */
{ in_line_eoln, 0 }, /* DT */