diff options
Diffstat (limited to 'mdoc_term.c')
-rw-r--r-- | mdoc_term.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/mdoc_term.c b/mdoc_term.c index a2ce71fc..95790806 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -34,6 +34,7 @@ #include "mdoc.h" #include "out.h" #include "term.h" +#include "tag.h" #include "main.h" struct termpair { @@ -117,6 +118,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_tag_pre(DECL_ARGS); static int termp_under_pre(DECL_ARGS); static int termp_ud_pre(DECL_ARGS); static int termp_vt_pre(DECL_ARGS); @@ -145,7 +147,7 @@ static const struct termact termacts[MDOC_MAX] = { { termp_bold_pre, NULL }, /* Cm */ { NULL, NULL }, /* Dv */ { NULL, NULL }, /* Er */ - { NULL, NULL }, /* Ev */ + { termp_tag_pre, NULL }, /* Ev */ { termp_ex_pre, NULL }, /* Ex */ { termp_fa_pre, NULL }, /* Fa */ { termp_fd_pre, termp_fd_post }, /* Fd */ @@ -1049,6 +1051,7 @@ static int termp_fl_pre(DECL_ARGS) { + termp_tag_pre(p, pair, meta, n); term_fontpush(p, TERMFONT_BOLD); term_word(p, "\\-"); @@ -1330,6 +1333,7 @@ static int termp_bold_pre(DECL_ARGS) { + termp_tag_pre(p, pair, meta, n); term_fontpush(p, TERMFONT_BOLD); return(1); } @@ -2252,3 +2256,19 @@ termp_under_pre(DECL_ARGS) term_fontpush(p, TERMFONT_UNDER); return(1); } + +static int +termp_tag_pre(DECL_ARGS) +{ + + if (n->child != NULL && + n->child->type == ROFFT_TEXT && + n->prev == NULL && + (n->parent->tok == MDOC_It || + (n->parent->tok == MDOC_Xo && + n->parent->parent->prev == NULL && + n->parent->parent->parent->tok == MDOC_It)) && + ! tag_get(n->child->string, 0)) + tag_put(n->child->string, 0, p->line); + return(1); +} |