version 1.288, 2022/08/15 13:04:43 |
version 1.289, 2022/08/15 18:12:30 |
Line 208 term_flushln(struct termp *p) |
|
Line 208 term_flushln(struct termp *p) |
|
return; |
return; |
|
|
endline(p); |
endline(p); |
p->viscol = 0; |
|
|
|
/* |
/* |
* Normally, start the next line at the same indentation |
* Normally, start the next line at the same indentation |
Line 314 term_fill(struct termp *p, size_t *nbr, size_t *vbr, s |
|
Line 313 term_fill(struct termp *p, size_t *nbr, size_t *vbr, s |
|
vis = term_tab_next(vis); |
vis = term_tab_next(vis); |
vis -= p->tcol->taboff; |
vis -= p->tcol->taboff; |
break; |
break; |
|
case ASCII_NBRZW: /* Non-breakable zero-width. */ |
|
break; |
case ASCII_NBRSP: /* Non-breakable space. */ |
case ASCII_NBRSP: /* Non-breakable space. */ |
p->tcol->buf[ic] = ' '; |
p->tcol->buf[ic] = ' '; |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 365 term_field(struct termp *p, size_t vbl, size_t nbr) |
|
Line 366 term_field(struct termp *p, size_t vbl, size_t nbr) |
|
switch (p->tcol->buf[ic]) { |
switch (p->tcol->buf[ic]) { |
case '\n': |
case '\n': |
case ASCII_BREAK: |
case ASCII_BREAK: |
|
case ASCII_NBRZW: |
continue; |
continue; |
case '\t': |
case '\t': |
case ' ': |
case ' ': |
Line 571 term_word(struct termp *p, const char *word) |
|
Line 573 term_word(struct termp *p, const char *word) |
|
break; |
break; |
case ESCAPE_NUMBERED: |
case ESCAPE_NUMBERED: |
uc = mchars_num2char(seq, sz); |
uc = mchars_num2char(seq, sz); |
if (uc < 0) |
if (uc >= 0) |
continue; |
break; |
break; |
bufferc(p, ASCII_NBRZW); |
|
continue; |
case ESCAPE_SPECIAL: |
case ESCAPE_SPECIAL: |
if (p->enc == TERMENC_ASCII) { |
if (p->enc == TERMENC_ASCII) { |
cp = mchars_spec2str(seq, sz, &ssz); |
cp = mchars_spec2str(seq, sz, &ssz); |
if (cp != NULL) |
if (cp != NULL) |
encode(p, cp, ssz); |
encode(p, cp, ssz); |
|
else |
|
bufferc(p, ASCII_NBRZW); |
} else { |
} else { |
uc = mchars_spec2cp(seq, sz); |
uc = mchars_spec2cp(seq, sz); |
if (uc > 0) |
if (uc > 0) |
encode1(p, uc); |
encode1(p, uc); |
|
else |
|
bufferc(p, ASCII_NBRZW); |
} |
} |
continue; |
continue; |
case ESCAPE_UNDEF: |
case ESCAPE_UNDEF: |
Line 744 term_word(struct termp *p, const char *word) |
|
Line 751 term_word(struct termp *p, const char *word) |
|
if (p->col > p->tcol->lastcol) |
if (p->col > p->tcol->lastcol) |
p->col = p->tcol->lastcol; |
p->col = p->tcol->lastcol; |
continue; |
continue; |
|
case ESCAPE_IGNORE: |
|
bufferc(p, ASCII_NBRZW); |
|
continue; |
default: |
default: |
continue; |
continue; |
} |
} |
Line 935 term_strlen(const struct termp *p, const char *cp) |
|
Line 945 term_strlen(const struct termp *p, const char *cp) |
|
int ssz, skip, uc; |
int ssz, skip, uc; |
const char *seq, *rhs; |
const char *seq, *rhs; |
enum mandoc_esc esc; |
enum mandoc_esc esc; |
static const char rej[] = { '\\', ASCII_NBRSP, ASCII_HYPH, |
static const char rej[] = { '\\', ASCII_NBRSP, ASCII_NBRZW, |
ASCII_BREAK, '\0' }; |
ASCII_BREAK, ASCII_HYPH, '\0' }; |
|
|
/* |
/* |
* Account for escaped sequences within string length |
* Account for escaped sequences within string length |