diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2017-04-17 12:53:29 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2017-04-17 12:53:29 +0000 |
commit | 9e5c82b05c242c2e827a6f1079b168fe918e499e (patch) | |
tree | 5d0be198ffe528590ed8a6b5568a11ca43d714ec /mdoc_term.c | |
parent | 1c62f42ca2f43ac9f721ae986079d2bb30403fd3 (diff) | |
download | mandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.tar.gz mandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.tar.zst mandoc-9e5c82b05c242c2e827a6f1079b168fe918e499e.zip |
Fix handling of trailing punctuation in .Lk.
This macro is unusual in so far as trailing punction needs to remain
inside the scope because it must be inside, not after the display
of long URIs in terminal output mode.
Improves formatting of fw_update(1), help(1), less(1), sendbug(1),
acx(4), inet6(4), ipsec(4), oce(4), isakmpd.conf(5), afterboot(8),
release(8), traceroute(8).
Diffstat (limited to 'mdoc_term.c')
-rw-r--r-- | mdoc_term.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/mdoc_term.c b/mdoc_term.c index 259f9a2e..b936c5a3 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.348 2017/04/14 19:35:22 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.349 2017/04/17 12:53:29 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> @@ -1995,12 +1995,13 @@ termp_lk_pre(DECL_ARGS) const struct roff_node *link, *descr; int display; - if (NULL == (link = n->child)) + if ((link = n->child) == NULL) return 0; - if (NULL != (descr = link->next)) { + /* Link text. */ + if ((descr = link->next) != NULL && !(descr->flags & NODE_DELIMC)) { term_fontpush(p, TERMFONT_UNDER); - while (NULL != descr) { + while (descr != NULL && !(descr->flags & NODE_DELIMC)) { term_word(p, descr->string); descr = descr->next; } @@ -2009,19 +2010,24 @@ termp_lk_pre(DECL_ARGS) term_word(p, ":"); } + /* Link target. */ display = term_strlen(p, link->string) >= 26; if (display) { term_newln(p); p->offset += term_len(p, p->defindent + 1); } - term_fontpush(p, TERMFONT_BOLD); term_word(p, link->string); term_fontpop(p); + /* Trailing punctuation. */ + while (descr != NULL) { + p->flags |= TERMP_NOSPACE; + term_word(p, descr->string); + descr = descr->next; + } if (display) term_newln(p); - return 0; } |