=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.242 retrieving revision 1.244 diff -u -p -r1.242 -r1.244 --- mandoc/man_term.c 2023/04/28 20:23:19 1.242 +++ mandoc/man_term.c 2023/11/13 19:13:01 1.244 @@ -1,6 +1,6 @@ -/* $Id: man_term.c,v 1.242 2023/04/28 20:23:19 schwarze Exp $ */ +/* $Id: man_term.c,v 1.244 2023/11/13 19:13:01 schwarze Exp $ */ /* - * Copyright (c) 2010-2015,2017-2020,2022 Ingo Schwarze + * Copyright (c) 2010-15,2017-20,2022-23 Ingo Schwarze * Copyright (c) 2008-2012 Kristaps Dzonsons * * Permission to use, copy, modify, and distribute this software for any @@ -74,6 +74,7 @@ static int pre_DT(DECL_ARGS); static int pre_HP(DECL_ARGS); static int pre_I(DECL_ARGS); static int pre_IP(DECL_ARGS); +static int pre_MR(DECL_ARGS); static int pre_OP(DECL_ARGS); static int pre_PD(DECL_ARGS); static int pre_PP(DECL_ARGS); @@ -134,6 +135,7 @@ static const struct man_term_act man_term_acts[MAN_MAX { NULL, NULL, 0 }, /* UE */ { pre_UR, post_UR, 0 }, /* MT */ { NULL, NULL, 0 }, /* ME */ + { pre_MR, NULL, 0 }, /* MR */ }; static const struct man_term_act *man_term_act(enum roff_tok); @@ -151,19 +153,15 @@ terminal_man(void *arg, const struct roff_meta *man) struct mtermp mt; struct termp *p; struct roff_node *n, *nc, *nn; - size_t save_defindent; p = (struct termp *)arg; - save_defindent = p->defindent; - if (p->synopsisonly == 0 && p->defindent == 0) - p->defindent = 7; p->tcol->rmargin = p->maxrmargin = p->defrmargin; term_tab_set(p, NULL); term_tab_set(p, "T"); term_tab_set(p, ".5i"); memset(&mt, 0, sizeof(mt)); - mt.lmargin[mt.lmargincur] = term_len(p, p->defindent); + mt.lmargin[mt.lmargincur] = term_len(p, 7); mt.offset = term_len(p, p->defindent); mt.pardist = 1; @@ -193,7 +191,6 @@ terminal_man(void *arg, const struct roff_meta *man) print_man_nodelist(p, &mt, n, man); term_end(p); } - p->defindent = save_defindent; } /* @@ -328,6 +325,29 @@ pre_B(DECL_ARGS) } static int +pre_MR(DECL_ARGS) +{ + term_fontrepl(p, TERMFONT_NONE); + n = n->child; + if (n != NULL) { + term_word(p, n->string); /* name */ + p->flags |= TERMP_NOSPACE; + } + term_word(p, "("); + p->flags |= TERMP_NOSPACE; + if (n != NULL && (n = n->next) != NULL) { + term_word(p, n->string); /* section */ + p->flags |= TERMP_NOSPACE; + } + term_word(p, ")"); + if (n != NULL && (n = n->next) != NULL) { + p->flags |= TERMP_NOSPACE; + term_word(p, n->string); /* suffix */ + } + return 0; +} + +static int pre_OP(DECL_ARGS) { term_word(p, "["); @@ -479,7 +499,7 @@ pre_PP(DECL_ARGS) { switch (n->type) { case ROFFT_BLOCK: - mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); + mt->lmargin[mt->lmargincur] = term_len(p, 7); print_bvspace(p, n, mt->pardist); break; case ROFFT_HEAD: @@ -655,7 +675,7 @@ pre_SS(DECL_ARGS) switch (n->type) { case ROFFT_BLOCK: - mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); + mt->lmargin[mt->lmargincur] = term_len(p, 7); mt->offset = term_len(p, p->defindent); /* @@ -696,7 +716,7 @@ pre_SH(DECL_ARGS) switch (n->type) { case ROFFT_BLOCK: - mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); + mt->lmargin[mt->lmargincur] = term_len(p, 7); mt->offset = term_len(p, p->defindent); /* @@ -780,7 +800,7 @@ pre_RS(DECL_ARGS) if (++mt->lmarginsz < MAXMARGINS) mt->lmargincur = mt->lmarginsz; - mt->lmargin[mt->lmargincur] = term_len(p, p->defindent); + mt->lmargin[mt->lmargincur] = term_len(p, 7); return 1; }