summaryrefslogtreecommitdiffstatshomepage
path: root/man_term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-08-13 12:15:58 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-08-13 12:15:58 +0000
commit86fcbc2e37c7ce462902083265822b79401cecf7 (patch)
treeacc4eb25892b2f8176493981716d21c84a3b8952 /man_term.c
parentf7add3eaf5bbb4a516a7dc5a828444b82ea8cd2d (diff)
downloadmandoc-86fcbc2e37c7ce462902083265822b79401cecf7.tar.gz
mandoc-86fcbc2e37c7ce462902083265822b79401cecf7.tar.zst
mandoc-86fcbc2e37c7ce462902083265822b79401cecf7.zip
Added full `HP' libman macro support.
Diffstat (limited to 'man_term.c')
-rw-r--r--man_term.c39
1 files changed, 36 insertions, 3 deletions
diff --git a/man_term.c b/man_term.c
index 63528761..4d411f24 100644
--- a/man_term.c
+++ b/man_term.c
@@ -1,4 +1,4 @@
-/* $Id: man_term.c,v 1.19 2009/08/13 11:45:29 kristaps Exp $ */
+/* $Id: man_term.c,v 1.20 2009/08/13 12:15:58 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -66,6 +66,7 @@ static int pre_sp(DECL_ARGS);
static void post_B(DECL_ARGS);
static void post_I(DECL_ARGS);
+static void post_HP(DECL_ARGS);
static void post_SH(DECL_ARGS);
static void post_SS(DECL_ARGS);
static void post_i(DECL_ARGS);
@@ -80,7 +81,7 @@ static const struct termact termacts[MAN_MAX] = {
{ pre_PP, NULL }, /* PP */
{ pre_PP, NULL }, /* P */
{ pre_IP, NULL }, /* IP */
- { pre_HP, NULL }, /* HP */
+ { pre_HP, post_HP }, /* HP */
{ NULL, NULL }, /* SM */
{ pre_B, post_B }, /* SB */
{ pre_BI, NULL }, /* BI */
@@ -407,12 +408,44 @@ static int
pre_HP(DECL_ARGS)
{
- /* TODO */
+ switch (n->type) {
+ case (MAN_BLOCK):
+ fmt_block_vspace(p, n);
+ break;
+ case (MAN_BODY):
+ p->flags |= TERMP_NOBREAK;
+ p->flags |= TERMP_TWOSPACE;
+ p->offset = INDENT;
+ p->rmargin = INDENT * 2;
+ break;
+ default:
+ return(0);
+ }
+
return(1);
}
/* ARGSUSED */
+static void
+post_HP(DECL_ARGS)
+{
+
+ switch (n->type) {
+ case (MAN_BODY):
+ term_flushln(p);
+ p->flags &= ~TERMP_NOBREAK;
+ p->flags &= ~TERMP_TWOSPACE;
+ p->offset = INDENT;
+ p->rmargin = p->maxrmargin;
+ break;
+ default:
+ break;
+ }
+}
+
+
+/* ARGSUSED */
static int
pre_PP(DECL_ARGS)
{