summaryrefslogtreecommitdiffstats
path: root/mdoc_action.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2010-07-01 22:35:54 +0000
committerIngo Schwarze <schwarze@openbsd.org>2010-07-01 22:35:54 +0000
commit0bae01a379ba9702c03dfcf16874c3ec9beaa711 (patch)
tree591d704bdb2bcdf1b1f8850888e883c4a8387358 /mdoc_action.c
parent9aa51d8254f41d6b1f1ef2382a74288fb913f815 (diff)
downloadmandoc-0bae01a379ba9702c03dfcf16874c3ec9beaa711.tar.gz
In the mdoc(7) parser, inspect roff registers early such that all parts
of the parser can use the resulting cues. In particular, this allows to use .nr nS to force SYNOPSIS-style .Nm indentation outside the SYNOPSIS as needed by ifconfig(8). To actually make this useable, .Pp must rewind .Nm, or the rest of the section would end up indented. Implement a quick hack for now, a generic solution can be designed later. ok kristaps@ and tested by sobrado@
Diffstat (limited to 'mdoc_action.c')
-rw-r--r--mdoc_action.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/mdoc_action.c b/mdoc_action.c
index aad0bb66..0c84a87f 100644
--- a/mdoc_action.c
+++ b/mdoc_action.c
@@ -457,6 +457,17 @@ post_sh(POST_ARGS)
if (SEC_NONE == m->lastnamed || SEC_CUSTOM != sec)
m->lastnamed = sec;
+ /*
+ * Switch the parser's SYNOPSIS mode, to be copied
+ * into individual nodes when creating them.
+ * Note that this mode can also be set and unset
+ * using the roff nS register.
+ */
+ if (SEC_SYNOPSIS == sec)
+ m->flags |= MDOC_SYNOPSIS;
+ else
+ m->flags &= ~MDOC_SYNOPSIS;
+
/* Some sections only live in certain manual sections. */
switch ((m->lastsec = sec)) {