aboutsummaryrefslogtreecommitdiffstatshomepage
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
commit1135be4f8f66a39a3ea0513c742ec976d83be8c1 (patch)
tree5b291e728fd9d8ba161e39f2ac5f39ec5fb86d04
parent679220a7854a388f352bbea26882089e925fe272 (diff)
downloadmandoc-1135be4f8f66a39a3ea0513c742ec976d83be8c1.tar.gz
mandoc-1135be4f8f66a39a3ea0513c742ec976d83be8c1.tar.zst
mandoc-1135be4f8f66a39a3ea0513c742ec976d83be8c1.zip
implement -Tman .Vt; OpenBSD rev. 1.15 and 1.16
-rw-r--r--mdoc_man.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/mdoc_man.c b/mdoc_man.c
index fe5da6d0..d1ec900d 100644
--- a/mdoc_man.c
+++ b/mdoc_man.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_man.c,v 1.17 2012/07/08 10:19:37 schwarze Exp $ */
+/* $Id: mdoc_man.c,v 1.18 2012/07/08 11:10:13 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -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)
{