version 1.171, 2010/07/04 22:04:04 |
version 1.178, 2010/07/26 22:35:59 |
|
|
#include "mandoc.h" |
#include "mandoc.h" |
#include "out.h" |
#include "out.h" |
#include "term.h" |
#include "term.h" |
#include "regs.h" |
|
#include "mdoc.h" |
#include "mdoc.h" |
#include "chars.h" |
#include "chars.h" |
#include "main.h" |
#include "main.h" |
Line 152 static const struct termact termacts[MDOC_MAX] = { |
|
Line 151 static const struct termact termacts[MDOC_MAX] = { |
|
{ termp_bl_pre, termp_bl_post }, /* Bl */ |
{ termp_bl_pre, termp_bl_post }, /* Bl */ |
{ NULL, NULL }, /* El */ |
{ NULL, NULL }, /* El */ |
{ termp_it_pre, termp_it_post }, /* It */ |
{ termp_it_pre, termp_it_post }, /* It */ |
{ NULL, NULL }, /* Ad */ |
{ termp_under_pre, NULL }, /* Ad */ |
{ termp_an_pre, termp_an_post }, /* An */ |
{ termp_an_pre, termp_an_post }, /* An */ |
{ termp_under_pre, NULL }, /* Ar */ |
{ termp_under_pre, NULL }, /* Ar */ |
{ termp_cd_pre, NULL }, /* Cd */ |
{ termp_cd_pre, NULL }, /* Cd */ |
Line 209 static const struct termact termacts[MDOC_MAX] = { |
|
Line 208 static const struct termact termacts[MDOC_MAX] = { |
|
{ termp_under_pre, NULL }, /* Em */ |
{ termp_under_pre, NULL }, /* Em */ |
{ NULL, NULL }, /* Eo */ |
{ NULL, NULL }, /* Eo */ |
{ termp_xx_pre, NULL }, /* Fx */ |
{ termp_xx_pre, NULL }, /* Fx */ |
{ termp_bold_pre, NULL }, /* Ms */ /* FIXME: convert to symbol? */ |
{ termp_bold_pre, NULL }, /* Ms */ |
{ NULL, NULL }, /* No */ |
{ NULL, NULL }, /* No */ |
{ termp_ns_pre, NULL }, /* Ns */ |
{ termp_ns_pre, NULL }, /* Ns */ |
{ termp_xx_pre, NULL }, /* Nx */ |
{ termp_xx_pre, NULL }, /* Nx */ |
Line 330 print_mdoc_node(DECL_ARGS) |
|
Line 329 print_mdoc_node(DECL_ARGS) |
|
else if (termacts[n->tok].pre && ENDBODY_NOT == n->end) |
else if (termacts[n->tok].pre && ENDBODY_NOT == n->end) |
chld = (*termacts[n->tok].pre)(p, &npair, m, n); |
chld = (*termacts[n->tok].pre)(p, &npair, m, n); |
|
|
|
/* |
|
* Keeps only work until the end of a line. If a keep was |
|
* invoked in a prior line, revert it to PREKEEP. |
|
*/ |
|
|
|
if (TERMP_KEEP & p->flags) { |
|
if (n->prev && n->prev->line != n->line) { |
|
p->flags &= ~TERMP_KEEP; |
|
p->flags |= TERMP_PREKEEP; |
|
} else if (NULL == n->prev) { |
|
if (n->parent && n->parent->line != n->line) { |
|
p->flags &= ~TERMP_KEEP; |
|
p->flags |= TERMP_PREKEEP; |
|
} |
|
} |
|
} |
|
|
if (chld && n->child) |
if (chld && n->child) |
print_mdoc_nodelist(p, &npair, m, n->child); |
print_mdoc_nodelist(p, &npair, m, n->child); |
|
|
Line 1010 termp_nm_pre(DECL_ARGS) |
|
Line 1026 termp_nm_pre(DECL_ARGS) |
|
if (NULL == n->child && NULL == m->name) |
if (NULL == n->child && NULL == m->name) |
return(0); |
return(0); |
|
|
synopsis_pre(p, n); |
if (MDOC_HEAD == n->type) |
|
synopsis_pre(p, n->parent); |
|
|
if (MDOC_HEAD == n->type && n->next->child) { |
if (MDOC_HEAD == n->type && n->next->child) { |
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK | TERMP_HANG; |
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK | TERMP_HANG; |
Line 1889 termp_sp_pre(DECL_ARGS) |
|
Line 1906 termp_sp_pre(DECL_ARGS) |
|
len = 0; |
len = 0; |
break; |
break; |
default: |
default: |
|
assert(n->parent); |
|
if ((NULL == n->next || NULL == n->prev) && |
|
(MDOC_Ss == n->parent->tok || |
|
MDOC_Sh == n->parent->tok)) |
|
return(0); |
len = 1; |
len = 1; |
break; |
break; |
} |
} |
Line 2050 termp_sm_pre(DECL_ARGS) |
|
Line 2072 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)) { |
|
if (p->col) |
|
p->flags &= ~TERMP_NOSPACE; |
p->flags &= ~TERMP_NONOSPACE; |
p->flags &= ~TERMP_NONOSPACE; |
else |
} else |
p->flags |= TERMP_NONOSPACE; |
p->flags |= TERMP_NONOSPACE; |
|
|
return(0); |
return(0); |