Ingo Schwarze wrote: > Oh well, i'm finally catching up... > Replying to myself: > > Ingo Schwarze wrote on Sat, Jul 31, 2010 at 07:57:17PM +0200: >> kristaps@mdocml.bsd.lv wrote on Tue, Jul 27, 2010 at 04:38:04AM -0400: > >>> Log Message: >>> ----------- >>> Fix how `Bd -unfilled' and `Bd -literal' break lines. This unbreaks >>> displays to work as old groff shows them; however, new groff still does >>> some fancy shit. > >> What exactly is this supposed to fix? > > I see now, i missed one of kristaps@' messages. > It fixes awk(1) and boot_config(8). > But it causes regressions with respect to blank lines. > >>> Modified Files: >>> -------------- >>> mdocml: >>> mdoc_term.c >>> mdoc_html.c >> I don't care that much about the HTML part, so i'm snipping that, >> but i disagree with the following chunk: >> >> [...] >>> Index: mdoc_term.c >>> =================================================================== >>> RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_term.c,v >>> retrieving revision 1.178 >>> retrieving revision 1.179 >>> diff -Lmdoc_term.c -Lmdoc_term.c -u -p -r1.178 -r1.179 >>> --- mdoc_term.c >>> +++ mdoc_term.c >> [...] >>> @@ -1654,12 +1653,9 @@ termp_bd_pre(DECL_ARGS) >>> p->rmargin = p->maxrmargin = TERM_MAXMARGIN; >>> >>> for (nn = n->child; nn; nn = nn->next) { >>> - p->flags |= TERMP_NOSPACE; >>> + if (nn->prev && nn->prev->line < nn->line) >>> + term_newln(p); >>> print_mdoc_node(p, pair, m, nn); >>> - if (NULL == nn->prev || >>> - nn->prev->line < nn->line || >>> - NULL == nn->next) >>> - term_flushln(p); >>> } >>> >>> p->tabwidth = tabwidth; > >> For me, this breaks .Bd -literal vertical and horizontal spacing >> in multiple ways, see >> >> mdoc/Bd/blank.in >> char/space/tab.in >> >> in the OpenBSD regression suite. >> >> To be precise, i see at least the following problems: >> >> * Removing the TERMP_NOSPACE adds an additional space character >> at the beginning of display lines which we don't want. >> * Changing term_flushln to term_newln has the effect of >> ignoring blank lines, but blank lines must be preserved >> in -literal mode. >> * Removing the NULL == nn->next clause kills trailing >> blank lines in -literal displays. Even these must be >> preserved. >> >> So, for now, i'm not merging any of the changes of this chunk >> to OpenBSD. > > Here is an alternative patch which fixes the issues, too, > but does not cause regressions. Apply to OpenBSD, or revert > the above before applying to bsd.lv: > > > Index: mdoc_term.c > =================================================================== > RCS file: /cvs/src/usr.bin/mandoc/mdoc_term.c,v > retrieving revision 1.99 > diff -u -p -r1.99 mdoc_term.c > --- mdoc_term.c 31 Jul 2010 21:43:07 -0000 1.99 > +++ mdoc_term.c 4 Aug 2010 00:19:28 -0000 > @@ -1649,12 +1649,11 @@ termp_bd_pre(DECL_ARGS) > p->rmargin = p->maxrmargin = TERM_MAXMARGIN; > > for (nn = n->child; nn; nn = nn->next) { > - p->flags |= TERMP_NOSPACE; > print_mdoc_node(p, pair, m, nn); > - if (NULL == nn->prev || > - nn->prev->line < nn->line || > - NULL == nn->next) > - term_flushln(p); > + if (nn->next && nn->next->line == nn->line) > + continue; > + term_flushln(p); > + p->flags |= TERMP_NOSPACE; > } > > p->tabwidth = tabwidth; Ingo et al., First note that I'm back by a machine, so can answer questions and so on. This patch seems to work by my small tests, so ok kristaps. I've enclosed a patch for mdoc_html.c, which you can throw in to the commit for completion's sake. Thanks, Kristaps