=================================================================== RCS file: /cvs/mandoc/mdoc_term.c,v retrieving revision 1.331 retrieving revision 1.336 diff -u -p -r1.331 -r1.336 --- mandoc/mdoc_term.c 2016/01/08 17:48:09 1.331 +++ mandoc/mdoc_term.c 2016/11/08 16:38:21 1.336 @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.331 2016/01/08 17:48:09 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.336 2016/11/08 16:38:21 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012-2016 Ingo Schwarze @@ -95,6 +95,7 @@ static int termp_bx_pre(DECL_ARGS); static int termp_cd_pre(DECL_ARGS); static int termp_d1_pre(DECL_ARGS); static int termp_eo_pre(DECL_ARGS); +static int termp_em_pre(DECL_ARGS); static int termp_er_pre(DECL_ARGS); static int termp_ex_pre(DECL_ARGS); static int termp_fa_pre(DECL_ARGS); @@ -119,6 +120,7 @@ static int termp_skip_pre(DECL_ARGS); static int termp_sm_pre(DECL_ARGS); static int termp_sp_pre(DECL_ARGS); static int termp_ss_pre(DECL_ARGS); +static int termp_sy_pre(DECL_ARGS); static int termp_tag_pre(DECL_ARGS); static int termp_under_pre(DECL_ARGS); static int termp_ud_pre(DECL_ARGS); @@ -195,7 +197,7 @@ static const struct termact termacts[MDOC_MAX] = { { termp_quote_pre, termp_quote_post }, /* Dq */ { NULL, NULL }, /* Ec */ /* FIXME: no space */ { NULL, NULL }, /* Ef */ - { termp_under_pre, NULL }, /* Em */ + { termp_em_pre, NULL }, /* Em */ { termp_eo_pre, termp_eo_post }, /* Eo */ { termp_xx_pre, NULL }, /* Fx */ { termp_bold_pre, NULL }, /* Ms */ @@ -218,7 +220,7 @@ static const struct termact termacts[MDOC_MAX] = { { termp_quote_pre, termp_quote_post }, /* Sq */ { termp_sm_pre, NULL }, /* Sm */ { termp_under_pre, NULL }, /* Sx */ - { termp_bold_pre, NULL }, /* Sy */ + { termp_sy_pre, NULL }, /* Sy */ { NULL, NULL }, /* Tn */ { termp_xx_pre, NULL }, /* Ux */ { NULL, NULL }, /* Xc */ @@ -631,10 +633,10 @@ termp_it_pre(DECL_ARGS) width = term_len(p, 2); break; case LIST_hang: + case LIST_tag: width = term_len(p, 8); break; case LIST_column: - case LIST_tag: width = term_len(p, 10); break; default: @@ -1460,7 +1462,7 @@ termp_fn_pre(DECL_ARGS) term_word(p, n->string); term_fontpop(p); - if (n->sec == SEC_DESCRIPTION) + if (n->sec == SEC_DESCRIPTION || n->sec == SEC_CUSTOM) tag_put(n->string, ++fn_prio, p->line); if (pretty) { @@ -2120,6 +2122,7 @@ static int termp_li_pre(DECL_ARGS) { + termp_tag_pre(p, pair, meta, n); term_fontpush(p, TERMFONT_NONE); return 1; } @@ -2218,6 +2221,26 @@ termp_under_pre(DECL_ARGS) } static int +termp_em_pre(DECL_ARGS) +{ + if (n->child != NULL && + n->child->type == ROFFT_TEXT) + tag_put(n->child->string, 0, p->line); + term_fontpush(p, TERMFONT_UNDER); + return 1; +} + +static int +termp_sy_pre(DECL_ARGS) +{ + if (n->child != NULL && + n->child->type == ROFFT_TEXT) + tag_put(n->child->string, 0, p->line); + term_fontpush(p, TERMFONT_BOLD); + return 1; +} + +static int termp_er_pre(DECL_ARGS) { @@ -2235,7 +2258,9 @@ termp_tag_pre(DECL_ARGS) if (n->child != NULL && n->child->type == ROFFT_TEXT && - n->prev == NULL && + (n->prev == NULL || + (n->prev->type == ROFFT_TEXT && + strcmp(n->prev->string, "|") == 0)) && (n->parent->tok == MDOC_It || (n->parent->tok == MDOC_Xo && n->parent->parent->prev == NULL &&