summaryrefslogtreecommitdiffstatshomepage
path: root/term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-09 14:19:59 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-09 14:19:59 +0000
commit47256a532d0082f2218355ef2693af7e78d4790b (patch)
tree00dec12ad4755f06ff1b2e1618b7585d607b7d99 /term.c
parent8acb3c90fb3c3f33d986c8a11474138a497e1ec9 (diff)
downloadmandoc-47256a532d0082f2218355ef2693af7e78d4790b.tar.gz
mandoc-47256a532d0082f2218355ef2693af7e78d4790b.tar.zst
mandoc-47256a532d0082f2218355ef2693af7e78d4790b.zip
Added `Mt' and `Lk' macros (NetBSD).
Diffstat (limited to 'term.c')
-rw-r--r--term.c54
1 files changed, 51 insertions, 3 deletions
diff --git a/term.c b/term.c
index 0317de85..e129e6f5 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.50 2009/03/09 13:17:49 kristaps Exp $ */
+/* $Id: term.c,v 1.51 2009/03/09 14:19:59 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -53,7 +53,9 @@
#define TTYPE_SYMB 16
#define TTYPE_SYMBOL 17
#define TTYPE_DIAG 18
-#define TTYPE_NMAX 19
+#define TTYPE_LINK_ANCHOR 19
+#define TTYPE_LINK_TEXT 20
+#define TTYPE_NMAX 21
/*
* These define "styles" for element types, like command arguments or
@@ -82,7 +84,9 @@ const int ttypes[TTYPE_NMAX] = {
TERMP_BOLD, /* TTYPE_INCLUDE */
TERMP_BOLD, /* TTYPE_SYMB */
TERMP_BOLD, /* TTYPE_SYMBOL */
- TERMP_BOLD /* TTYPE_DIAG */
+ TERMP_BOLD, /* TTYPE_DIAG */
+ TERMP_UNDERLINE, /* TTYPE_LINK_ANCHOR */
+ TERMP_BOLD /* TTYPE_LINK_TEXT */
};
static int arg_hasattr(int, const struct mdoc_node *);
@@ -146,7 +150,9 @@ DECL_PRE(termp_fa);
DECL_PRE(termp_fl);
DECL_PRE(termp_fx);
DECL_PRE(termp_ic);
+DECL_PRE(termp_lk);
DECL_PRE(termp_ms);
+DECL_PRE(termp_mt);
DECL_PRE(termp_nd);
DECL_PRE(termp_nm);
DECL_PRE(termp_ns);
@@ -279,6 +285,8 @@ const struct termact __termacts[MDOC_MAX] = {
{ termp_lb_pre, termp_lb_post }, /* Lb */
{ termp_ap_pre, NULL }, /* Lb */
{ termp_pp_pre, NULL }, /* Pp */
+ { termp_lk_pre, NULL }, /* Lk */
+ { termp_mt_pre, NULL }, /* Mt */
};
const struct termact *termacts = __termacts;
@@ -1747,3 +1755,43 @@ termp____post(DECL_ARGS)
p->flags |= TERMP_NOSPACE;
word(p, node->next ? "," : ".");
}
+
+
+/* ARGSUSED */
+static int
+termp_lk_pre(DECL_ARGS)
+{
+ const struct mdoc_node *n;
+
+ if (NULL == (n = node->child))
+ errx(1, "expected text line argument");
+ if (MDOC_TEXT != n->type)
+ errx(1, "expected text line argument");
+
+ p->flags |= ttypes[TTYPE_LINK_ANCHOR];
+ word(p, n->string);
+ p->flags &= ~ttypes[TTYPE_LINK_ANCHOR];
+ p->flags |= TERMP_NOSPACE;
+ word(p, ":");
+
+ p->flags |= ttypes[TTYPE_LINK_TEXT];
+ for ( ; n; n = n->next) {
+ if (MDOC_TEXT != n->type)
+ errx(1, "expected text line argument");
+ word(p, n->string);
+ }
+ p->flags &= ~ttypes[TTYPE_LINK_TEXT];
+
+ return(0);
+}
+
+
+/* ARGSUSED */
+static int
+termp_mt_pre(DECL_ARGS)
+{
+
+ TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_LINK_ANCHOR]);
+ return(1);
+}
+