version 1.250, 2013/12/22 23:34:13 |
version 1.253, 2013/12/24 20:45:27 |
Line 307 print_mdoc_node(DECL_ARGS) |
|
Line 307 print_mdoc_node(DECL_ARGS) |
|
/* |
/* |
* Keeps only work until the end of a line. If a keep was |
* Keeps only work until the end of a line. If a keep was |
* invoked in a prior line, revert it to PREKEEP. |
* invoked in a prior line, revert it to PREKEEP. |
* |
|
* Also let SYNPRETTY sections behave as if they were wrapped |
|
* in a `Bk' block. |
|
*/ |
*/ |
|
|
if (TERMP_KEEP & p->flags || MDOC_SYNPRETTY & n->flags) { |
if (TERMP_KEEP & p->flags) { |
if (n->prev ? (n->prev->line != n->line) : |
if (n->prev ? (n->prev->lastline != n->line) : |
(n->parent && n->parent->line != n->line)) { |
(n->parent && n->parent->line != n->line)) { |
p->flags &= ~TERMP_KEEP; |
p->flags &= ~TERMP_KEEP; |
p->flags |= TERMP_PREKEEP; |
p->flags |= TERMP_PREKEEP; |
Line 321 print_mdoc_node(DECL_ARGS) |
|
Line 318 print_mdoc_node(DECL_ARGS) |
|
} |
} |
|
|
/* |
/* |
* Since SYNPRETTY sections aren't "turned off" with `Ek', |
|
* we have to intuit whether we should disable formatting. |
|
*/ |
|
|
|
if ( ! (MDOC_SYNPRETTY & n->flags) && |
|
((n->prev && MDOC_SYNPRETTY & n->prev->flags) || |
|
(n->parent && MDOC_SYNPRETTY & n->parent->flags))) |
|
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
|
|
|
/* |
|
* After the keep flags have been set up, we may now |
* After the keep flags have been set up, we may now |
* produce output. Note that some pre-handlers do so. |
* produce output. Note that some pre-handlers do so. |
*/ |
*/ |
|
|
termp_nm_pre(DECL_ARGS) |
termp_nm_pre(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_BLOCK == n->type) |
if (MDOC_BLOCK == n->type) { |
|
p->flags |= TERMP_PREKEEP; |
return(1); |
return(1); |
|
} |
|
|
if (MDOC_BODY == n->type) { |
if (MDOC_BODY == n->type) { |
if (NULL == n->child) |
if (NULL == n->child) |
|
|
termp_nm_post(DECL_ARGS) |
termp_nm_post(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_HEAD == n->type && n->next->child) { |
if (MDOC_BLOCK == n->type) { |
|
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
|
} else if (MDOC_HEAD == n->type && n->next->child) { |
term_flushln(p); |
term_flushln(p); |
p->flags &= ~(TERMP_NOBREAK | TERMP_HANG); |
p->flags &= ~(TERMP_NOBREAK | TERMP_HANG); |
p->trailspace = 0; |
p->trailspace = 0; |
Line 1538 termp_ft_pre(DECL_ARGS) |
|
Line 1529 termp_ft_pre(DECL_ARGS) |
|
static int |
static int |
termp_fn_pre(DECL_ARGS) |
termp_fn_pre(DECL_ARGS) |
{ |
{ |
|
size_t width, rmargin = 0; |
int pretty; |
int pretty; |
|
|
pretty = MDOC_SYNPRETTY & n->flags; |
pretty = MDOC_SYNPRETTY & n->flags; |
Line 1547 termp_fn_pre(DECL_ARGS) |
|
Line 1539 termp_fn_pre(DECL_ARGS) |
|
if (NULL == (n = n->child)) |
if (NULL == (n = n->child)) |
return(0); |
return(0); |
|
|
|
if (pretty) { |
|
width = term_len(p, 4); |
|
rmargin = p->rmargin; |
|
p->rmargin = p->offset + width; |
|
p->flags |= TERMP_NOBREAK | TERMP_HANG; |
|
} |
|
|
assert(MDOC_TEXT == n->type); |
assert(MDOC_TEXT == n->type); |
term_fontpush(p, TERMFONT_BOLD); |
term_fontpush(p, TERMFONT_BOLD); |
term_word(p, n->string); |
term_word(p, n->string); |
term_fontpop(p); |
term_fontpop(p); |
|
|
|
if (pretty) { |
|
term_flushln(p); |
|
p->flags &= ~(TERMP_NOBREAK | TERMP_HANG); |
|
p->offset = p->rmargin; |
|
p->rmargin = rmargin; |
|
} |
|
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, "("); |
term_word(p, "("); |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
Line 1574 termp_fn_pre(DECL_ARGS) |
|
Line 1580 termp_fn_pre(DECL_ARGS) |
|
if (pretty) { |
if (pretty) { |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ";"); |
term_word(p, ";"); |
|
term_flushln(p); |
} |
} |
|
|
return(0); |
return(0); |
|
|
termp_bk_post(DECL_ARGS) |
termp_bk_post(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_BODY == n->type && ! (MDOC_SYNPRETTY & n->flags)) |
if (MDOC_BODY == n->type) |
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
} |
} |
|
|