aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_man.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-05-19 21:40:24 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-05-19 21:40:24 +0000
commitf802a5ea1ad00140c792ac2914dfcdea4a48640e (patch)
tree3e59723aee30f7efe84ada254e339c88c167abb0 /mdoc_man.c
parente1d31d6d50d56c1f92cea2def5aea58251d983bc (diff)
downloadmandoc-f802a5ea1ad00140c792ac2914dfcdea4a48640e.tar.gz
mandoc-f802a5ea1ad00140c792ac2914dfcdea4a48640e.tar.zst
mandoc-f802a5ea1ad00140c792ac2914dfcdea4a48640e.zip
Support .Bl -offset in -mdoc -Tman.
Issue found when Thomas Klausner <wiz at NetBSD dot org> made me look at the manuals of his http://www.nih.at/libzip library.
Diffstat (limited to 'mdoc_man.c')
-rw-r--r--mdoc_man.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/mdoc_man.c b/mdoc_man.c
index 953ddee9..5b8a3abd 100644
--- a/mdoc_man.c
+++ b/mdoc_man.c
@@ -1,6 +1,6 @@
-/* $Id: mdoc_man.c,v 1.48 2013/05/19 21:07:51 schwarze Exp $ */
+/* $Id: mdoc_man.c,v 1.49 2013/05/19 21:40:24 schwarze Exp $ */
/*
- * Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -910,6 +910,16 @@ pre_bl(DECL_ARGS)
{
size_t icol;
+ /*
+ * print_offs() will increase the -offset to account for
+ * a possible enclosing .It, but any enclosed .It blocks
+ * just nest and do not add up their indentation.
+ */
+ if (n->norm->Bl.offs) {
+ print_offs(n->norm->Bl.offs);
+ Bl_stack[Bl_stack_len++] = 0;
+ }
+
switch (n->norm->Bl.type) {
case (LIST_enum):
n->norm->Bl.count = 0;
@@ -942,8 +952,16 @@ post_bl(DECL_ARGS)
default:
break;
}
- outflags |= MMAN_PP | MMAN_nl;
- outflags &= ~(MMAN_sp | MMAN_br);
+
+ if (n->norm->Bl.offs) {
+ print_line(".RE", MMAN_nl);
+ assert(Bl_stack_len);
+ Bl_stack_len--;
+ assert(0 == Bl_stack[Bl_stack_len]);
+ } else {
+ outflags |= MMAN_PP | MMAN_nl;
+ outflags &= ~(MMAN_sp | MMAN_br);
+ }
/* Maybe we are inside an enclosing list? */
if (NULL != n->parent->next)