=================================================================== RCS file: /cvs/mandoc/mdoc_term.c,v retrieving revision 1.346 retrieving revision 1.349 diff -u -p -r1.346 -r1.349 --- mandoc/mdoc_term.c 2017/02/17 19:15:41 1.346 +++ mandoc/mdoc_term.c 2017/04/17 12:53:29 1.349 @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.346 2017/02/17 19:15:41 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 * Copyright (c) 2010, 2012-2017 Ingo Schwarze @@ -1993,25 +1993,41 @@ static int 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; } + term_fontpop(p); p->flags |= TERMP_NOSPACE; term_word(p, ":"); - term_fontpop(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; }