=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.240 retrieving revision 1.244 diff -u -p -r1.240 -r1.244 --- mandoc/man_term.c 2022/08/16 17:45:55 1.240 +++ mandoc/man_term.c 2023/11/13 19:13:01 1.244 @@ -1,6 +1,6 @@ -/* $Id: man_term.c,v 1.240 2022/08/16 17:45:55 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); @@ -83,7 +84,6 @@ static int pre_SS(DECL_ARGS); static int pre_SY(DECL_ARGS); static int pre_TP(DECL_ARGS); static int pre_UR(DECL_ARGS); -static int pre_abort(DECL_ARGS); static int pre_alternate(DECL_ARGS); static int pre_ign(DECL_ARGS); static int pre_in(DECL_ARGS); @@ -103,9 +103,9 @@ static const struct man_term_act man_term_acts[MAN_MAX { pre_SS, post_SH, 0 }, /* SS */ { pre_TP, post_TP, 0 }, /* TP */ { pre_TP, post_TP, 0 }, /* TQ */ - { pre_abort, NULL, 0 }, /* LP */ + { pre_PP, NULL, 0 }, /* LP */ { pre_PP, NULL, 0 }, /* PP */ - { pre_abort, NULL, 0 }, /* P */ + { pre_PP, NULL, 0 }, /* P */ { pre_IP, post_IP, 0 }, /* IP */ { pre_HP, post_HP, 0 }, /* HP */ { NULL, NULL, 0 }, /* SM */ @@ -135,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); @@ -152,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; @@ -194,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; } /* @@ -225,14 +221,7 @@ print_bvspace(struct termp *p, struct roff_node *n, in term_vspace(p); } - static int -pre_abort(DECL_ARGS) -{ - abort(); -} - -static int pre_ign(DECL_ARGS) { return 0; @@ -336,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, "["); @@ -487,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: @@ -663,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); /* @@ -704,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); /* @@ -788,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; } @@ -951,7 +963,7 @@ print_man_node(DECL_ARGS) return; case ROFFT_TBL: if (p->tbl.cols == NULL) - term_vspace(p); + term_newln(p); term_tbl(p, n->span); return; default: