summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2012-07-08 11:10:13 +0000
committerIngo Schwarze <schwarze@openbsd.org>2012-07-08 11:10:13 +0000
commit2935e95e7011981f3751bdbcf10611989ebda4ec (patch)
tree1b6b0a0b99441338db78e55e99d22f3973953e26
parent3d913d3128fdf800a77c6b42eec8cd48471e3efa (diff)
downloadmandoc-2935e95e7011981f3751bdbcf10611989ebda4ec.tar.gz
implement -Tman .Vt; OpenBSD rev. 1.15 and 1.16
-rw-r--r--mdoc_man.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/mdoc_man.c b/mdoc_man.c
index 2b72f2af..49538422 100644
--- a/mdoc_man.c
+++ b/mdoc_man.c
@@ -63,6 +63,7 @@ static void post_percent(DECL_ARGS);
static void post_pf(DECL_ARGS);
static void post_sect(DECL_ARGS);
static void post_sp(DECL_ARGS);
+static void post_vt(DECL_ARGS);
static int pre_ap(DECL_ARGS);
static int pre_bd(DECL_ARGS);
static int pre_bk(DECL_ARGS);
@@ -81,6 +82,7 @@ static int pre_pp(DECL_ARGS);
static int pre_sm(DECL_ARGS);
static int pre_sp(DECL_ARGS);
static int pre_sect(DECL_ARGS);
+static int pre_vt(DECL_ARGS);
static int pre_ux(DECL_ARGS);
static int pre_xr(DECL_ARGS);
static void print_word(struct mman *, const char *);
@@ -133,7 +135,7 @@ static const struct manact manacts[MDOC_MAX + 1] = {
}, /* Rv */
{ NULL, NULL, NULL, NULL, NULL }, /* St */
{ NULL, NULL, NULL, NULL, NULL }, /* _Va */
- { NULL, NULL, NULL, NULL, NULL }, /* _Vt */
+ { NULL, pre_vt, post_vt, NULL, NULL }, /* Vt */
{ NULL, pre_xr, NULL, NULL, NULL }, /* Xr */
{ NULL, NULL, post_percent, NULL, NULL }, /* _%A */
{ NULL, NULL, NULL, NULL, NULL }, /* _%B */
@@ -848,6 +850,44 @@ post_sp(DECL_ARGS)
}
static int
+pre_vt(DECL_ARGS)
+{
+
+ if (MDOC_SYNPRETTY & n->flags) {
+ switch (n->type) {
+ case (MDOC_BLOCK):
+ return(1);
+ case (MDOC_BODY):
+ break;
+ default:
+ return(0);
+ }
+ mm->need_nl = 1;
+ print_word(mm, ".br");
+ mm->need_nl = 1;
+ }
+ print_word(mm, "\\fI");
+ mm->need_space = 0;
+ return(1);
+}
+
+static void
+post_vt(DECL_ARGS)
+{
+
+ if (MDOC_BODY != n->type)
+ return;
+
+ mm->need_space = 0;
+ print_word(mm, "\\fP");
+ if (MDOC_SYNPRETTY & n->flags) {
+ mm->need_nl = 1;
+ print_word(mm, ".br");
+ mm->need_nl = 1;
+ }
+}
+
+static int
pre_xr(DECL_ARGS)
{