=================================================================== RCS file: /cvs/texi2mdoc/util.c,v retrieving revision 1.23 retrieving revision 1.25 diff -u -p -r1.23 -r1.25 --- texi2mdoc/util.c 2015/03/02 18:12:53 1.23 +++ texi2mdoc/util.c 2015/03/03 22:37:24 1.25 @@ -1,4 +1,4 @@ -/* $Id: util.c,v 1.23 2015/03/02 18:12:53 kristaps Exp $ */ +/* $Id: util.c,v 1.25 2015/03/03 22:37:24 kristaps Exp $ */ /* * Copyright (c) 2015 Kristaps Dzonsons * @@ -480,7 +480,7 @@ texiexecmacro(struct texi *p, struct teximacro *m, siz * The "sv" value was initialised at the start of the macro. */ if (sv > 0) - if (++p->files[p->filepos].depth > 64) + if (++p->files[p->filepos - 1].depth > 64) texierr(p, "maximium recursive depth"); args = argparse(p, pos, &asz, m->argsz); @@ -569,10 +569,16 @@ static void parseword(struct texi *p, size_t *pos, char extra) { + /* + * Some line control: if we (non-macro, non-literal) already + * have more than 72 characters written to the screen, then + * output a newline before getting started. + */ if (p->seenws && 0 == p->outmacro && p->outcol > 72 && 0 == p->literal) texiputchar(p, '\n'); - /* FIXME: abstract this: we use it elsewhere. */ + + /* Usual padding in the case of seen whitespace. */ if (p->seenws && p->outcol && 0 == p->literal) texiputchar(p, ' '); @@ -601,6 +607,15 @@ parseword(struct texi *p, size_t *pos, char extra) texiputchar(p, BUF(p)[*pos]); advance(p, pos); } + + /* + * New sentence, new line:if we (non-macro, non-literal) see a + * period at the end of the last printed word, then open a + * newline. + */ + if (0 == p->literal && 0 == p->outmacro && + *pos < BUFSZ(p) && '.' == BUF(p)[*pos - 1]) + texiputchar(p, '\n'); } /*