version 1.147, 2022/08/15 10:21:01 |
version 1.148, 2022/08/15 13:01:40 |
|
|
/* 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. |
|
|
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] = ' '; |
|
|
{ |
{ |
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++) { |
|
|
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; |
|
|
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); |