summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regress/usr.bin/mandoc/man/RS/nested.in11
-rw-r--r--regress/usr.bin/mandoc/man/RS/nested.out_ascii8
-rw-r--r--usr.bin/mandoc/man_term.c13
3 files changed, 27 insertions, 5 deletions
diff --git a/regress/usr.bin/mandoc/man/RS/nested.in b/regress/usr.bin/mandoc/man/RS/nested.in
index 03c4b43c39d..ca440e3f295 100644
--- a/regress/usr.bin/mandoc/man/RS/nested.in
+++ b/regress/usr.bin/mandoc/man/RS/nested.in
@@ -1,4 +1,4 @@
-.TH RS-NESTED 1 "November 18, 2012" OpenBSD
+.TH RS-NESTED 1 "April 4, 2015" OpenBSD
.SH NAME
RS-nested \- various blocks nested inside reset blocks
.SH DESCRIPTION
@@ -34,4 +34,11 @@ and which indent the next line will have - hopefully 12n.
.PP
outer text
.RE
-regular text
+nesting HP and RS inside RS:
+.RS
+outer text
+.HP 2n
+.RS 4n
+inner text
+.RE
+.RE
diff --git a/regress/usr.bin/mandoc/man/RS/nested.out_ascii b/regress/usr.bin/mandoc/man/RS/nested.out_ascii
index f0aeae08323..cb599754e91 100644
--- a/regress/usr.bin/mandoc/man/RS/nested.out_ascii
+++ b/regress/usr.bin/mandoc/man/RS/nested.out_ascii
@@ -24,8 +24,12 @@ DDEESSCCRRIIPPTTIIOONN
hopefully 12n.
outer text
- regular text
+ nesting HP and RS inside RS:
+ outer text
+
+
+ inner text
-OpenBSD November 18, 2012 RS-NESTED(1)
+OpenBSD April 4, 2015 RS-NESTED(1)
diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c
index 131d552344b..1314cd519a5 100644
--- a/usr.bin/mandoc/man_term.c
+++ b/usr.bin/mandoc/man_term.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: man_term.c,v 1.126 2015/04/02 23:47:43 schwarze Exp $ */
+/* $OpenBSD: man_term.c,v 1.127 2015/04/04 11:43:53 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -531,6 +531,17 @@ post_HP(DECL_ARGS)
switch (n->type) {
case ROFFT_BODY:
term_newln(p);
+
+ /*
+ * Compatibility with a groff bug.
+ * The .HP macro uses the undocumented .tag request
+ * which causes a line break and cancels no-space
+ * mode even if there isn't any output.
+ */
+
+ if (n->child == NULL)
+ term_vspace(p);
+
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND);
p->trailspace = 0;
p->offset = mt->offset;