version 1.159, 2010/06/27 01:26:20 |
version 1.162, 2010/06/29 19:20:38 |
Line 325 print_mdoc_node(DECL_ARGS) |
|
Line 325 print_mdoc_node(DECL_ARGS) |
|
memset(&npair, 0, sizeof(struct termpair)); |
memset(&npair, 0, sizeof(struct termpair)); |
npair.ppair = pair; |
npair.ppair = pair; |
|
|
if (MDOC_TEXT != n->type) { |
if (MDOC_TEXT == n->type) |
if (termacts[n->tok].pre) |
|
chld = (*termacts[n->tok].pre)(p, &npair, m, n); |
|
} else |
|
term_word(p, n->string); |
term_word(p, n->string); |
|
else if (termacts[n->tok].pre && !n->end) |
|
chld = (*termacts[n->tok].pre)(p, &npair, m, n); |
|
|
if (chld && n->child) |
if (chld && n->child) |
print_mdoc_nodelist(p, &npair, m, n->child); |
print_mdoc_nodelist(p, &npair, m, n->child); |
|
|
term_fontpopq(p, font); |
term_fontpopq(p, font); |
|
|
if (MDOC_TEXT != n->type) |
if (MDOC_TEXT != n->type && |
if (termacts[n->tok].post) |
termacts[n->tok].post && |
(*termacts[n->tok].post)(p, &npair, m, n); |
! (MDOC_ENDED & n->flags)) { |
|
(*termacts[n->tok].post)(p, &npair, m, n); |
|
|
|
/* |
|
* Explicit end tokens not only call the post |
|
* handler, but also tell the respective block |
|
* that it must not call the post handler again. |
|
*/ |
|
if (n->end) |
|
n->pending->flags |= MDOC_ENDED; |
|
|
|
/* |
|
* End of line terminating an implicit block |
|
* while an explicit block is still open. |
|
* Continue the explicit block without spacing. |
|
*/ |
|
if (ENDBODY_NOSPACE == n->end) |
|
p->flags |= TERMP_NOSPACE; |
|
} |
|
|
if (MDOC_EOS & n->flags) |
if (MDOC_EOS & n->flags) |
p->flags |= TERMP_SENTENCE; |
p->flags |= TERMP_SENTENCE; |
|
|
Line 1278 synopsis_pre(struct termp *p, const struct mdoc_node * |
|
Line 1295 synopsis_pre(struct termp *p, const struct mdoc_node * |
|
* Obviously, if we're not in a SYNOPSIS or no prior macros |
* Obviously, if we're not in a SYNOPSIS or no prior macros |
* exist, do nothing. |
* exist, do nothing. |
*/ |
*/ |
if (NULL == n->prev || SEC_SYNOPSIS != n->sec) |
if (NULL == n->prev || ! (MDOC_SYNPRETTY & n->flags)) |
return; |
return; |
|
|
/* |
/* |
Line 1543 termp_fn_pre(DECL_ARGS) |
|
Line 1560 termp_fn_pre(DECL_ARGS) |
|
|
|
term_word(p, ")"); |
term_word(p, ")"); |
|
|
if (SEC_SYNOPSIS == n->sec) |
if (MDOC_SYNPRETTY & n->flags) |
term_word(p, ";"); |
term_word(p, ";"); |
|
|
return(0); |
return(0); |
Line 1820 termp_in_pre(DECL_ARGS) |
|
Line 1837 termp_in_pre(DECL_ARGS) |
|
|
|
synopsis_pre(p, n); |
synopsis_pre(p, n); |
|
|
if (SEC_SYNOPSIS == n->sec && MDOC_LINE & n->flags) { |
if (MDOC_SYNPRETTY & n->flags && MDOC_LINE & n->flags) { |
term_fontpush(p, TERMFONT_BOLD); |
term_fontpush(p, TERMFONT_BOLD); |
term_word(p, "#include"); |
term_word(p, "#include"); |
term_word(p, "<"); |
term_word(p, "<"); |
|
|
termp_in_post(DECL_ARGS) |
termp_in_post(DECL_ARGS) |
{ |
{ |
|
|
if (SEC_SYNOPSIS == n->sec) |
if (MDOC_SYNPRETTY & n->flags) |
term_fontpush(p, TERMFONT_BOLD); |
term_fontpush(p, TERMFONT_BOLD); |
|
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ">"); |
term_word(p, ">"); |
|
|
if (SEC_SYNOPSIS == n->sec) |
if (MDOC_SYNPRETTY & n->flags) |
term_fontpop(p); |
term_fontpop(p); |
} |
} |
|
|
Line 1987 termp_fo_post(DECL_ARGS) |
|
Line 2004 termp_fo_post(DECL_ARGS) |
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ")"); |
term_word(p, ")"); |
|
|
if (SEC_SYNOPSIS == n->sec) { |
if (MDOC_SYNPRETTY & n->flags) { |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
term_word(p, ";"); |
term_word(p, ";"); |
} |
} |
|
|
termp_bk_pre(DECL_ARGS) |
termp_bk_pre(DECL_ARGS) |
{ |
{ |
|
|
p->flags |= TERMP_PREKEEP; |
switch (n->type) { |
return(1); |
case (MDOC_BLOCK): |
|
return(1); |
|
case (MDOC_HEAD): |
|
return(0); |
|
case (MDOC_BODY): |
|
p->flags |= TERMP_PREKEEP; |
|
return(1); |
|
default: |
|
abort(); |
|
} |
} |
} |
|
|
|
|
|
|
termp_bk_post(DECL_ARGS) |
termp_bk_post(DECL_ARGS) |
{ |
{ |
|
|
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
if (MDOC_BODY == n->type) |
|
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP); |
} |
} |
|
|
/* ARGSUSED */ |
/* ARGSUSED */ |