version 1.49, 2009/07/20 19:30:46 |
version 1.53, 2009/07/21 14:28:36 |
|
|
#include "mdoc.h" |
#include "mdoc.h" |
|
|
/* FIXME: macro arguments can be escaped. */ |
/* FIXME: macro arguments can be escaped. */ |
/* FIXME: support more offset/width tokens. */ |
|
|
|
#define TTYPE_PROG 0 |
#define TTYPE_PROG 0 |
#define TTYPE_CMD_FLAG 1 |
#define TTYPE_CMD_FLAG 1 |
Line 66 const int ttypes[TTYPE_NMAX] = { |
|
Line 65 const int ttypes[TTYPE_NMAX] = { |
|
TERMP_UNDER, /* TTYPE_FUNC_ARG */ |
TERMP_UNDER, /* TTYPE_FUNC_ARG */ |
TERMP_UNDER, /* TTYPE_LINK */ |
TERMP_UNDER, /* TTYPE_LINK */ |
TERMP_BOLD, /* TTYPE_SSECTION */ |
TERMP_BOLD, /* TTYPE_SSECTION */ |
TERMP_UNDER, /* TTYPE_FILE */ |
0, /* TTYPE_FILE */ |
TERMP_UNDER, /* TTYPE_EMPH */ |
TERMP_UNDER, /* TTYPE_EMPH */ |
TERMP_BOLD, /* TTYPE_CONFIG */ |
TERMP_BOLD, /* TTYPE_CONFIG */ |
TERMP_BOLD, /* TTYPE_CMD */ |
TERMP_BOLD, /* TTYPE_CMD */ |
Line 155 static int termp_nd_pre(DECL_ARGS); |
|
Line 154 static int termp_nd_pre(DECL_ARGS); |
|
static int termp_nm_pre(DECL_ARGS); |
static int termp_nm_pre(DECL_ARGS); |
static int termp_ns_pre(DECL_ARGS); |
static int termp_ns_pre(DECL_ARGS); |
static int termp_op_pre(DECL_ARGS); |
static int termp_op_pre(DECL_ARGS); |
static int termp_pa_pre(DECL_ARGS); |
|
static int termp_pf_pre(DECL_ARGS); |
static int termp_pf_pre(DECL_ARGS); |
static int termp_pp_pre(DECL_ARGS); |
static int termp_pp_pre(DECL_ARGS); |
static int termp_pq_pre(DECL_ARGS); |
static int termp_pq_pre(DECL_ARGS); |
Line 211 static const struct termact termacts[MDOC_MAX] = { |
|
Line 209 static const struct termact termacts[MDOC_MAX] = { |
|
{ termp_nm_pre, NULL }, /* Nm */ |
{ termp_nm_pre, NULL }, /* Nm */ |
{ termp_op_pre, termp_op_post }, /* Op */ |
{ termp_op_pre, termp_op_post }, /* Op */ |
{ NULL, NULL }, /* Ot */ |
{ NULL, NULL }, /* Ot */ |
{ termp_pa_pre, NULL }, /* Pa */ |
{ NULL, NULL }, /* Pa */ |
{ termp_rv_pre, NULL }, /* Rv */ |
{ termp_rv_pre, NULL }, /* Rv */ |
{ NULL, NULL }, /* St */ |
{ NULL, NULL }, /* St */ |
{ termp_va_pre, NULL }, /* Va */ |
{ termp_va_pre, NULL }, /* Va */ |
Line 813 termp_it_pre(DECL_ARGS) |
|
Line 811 termp_it_pre(DECL_ARGS) |
|
* while diagonal bodies need two. |
* while diagonal bodies need two. |
*/ |
*/ |
|
|
|
p->flags |= TERMP_NOSPACE; |
|
|
switch (type) { |
switch (type) { |
|
case (MDOC_Diag): |
|
term_word(p, "\\ \\ "); |
|
break; |
case (MDOC_Inset): |
case (MDOC_Inset): |
if (MDOC_BODY == node->type) |
if (MDOC_BODY == node->type) |
p->flags &= ~TERMP_NOSPACE; |
term_word(p, "\\ "); |
else |
|
p->flags |= TERMP_NOSPACE; |
|
break; |
break; |
default: |
default: |
p->flags |= TERMP_NOSPACE; |
|
break; |
break; |
} |
} |
|
|
|
p->flags |= TERMP_NOSPACE; |
|
|
/* |
/* |
* Style flags. Diagnostic heads need TTYPE_DIAG. |
* Style flags. Diagnostic heads need TTYPE_DIAG. |
*/ |
*/ |
Line 870 termp_it_pre(DECL_ARGS) |
|
Line 872 termp_it_pre(DECL_ARGS) |
|
break; |
break; |
case (MDOC_Tag): |
case (MDOC_Tag): |
if (MDOC_HEAD == node->type) |
if (MDOC_HEAD == node->type) |
p->flags |= TERMP_NOBREAK; |
p->flags |= TERMP_NOBREAK | TERMP_TWOSPACE; |
else |
else |
p->flags |= TERMP_NOLPAD; |
p->flags |= TERMP_NOLPAD; |
|
|
Line 927 termp_it_pre(DECL_ARGS) |
|
Line 929 termp_it_pre(DECL_ARGS) |
|
case (MDOC_Column): |
case (MDOC_Column): |
assert(width); |
assert(width); |
p->rmargin = p->offset + width; |
p->rmargin = p->offset + width; |
|
/* |
|
* XXX - this behaviour is not documented: the |
|
* right-most column is filled to the right margin. |
|
*/ |
|
if (MDOC_HEAD == node->type && |
|
MDOC_BODY == node->next->type) |
|
p->rmargin = p->maxrmargin; |
break; |
break; |
default: |
default: |
break; |
break; |
Line 1003 termp_it_post(DECL_ARGS) |
|
Line 1012 termp_it_post(DECL_ARGS) |
|
assert(-1 != type); |
assert(-1 != type); |
|
|
switch (type) { |
switch (type) { |
case (MDOC_Diag): |
|
term_word(p, "\\ "); |
|
/* FALLTHROUGH */ |
|
case (MDOC_Item): |
case (MDOC_Item): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
|
case (MDOC_Diag): |
|
/* FALLTHROUGH */ |
case (MDOC_Inset): |
case (MDOC_Inset): |
if (MDOC_BODY == node->type) |
if (MDOC_BODY == node->type) |
term_flushln(p); |
term_flushln(p); |
Line 1749 termp_ss_post(DECL_ARGS) |
|
Line 1757 termp_ss_post(DECL_ARGS) |
|
|
|
if (MDOC_HEAD == node->type) |
if (MDOC_HEAD == node->type) |
term_newln(p); |
term_newln(p); |
} |
|
|
|
|
|
/* ARGSUSED */ |
|
static int |
|
termp_pa_pre(DECL_ARGS) |
|
{ |
|
|
|
pair->flag |= ttypes[TTYPE_FILE]; |
|
return(1); |
|
} |
} |
|
|
|
|