diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2020-04-06 10:16:17 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2020-04-06 10:16:17 +0000 |
commit | 70b71d1de24478a8fcc7413f1cb42c83db416bc3 (patch) | |
tree | 03e1d4654d318e7f9e007d588173fcc2dbd59683 /mdoc_term.c | |
parent | e03f6c4421e6265e6c69f785a01edfe489ff4f9c (diff) | |
download | mandoc-70b71d1de24478a8fcc7413f1cb42c83db416bc3.tar.gz mandoc-70b71d1de24478a8fcc7413f1cb42c83db416bc3.tar.zst mandoc-70b71d1de24478a8fcc7413f1cb42c83db416bc3.zip |
Support manual tagging of .Pp, .Bd, .D1, .Dl, .Bl, and .It.
In HTML output, improve the logic for writing inside permalinks:
skip them when there is no child content or when there is a risk
that the children might contain flow content.
Diffstat (limited to 'mdoc_term.c')
-rw-r--r-- | mdoc_term.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/mdoc_term.c b/mdoc_term.c index ba21097e..42392c7c 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.379 2020/03/13 15:32:28 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.380 2020/04/06 10:16:17 schwarze Exp $ */ /* * Copyright (c) 2010, 2012-2020 Ingo Schwarze <schwarze@openbsd.org> * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> @@ -335,7 +335,8 @@ print_mdoc_node(DECL_ARGS) memset(&npair, 0, sizeof(struct termpair)); npair.ppair = pair; - if (n->flags & NODE_ID) + if (n->flags & NODE_ID && n->tok != MDOC_Pp && + (n->tok != MDOC_It || n->type != ROFFT_BLOCK)) term_tag_write(n, p->line); /* @@ -630,6 +631,8 @@ termp_it_pre(DECL_ARGS) if (n->type == ROFFT_BLOCK) { print_bvspace(p, n->parent->parent, n); + if (n->flags & NODE_ID) + term_tag_write(n, p->line); return 1; } @@ -1110,7 +1113,6 @@ termp_ex_pre(DECL_ARGS) static int termp_nd_pre(DECL_ARGS) { - if (n->type == ROFFT_BODY) term_word(p, "\\(en"); return 1; @@ -1119,14 +1121,20 @@ termp_nd_pre(DECL_ARGS) static int termp_bl_pre(DECL_ARGS) { - - return n->type != ROFFT_HEAD; + switch (n->type) { + case ROFFT_BLOCK: + term_newln(p); + return 1; + case ROFFT_HEAD: + return 0; + default: + return 1; + } } static void termp_bl_post(DECL_ARGS) { - if (n->type != ROFFT_BLOCK) return; term_newln(p); @@ -1140,7 +1148,6 @@ termp_bl_post(DECL_ARGS) static int termp_xr_pre(DECL_ARGS) { - if (NULL == (n = n->child)) return 0; @@ -1555,6 +1562,8 @@ static int termp_pp_pre(DECL_ARGS) { term_vspace(p); + if (n->flags & NODE_ID) + term_tag_write(n, p->line); return 0; } |