From 1135be4f8f66a39a3ea0513c742ec976d83be8c1 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sun, 8 Jul 2012 11:10:13 +0000 Subject: implement -Tman .Vt; OpenBSD rev. 1.15 and 1.16 --- mdoc_man.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'mdoc_man.c') 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 * @@ -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 */ @@ -847,6 +849,44 @@ post_sp(DECL_ARGS) mm->need_nl = 1; } +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) { -- cgit v1.2.3