version 1.45, 2012/11/19 02:08:33 |
version 1.46, 2012/11/19 02:14:45 |
Line 251 static int outflags; |
|
Line 251 static int outflags; |
|
#define MMAN_PP (1 << 5) /* reset indentation etc. */ |
#define MMAN_PP (1 << 5) /* reset indentation etc. */ |
#define MMAN_Sm (1 << 6) /* horizontal spacing mode */ |
#define MMAN_Sm (1 << 6) /* horizontal spacing mode */ |
#define MMAN_Bk (1 << 7) /* word keep mode */ |
#define MMAN_Bk (1 << 7) /* word keep mode */ |
#define MMAN_An_split (1 << 8) /* author mode is "split" */ |
#define MMAN_Bk_susp (1 << 8) /* suspend this (after a macro) */ |
#define MMAN_An_nosplit (1 << 9) /* author mode is "nosplit" */ |
#define MMAN_An_split (1 << 9) /* author mode is "split" */ |
#define MMAN_PD (1 << 10) /* inter-paragraph spacing disabled */ |
#define MMAN_An_nosplit (1 << 10) /* author mode is "nosplit" */ |
|
#define MMAN_PD (1 << 11) /* inter-paragraph spacing disabled */ |
|
|
#define BL_STACK_MAX 32 |
#define BL_STACK_MAX 32 |
|
|
Line 334 print_word(const char *s) |
|
Line 335 print_word(const char *s) |
|
*/ |
*/ |
if (MMAN_spc_force & outflags || '\0' == s[0] || |
if (MMAN_spc_force & outflags || '\0' == s[0] || |
NULL == strchr(".,:;)]?!", s[0]) || '\0' != s[1]) { |
NULL == strchr(".,:;)]?!", s[0]) || '\0' != s[1]) { |
if (MMAN_Bk & outflags) |
if (MMAN_Bk & outflags && |
|
! (MMAN_Bk_susp & outflags)) |
putchar('\\'); |
putchar('\\'); |
putchar(' '); |
putchar(' '); |
if (TPremain) |
if (TPremain) |
Line 351 print_word(const char *s) |
|
Line 353 print_word(const char *s) |
|
outflags |= MMAN_spc; |
outflags |= MMAN_spc; |
else |
else |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc_force; |
outflags &= ~(MMAN_spc_force | MMAN_Bk_susp); |
|
|
for ( ; *s; s++) { |
for ( ; *s; s++) { |
switch (*s) { |
switch (*s) { |
Line 391 print_block(const char *s, int newflags) |
|
Line 393 print_block(const char *s, int newflags) |
|
print_line(".PD", 0); |
print_line(".PD", 0); |
outflags &= ~MMAN_PD; |
outflags &= ~MMAN_PD; |
} |
} |
} else if (! (MMAN_PD & outflags)) { |
} else if (! (MMAN_PD & outflags)) |
print_line(".PD 0", 0); |
print_line(".PD 0", MMAN_PD); |
outflags |= MMAN_PD; |
|
} |
|
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
print_word(s); |
print_word(s); |
outflags |= newflags; |
outflags |= MMAN_Bk_susp | newflags; |
} |
} |
|
|
static void |
static void |
Line 475 print_width(const char *v, const struct mdoc_node *chi |
|
Line 475 print_width(const char *v, const struct mdoc_node *chi |
|
* preserve its indentation. |
* preserve its indentation. |
*/ |
*/ |
if (Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
if (Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
snprintf(buf, sizeof(buf), "%ldn", |
snprintf(buf, sizeof(buf), "%ldn", |
Bl_stack[Bl_stack_len - 1]); |
Bl_stack[Bl_stack_len - 1]); |
print_word(buf); |
print_word(buf); |
Line 556 print_node(DECL_ARGS) |
|
Line 556 print_node(DECL_ARGS) |
|
const struct mdoc_node *prev, *sub; |
const struct mdoc_node *prev, *sub; |
const struct manact *act; |
const struct manact *act; |
int cond, do_sub; |
int cond, do_sub; |
|
|
/* |
/* |
* Break the line if we were parsed subsequent the current node. |
* Break the line if we were parsed subsequent the current node. |
* This makes the page structure be more consistent. |
* This makes the page structure be more consistent. |
|
|
pre_sect(DECL_ARGS) |
pre_sect(DECL_ARGS) |
{ |
{ |
|
|
if (MDOC_HEAD != n->type) |
switch (n->type) { |
return(1); |
case (MDOC_HEAD): |
outflags |= MMAN_sp; |
outflags |= MMAN_sp; |
print_block(manacts[n->tok].prefix, 0); |
print_block(manacts[n->tok].prefix, 0); |
print_word(""); |
print_word(""); |
putchar('\"'); |
putchar('\"'); |
outflags &= ~MMAN_spc; |
outflags &= ~MMAN_spc; |
|
break; |
|
case (MDOC_BODY): |
|
if (MDOC_Sh == n->tok) { |
|
if (MDOC_SYNPRETTY & n->flags) |
|
outflags |= MMAN_Bk; |
|
else |
|
outflags &= ~MMAN_Bk; |
|
} |
|
break; |
|
default: |
|
break; |
|
} |
return(1); |
return(1); |
} |
} |
|
|
Line 817 pre_bd(DECL_ARGS) |
|
Line 829 pre_bd(DECL_ARGS) |
|
print_line(".nf", 0); |
print_line(".nf", 0); |
if (0 == n->norm->Bd.comp && NULL != n->parent->prev) |
if (0 == n->norm->Bd.comp && NULL != n->parent->prev) |
outflags |= MMAN_sp; |
outflags |= MMAN_sp; |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
print_offs(n->norm->Bd.offs); |
print_offs(n->norm->Bd.offs); |
outflags |= MMAN_nl; |
outflags |= MMAN_nl; |
return(1); |
return(1); |
Line 841 post_bd(DECL_ARGS) |
|
Line 853 post_bd(DECL_ARGS) |
|
*/ |
*/ |
if (NULL != n->parent->next && |
if (NULL != n->parent->next && |
Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { |
print_line(".RS", 0); |
print_line(".RS", MMAN_Bk_susp); |
snprintf(buf, sizeof(buf), "%ldn", |
snprintf(buf, sizeof(buf), "%ldn", |
Bl_stack[Bl_stack_len - 1]); |
Bl_stack[Bl_stack_len - 1]); |
print_word(buf); |
print_word(buf); |