=================================================================== RCS file: /cvs/mandoc/man_term.c,v retrieving revision 1.60 retrieving revision 1.64 diff -u -p -r1.60 -r1.64 --- mandoc/man_term.c 2010/05/10 08:05:17 1.60 +++ mandoc/man_term.c 2010/05/15 15:54:39 1.64 @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.60 2010/05/10 08:05:17 kristaps Exp $ */ +/* $Id: man_term.c,v 1.64 2010/05/15 15:54:39 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -369,7 +369,7 @@ pre_sp(DECL_ARGS) if (0 == len) term_newln(p); - for (i = 0; i < len; i++) + for (i = 0; i <= len; i++) term_vspace(p); return(0); @@ -710,6 +710,9 @@ pre_SH(DECL_ARGS) if (n->prev && MAN_SH == n->prev->tok) if (NULL == n->prev->body->child) break; + /* If the first macro, no vspae. */ + if (NULL == n->prev) + break; term_vspace(p); break; case (MAN_HEAD): @@ -839,6 +842,9 @@ print_man_node(DECL_ARGS) if ( ! (MAN_NOTEXT & termacts[n->tok].flags)) term_fontrepl(p, TERMFONT_NONE); } + + if (MAN_EOS & n->flags) + p->flags |= TERMP_SENTENCE; } @@ -890,6 +896,12 @@ print_man_head(struct termp *p, const struct man_meta char buf[BUFSIZ], title[BUFSIZ]; size_t buflen, titlen; + /* + * Note that old groff would spit out some spaces before the + * header. We discontinue this strange behaviour, but at one + * point we did so here. + */ + p->rmargin = p->maxrmargin; p->offset = 0; @@ -899,7 +911,7 @@ print_man_head(struct termp *p, const struct man_meta strlcpy(buf, m->vol, BUFSIZ); buflen = strlen(buf); - snprintf(title, BUFSIZ, "%s(%d)", m->title, m->msec); + snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec); titlen = strlen(title); p->offset = 0; @@ -931,4 +943,13 @@ print_man_head(struct termp *p, const struct man_meta p->rmargin = p->maxrmargin; p->offset = 0; p->flags &= ~TERMP_NOSPACE; + + /* + * Groff likes to have some leading spaces before content. Well + * that's fine by me. + */ + + term_vspace(p); + term_vspace(p); + term_vspace(p); }