[BACK]Return to term.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mandoc

Diff for /src/usr.bin/mandoc/term.c between version 1.147 and 1.148

version 1.147, 2022/08/15 10:21:01 version 1.148, 2022/08/15 13:01:40
Line 155 
Line 155 
                 /* Finally, print the field content. */                  /* Finally, print the field content. */
   
                 term_field(p, vbl, nbr);                  term_field(p, vbl, nbr);
                   p->tcol->taboff += vbr + (*p->width)(p, ' ');
   
                 /*                  /*
                  * If there is no text left in the field, exit the loop.                   * If there is no text left in the field, exit the loop.
Line 307 
Line 308 
                 default:                  default:
                         switch (p->tcol->buf[ic]) {                          switch (p->tcol->buf[ic]) {
                         case '\t':                          case '\t':
                                   vis += p->tcol->taboff;
                                 vis = term_tab_next(vis);                                  vis = term_tab_next(vis);
                                   vis -= p->tcol->taboff;
                                 break;                                  break;
                         case ASCII_NBRSP:  /* Non-breakable space. */                          case ASCII_NBRSP:  /* Non-breakable space. */
                                 p->tcol->buf[ic] = ' ';                                  p->tcol->buf[ic] = ' ';
Line 346 
Line 349 
 {  {
         size_t   ic;    /* Character position in the input buffer. */          size_t   ic;    /* Character position in the input buffer. */
         size_t   vis;   /* Visual position of the current character. */          size_t   vis;   /* Visual position of the current character. */
           size_t   vt;    /* Visual position including tab offset. */
         size_t   dv;    /* Visual width of the current character. */          size_t   dv;    /* Visual width of the current character. */
         size_t   vn;    /* Visual position of the next character. */  
   
         vis = 0;          vis = 0;
         for (ic = p->tcol->col; ic < nbr; ic++) {          for (ic = p->tcol->col; ic < nbr; ic++) {
Line 362 
Line 365 
                 case ASCII_BREAK:                  case ASCII_BREAK:
                         continue;                          continue;
                 case '\t':                  case '\t':
                         vn = term_tab_next(vis);  
                         vbl += vn - vis;  
                         vis = vn;  
                         continue;  
                 case ' ':                  case ' ':
                 case ASCII_NBRSP:                  case ASCII_NBRSP:
                         dv = (*p->width)(p, ' ');                          if (p->tcol->buf[ic] == '\t') {
                                   vt = p->tcol->taboff + vis;
                                   dv = term_tab_next(vt) - vt;
                           } else
                                   dv = (*p->width)(p, ' ');
                         vbl += dv;                          vbl += dv;
                         vis += dv;                          vis += dv;
                         continue;                          continue;
Line 430 
Line 433 
 void  void
 term_newln(struct termp *p)  term_newln(struct termp *p)
 {  {
           p->tcol->taboff = 0;
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         if (p->tcol->lastcol || p->viscol)          if (p->tcol->lastcol || p->viscol)
                 term_flushln(p);                  term_flushln(p);

Legend:
Removed from v.1.147  
changed lines
  Added in v.1.148