=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_term.c,v retrieving revision 1.258 retrieving revision 1.259 diff -c -r1.258 -r1.259 *** src/usr.bin/mandoc/mdoc_term.c 2017/06/01 19:05:15 1.258 --- src/usr.bin/mandoc/mdoc_term.c 2017/06/04 18:48:09 1.259 *************** *** 1,4 **** ! /* $OpenBSD: mdoc_term.c,v 1.258 2017/06/01 19:05:15 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012-2017 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: mdoc_term.c,v 1.259 2017/06/04 18:48:09 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012-2017 Ingo Schwarze *************** *** 257,263 **** size_t save_defindent; p = (struct termp *)arg; - p->overstep = 0; p->rmargin = p->maxrmargin = p->defrmargin; term_tab_set(p, NULL); term_tab_set(p, "T"); --- 257,262 ---- *************** *** 763,795 **** case LIST_bullet: case LIST_dash: case LIST_hyphen: ! /* ! * Weird special case. ! * Some very narrow lists actually hang. ! */ ! if (width <= (int)term_len(p, 2)) ! p->flags |= TERMP_HANG; ! if (n->type != ROFFT_HEAD) ! break; ! p->flags |= TERMP_NOBREAK; ! p->trailspace = 1; break; case LIST_hang: if (n->type != ROFFT_HEAD) break; - - /* - * This is ugly. If `-hang' is specified and the body - * is a `Bl' or `Bd', then we want basically to nullify - * the "overstep" effect in term_flushln() and treat - * this as a `-ohang' list instead. - */ - if (NULL != n->next && - NULL != n->next->child && - (MDOC_Bl == n->next->child->tok || - MDOC_Bd == n->next->child->tok)) - break; - p->flags |= TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG; p->trailspace = 1; break; --- 762,776 ---- case LIST_bullet: case LIST_dash: case LIST_hyphen: ! if (n->type == ROFFT_HEAD) { ! p->flags |= TERMP_NOBREAK | TERMP_HANG; ! p->trailspace = 1; ! } else if (width <= (int)term_len(p, 2)) ! p->flags |= TERMP_NOPAD; break; case LIST_hang: if (n->type != ROFFT_HEAD) break; p->flags |= TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG; p->trailspace = 1; break; *************** *** 801,807 **** p->trailspace = 2; if (NULL == n->next || NULL == n->next->child) ! p->flags |= TERMP_DANGLE; break; case LIST_column: if (n->type == ROFFT_HEAD) --- 782,788 ---- p->trailspace = 2; if (NULL == n->next || NULL == n->next->child) ! p->flags |= TERMP_HANG; break; case LIST_column: if (n->type == ROFFT_HEAD) *************** *** 835,857 **** p->offset += offset; switch (type) { - case LIST_hang: - /* - * Same stipulation as above, regarding `-hang'. We - * don't want to recalculate rmargin and offsets when - * using `Bd' or `Bl' within `-hang' overstep lists. - */ - if (n->type == ROFFT_HEAD && - NULL != n->next && - NULL != n->next->child && - (MDOC_Bl == n->next->child->tok || - MDOC_Bd == n->next->child->tok)) - break; - /* FALLTHROUGH */ case LIST_bullet: case LIST_dash: case LIST_enum: case LIST_hyphen: case LIST_tag: if (n->type == ROFFT_HEAD) p->rmargin = p->offset + width; --- 816,826 ---- p->offset += offset; switch (type) { case LIST_bullet: case LIST_dash: case LIST_enum: case LIST_hyphen: + case LIST_hang: case LIST_tag: if (n->type == ROFFT_HEAD) p->rmargin = p->offset + width; *************** *** 918,923 **** --- 887,893 ---- case LIST_column: if (n->type == ROFFT_HEAD) return 0; + p->minbl = 0; break; default: break; *************** *** 958,965 **** * has munged them in the meanwhile. */ ! p->flags &= ~(TERMP_NOBREAK | TERMP_BRTRSP | TERMP_BRIND | ! TERMP_DANGLE | TERMP_HANG); p->trailspace = 0; } --- 928,934 ---- * has munged them in the meanwhile. */ ! p->flags &= ~(TERMP_NOBREAK | TERMP_BRTRSP | TERMP_BRIND | TERMP_HANG); p->trailspace = 0; } *************** *** 1379,1384 **** --- 1348,1354 ---- if (pretty) { term_flushln(p); p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG); + p->flags |= TERMP_NOPAD; p->offset = p->rmargin; p->rmargin = rmargin; } *************** *** 1857,1862 **** --- 1827,1833 ---- term_flushln(p); p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG); + p->flags |= TERMP_NOPAD; p->offset = p->rmargin; p->rmargin = rmargin; }