]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdocterm.c
Proper fix to NOBREAK margins (oops).
[mandoc.git] / mdocterm.c
index 00a1308503a2185b5f7909785afc8686788beb56..26304acaff11bbb5e983a4c74eb7f80fc57928e6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mdocterm.c,v 1.27 2009/03/03 21:07:01 kristaps Exp $ */
+/* $Id: mdocterm.c,v 1.30 2009/03/04 14:04:02 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -189,8 +189,7 @@ main(int argc, char *argv[])
        if (NULL == (mdoc = mmain_mdoc(p)))
                mmain_exit(p, 1);
 
        if (NULL == (mdoc = mmain_mdoc(p)))
                mmain_exit(p, 1);
 
-       termp.maxrmargin = 78; /* XXX */
-       termp.rmargin = termp.maxrmargin;
+       termp.maxrmargin = termp.rmargin = 78; /* XXX */
        termp.maxcols = 1024;
        termp.offset = termp.col = 0;
        termp.flags = TERMP_NOSPACE;
        termp.maxcols = 1024;
        termp.offset = termp.col = 0;
        termp.flags = TERMP_NOSPACE;
@@ -227,9 +226,6 @@ main(int argc, char *argv[])
  *    offset value.  This is useful when doing columnar lists where the
  *    prior column has right-padded.
  *
  *    offset value.  This is useful when doing columnar lists where the
  *    prior column has right-padded.
  *
- *  - TERMP_LITERAL: don't break apart words.  Note that a long literal
- *    word will violate the right margin.
- *
  *  - TERMP_NOBREAK: this is the most important and is used when making
  *    columns.  In short: don't print a newline and instead pad to the
  *    right margin.  Used in conjunction with TERMP_NOLPAD.
  *  - TERMP_NOBREAK: this is the most important and is used when making
  *    columns.  In short: don't print a newline and instead pad to the
  *    right margin.  Used in conjunction with TERMP_NOLPAD.
@@ -320,7 +316,7 @@ flushln(struct termp *p)
                                putchar('\n');
                                for (j = 0; j < p->rmargin; j++)
                                        putchar(' ');
                                putchar('\n');
                                for (j = 0; j < p->rmargin; j++)
                                        putchar(' ');
-                               vis = p->rmargin;
+                               vis = p->rmargin - p->offset;
                        } else if (vis + vsz > bp) 
                                warnx("word breaks right margin");
 
                        } else if (vis + vsz > bp) 
                                warnx("word breaks right margin");
 
@@ -363,10 +359,10 @@ flushln(struct termp *p)
         * pad to the right margin and stay off.
         */
 
         * pad to the right margin and stay off.
         */
 
-       if (p->flags & TERMP_NOBREAK) {
+       if (p->flags & TERMP_NOBREAK) 
                for ( ; vis < maxvis; vis++)
                        putchar(' ');
                for ( ; vis < maxvis; vis++)
                        putchar(' ');
-       else
+       else
                putchar('\n');
 
        p->col = 0;
                putchar('\n');
 
        p->col = 0;