version 1.108, 2010/01/01 18:01:40 |
version 1.109, 2010/01/01 18:33:51 |
|
|
|
|
struct termpair { |
struct termpair { |
struct termpair *ppair; |
struct termpair *ppair; |
int flag; |
|
int count; |
int count; |
}; |
}; |
|
|
Line 677 termp_it_pre(DECL_ARGS) |
|
Line 676 termp_it_pre(DECL_ARGS) |
|
|
|
bl = n->parent->parent->parent; |
bl = n->parent->parent->parent; |
|
|
/* Save parent attributes. */ |
|
|
|
pair->flag = p->flags; |
|
|
|
/* Get list width, offset, and list type from argument list. */ |
/* Get list width, offset, and list type from argument list. */ |
|
|
keys[0] = MDOC_Width; |
keys[0] = MDOC_Width; |
Line 822 termp_it_pre(DECL_ARGS) |
|
Line 817 termp_it_pre(DECL_ARGS) |
|
} |
} |
|
|
/* |
/* |
* Pad and break control. This is the tricker part. Lists with |
* Pad and break control. This is the tricky part. These flags |
* set right-margins for the head get TERMP_NOBREAK because, if |
* are documented in term_flushln() in term.c. Note that we're |
* they overrun the margin, they wrap to the new margin. |
* going to unset all of these flags in termp_it_post() when we |
* Correspondingly, the body for these types don't left-pad, as |
* exit. |
* the head will pad out to to the right. |
|
*/ |
*/ |
|
|
switch (type) { |
switch (type) { |
Line 967 termp_it_pre(DECL_ARGS) |
|
Line 961 termp_it_pre(DECL_ARGS) |
|
break; |
break; |
case (MDOC_Enum): |
case (MDOC_Enum): |
(pair->ppair->ppair->count)++; |
(pair->ppair->ppair->count)++; |
(void)snprintf(buf, sizeof(buf), "%d.", |
snprintf(buf, sizeof(buf), "%d.", |
pair->ppair->ppair->count); |
pair->ppair->ppair->count); |
term_word(p, buf); |
term_word(p, buf); |
break; |
break; |
Line 1010 termp_it_post(DECL_ARGS) |
|
Line 1004 termp_it_post(DECL_ARGS) |
|
{ |
{ |
int type; |
int type; |
|
|
if (MDOC_BODY != n->type && MDOC_HEAD != n->type) |
if (MDOC_BLOCK == n->type) |
return; |
return; |
|
|
type = arg_listtype(n->parent->parent->parent); |
type = arg_listtype(n->parent->parent->parent); |
Line 1034 termp_it_post(DECL_ARGS) |
|
Line 1028 termp_it_post(DECL_ARGS) |
|
break; |
break; |
} |
} |
|
|
p->flags = pair->flag; |
/* |
|
* Now that our output is flushed, we can reset our tags. Since |
|
* only `It' sets these flags, we're free to assume that nobody |
|
* has munged them in the meanwhile. |
|
*/ |
|
|
|
p->flags &= ~TERMP_DANGLE; |
|
p->flags &= ~TERMP_NOBREAK; |
|
p->flags &= ~TERMP_TWOSPACE; |
|
p->flags &= ~TERMP_NOLPAD; |
|
p->flags &= ~TERMP_HANG; |
} |
} |
|
|
|
|
Line 2015 termp_sm_pre(DECL_ARGS) |
|
Line 2019 termp_sm_pre(DECL_ARGS) |
|
{ |
{ |
|
|
assert(n->child && MDOC_TEXT == n->child->type); |
assert(n->child && MDOC_TEXT == n->child->type); |
if (0 == strcmp("on", n->child->string)) { |
if (0 == strcmp("on", n->child->string)) |
p->flags &= ~TERMP_NONOSPACE; |
p->flags &= ~TERMP_NONOSPACE; |
p->flags &= ~TERMP_NOSPACE; |
else |
} else |
|
p->flags |= TERMP_NONOSPACE; |
p->flags |= TERMP_NONOSPACE; |
|
|
return(0); |
return(0); |