[BACK]Return to term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/term.c between version 1.210 and 1.212

version 1.210, 2013/08/21 21:20:40 version 1.212, 2013/12/23 02:20:09
Line 83  term_end(struct termp *p)
Line 83  term_end(struct termp *p)
  *  - TERMP_NOBREAK: this is the most important and is used when making   *  - TERMP_NOBREAK: this is the most important and is used when making
  *    columns.  In short: don't print a newline and instead expect the   *    columns.  In short: don't print a newline and instead expect the
  *    next call to do the padding up to the start of the next column.   *    next call to do the padding up to the start of the next column.
    *    p->trailspace may be set to 0, 1, or 2, depending on how many
    *    space characters are required at the end of the column.
  *   *
  *  - TERMP_TWOSPACE: make sure there is room for at least two space  
  *    characters of padding.  Otherwise, rather break the line.  
  *  
  *  - TERMP_DANGLE: don't newline when TERMP_NOBREAK is specified and   *  - TERMP_DANGLE: don't newline when TERMP_NOBREAK is specified and
  *    the line is overrun, and don't pad-right if it's underrun.   *    the line is overrun, and don't pad-right if it's underrun.
  *   *
Line 121  term_flushln(struct termp *p)
Line 120  term_flushln(struct termp *p)
          * First, establish the maximum columns of "visible" content.           * First, establish the maximum columns of "visible" content.
          * This is usually the difference between the right-margin and           * This is usually the difference between the right-margin and
          * an indentation, but can be, for tagged lists or columns, a           * an indentation, but can be, for tagged lists or columns, a
          * small set of values.           * small set of values.
            *
            * The following unsigned-signed subtractions look strange,
            * but they are actually correct.  If the int p->overstep
            * is negative, it gets sign extended.  Subtracting that
            * very large size_t effectively adds a small number to dv.
          */           */
         assert  (p->rmargin >= p->offset);          assert  (p->rmargin >= p->offset);
         dv     = p->rmargin - p->offset;          dv     = p->rmargin - p->offset;
Line 200  term_flushln(struct termp *p)
Line 204  term_flushln(struct termp *p)
                         if (0 < ntab)                          if (0 < ntab)
                                 vbl += ntab * p->tabwidth;                                  vbl += ntab * p->tabwidth;
   
                         /* Remove the p->overstep width. */                          /*
                            * Remove the p->overstep width.
                            * Again, if p->overstep is negative,
                            * sign extension does the right thing.
                            */
   
                         bp += (size_t)p->overstep;                          bp += (size_t)p->overstep;
                         p->overstep = 0;                          p->overstep = 0;
Line 269  term_flushln(struct termp *p)
Line 277  term_flushln(struct termp *p)
         }          }
   
         if (TERMP_HANG & p->flags) {          if (TERMP_HANG & p->flags) {
                 /* We need one blank after the tag. */                  p->overstep = (int)(vis - maxvis +
                 p->overstep = (int)(vis - maxvis + (*p->width)(p, ' '));                                  p->trailspace * (*p->width)(p, ' '));
   
                 /*                  /*
                  * If we have overstepped the margin, temporarily move                   * If we have overstepped the margin, temporarily move
                  * it to the right and flag the rest of the line to be                   * it to the right and flag the rest of the line to be
                  * shorter.                   * shorter.
                    * If there is a request to keep the columns together,
                    * allow negative overstep when the column is not full.
                  */                   */
                 if (p->overstep < 0)                  if (p->trailspace && p->overstep < 0)
                         p->overstep = 0;                          p->overstep = 0;
                 return;                  return;
   
Line 285  term_flushln(struct termp *p)
Line 295  term_flushln(struct termp *p)
                 return;                  return;
   
         /* If the column was overrun, break the line. */          /* If the column was overrun, break the line. */
         if (maxvis <= vis +          if (maxvis < vis + p->trailspace * (*p->width)(p, ' ')) {
             ((TERMP_TWOSPACE & p->flags) ? (*p->width)(p, ' ') : 0)) {  
                 (*p->endline)(p);                  (*p->endline)(p);
                 p->viscol = 0;                  p->viscol = 0;
         }          }

Legend:
Removed from v.1.210  
changed lines
  Added in v.1.212

CVSweb