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

Diff for /mandoc/term.c between version 1.204 and 1.207

version 1.204, 2012/07/10 15:35:41 version 1.207, 2013/05/29 15:17:52
Line 106  void
Line 106  void
 term_flushln(struct termp *p)  term_flushln(struct termp *p)
 {  {
         int              i;     /* current input position in p->buf */          int              i;     /* current input position in p->buf */
           int              ntab;  /* number of tabs to prepend */
         size_t           vis;   /* current visual position on output */          size_t           vis;   /* current visual position on output */
         size_t           vbl;   /* number of blanks to prepend to output */          size_t           vbl;   /* number of blanks to prepend to output */
         size_t           vend;  /* end of word visual position on output */          size_t           vend;  /* end of word visual position on output */
Line 144  term_flushln(struct termp *p)
Line 145  term_flushln(struct termp *p)
                  * Handle literal tab characters: collapse all                   * Handle literal tab characters: collapse all
                  * subsequent tabs into a single huge set of spaces.                   * subsequent tabs into a single huge set of spaces.
                  */                   */
                   ntab = 0;
                 while (i < p->col && '\t' == p->buf[i]) {                  while (i < p->col && '\t' == p->buf[i]) {
                         vend = (vis / p->tabwidth + 1) * p->tabwidth;                          vend = (vis / p->tabwidth + 1) * p->tabwidth;
                         vbl += vend - vis;                          vbl += vend - vis;
                         vis = vend;                          vis = vend;
                           ntab++;
                         i++;                          i++;
                 }                  }
   
Line 192  term_flushln(struct termp *p)
Line 195  term_flushln(struct termp *p)
                         } else                          } else
                                 vbl = p->offset;                                  vbl = p->offset;
   
                           /* use pending tabs on the new line */
   
                           if (0 < ntab)
                                   vbl += ntab * p->tabwidth;
   
                         /* Remove the p->overstep width. */                          /* Remove the p->overstep width. */
   
                         bp += (size_t)p->overstep;                          bp += (size_t)p->overstep;
Line 368  void
Line 376  void
 term_fontpopq(struct termp *p, const void *key)  term_fontpopq(struct termp *p, const void *key)
 {  {
   
         while (p->fonti >= 0 && key != &p->fontq[p->fonti])          while (p->fonti >= 0 && key < (void *)(p->fontq + p->fonti))
                 p->fonti--;                  p->fonti--;
         assert(p->fonti >= 0);          assert(p->fonti >= 0);
 }  }
Line 398  term_word(struct termp *p, const char *word)
Line 406  term_word(struct termp *p, const char *word)
   
         if ( ! (TERMP_NOSPACE & p->flags)) {          if ( ! (TERMP_NOSPACE & p->flags)) {
                 if ( ! (TERMP_KEEP & p->flags)) {                  if ( ! (TERMP_KEEP & p->flags)) {
                         if (TERMP_PREKEEP & p->flags)  
                                 p->flags |= TERMP_KEEP;  
                         bufferc(p, ' ');                          bufferc(p, ' ');
                         if (TERMP_SENTENCE & p->flags)                          if (TERMP_SENTENCE & p->flags)
                                 bufferc(p, ' ');                                  bufferc(p, ' ');
                 } else                  } else
                         bufferc(p, ASCII_NBRSP);                          bufferc(p, ASCII_NBRSP);
         }          }
           if (TERMP_PREKEEP & p->flags)
                   p->flags |= TERMP_KEEP;
   
         if ( ! (p->flags & TERMP_NONOSPACE))          if ( ! (p->flags & TERMP_NONOSPACE))
                 p->flags &= ~TERMP_NOSPACE;                  p->flags &= ~TERMP_NOSPACE;

Legend:
Removed from v.1.204  
changed lines
  Added in v.1.207

CVSweb