From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id qAJ2EjiA020510 for ; Sun, 18 Nov 2012 21:14:45 -0500 (EST) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id qAJ2Ejp7008953; Sun, 18 Nov 2012 21:14:45 -0500 (EST) Date: Sun, 18 Nov 2012 21:14:45 -0500 (EST) Message-Id: <201211190214.qAJ2Ejp7008953@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: In -Tman mode, support automatic word keeps in the SYNOPSIS just X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- In -Tman mode, support automatic word keeps in the SYNOPSIS just like in -Tascii mode; requested by millert@. While here, do not escape the blank characters terminating man(7) macros; this is becoming more important as we use more keeps now. Note that -Tman still does not support .nr nS. Modified Files: -------------- mdocml: mdoc_man.c Revision Data ------------- Index: mdoc_man.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_man.c,v retrieving revision 1.45 retrieving revision 1.46 diff -Lmdoc_man.c -Lmdoc_man.c -u -p -r1.45 -r1.46 --- mdoc_man.c +++ mdoc_man.c @@ -251,9 +251,10 @@ static int outflags; #define MMAN_PP (1 << 5) /* reset indentation etc. */ #define MMAN_Sm (1 << 6) /* horizontal spacing mode */ #define MMAN_Bk (1 << 7) /* word keep mode */ -#define MMAN_An_split (1 << 8) /* author mode is "split" */ -#define MMAN_An_nosplit (1 << 9) /* author mode is "nosplit" */ -#define MMAN_PD (1 << 10) /* inter-paragraph spacing disabled */ +#define MMAN_Bk_susp (1 << 8) /* suspend this (after a macro) */ +#define MMAN_An_split (1 << 9) /* author mode is "split" */ +#define MMAN_An_nosplit (1 << 10) /* author mode is "nosplit" */ +#define MMAN_PD (1 << 11) /* inter-paragraph spacing disabled */ #define BL_STACK_MAX 32 @@ -334,7 +335,8 @@ print_word(const char *s) */ if (MMAN_spc_force & outflags || '\0' == s[0] || NULL == strchr(".,:;)]?!", s[0]) || '\0' != s[1]) { - if (MMAN_Bk & outflags) + if (MMAN_Bk & outflags && + ! (MMAN_Bk_susp & outflags)) putchar('\\'); putchar(' '); if (TPremain) @@ -351,7 +353,7 @@ print_word(const char *s) outflags |= MMAN_spc; else outflags &= ~MMAN_spc; - outflags &= ~MMAN_spc_force; + outflags &= ~(MMAN_spc_force | MMAN_Bk_susp); for ( ; *s; s++) { switch (*s) { @@ -391,13 +393,11 @@ print_block(const char *s, int newflags) print_line(".PD", 0); outflags &= ~MMAN_PD; } - } else if (! (MMAN_PD & outflags)) { - print_line(".PD 0", 0); - outflags |= MMAN_PD; - } + } else if (! (MMAN_PD & outflags)) + print_line(".PD 0", MMAN_PD); outflags |= MMAN_nl; print_word(s); - outflags |= newflags; + outflags |= MMAN_Bk_susp | newflags; } static void @@ -475,7 +475,7 @@ print_width(const char *v, const struct * preserve its indentation. */ 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", Bl_stack[Bl_stack_len - 1]); print_word(buf); @@ -556,7 +556,7 @@ print_node(DECL_ARGS) const struct mdoc_node *prev, *sub; const struct manact *act; int cond, do_sub; - + /* * Break the line if we were parsed subsequent the current node. * This makes the page structure be more consistent. @@ -706,13 +706,25 @@ static int pre_sect(DECL_ARGS) { - if (MDOC_HEAD != n->type) - return(1); - outflags |= MMAN_sp; - print_block(manacts[n->tok].prefix, 0); - print_word(""); - putchar('\"'); - outflags &= ~MMAN_spc; + switch (n->type) { + case (MDOC_HEAD): + outflags |= MMAN_sp; + print_block(manacts[n->tok].prefix, 0); + print_word(""); + putchar('\"'); + 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); } @@ -817,7 +829,7 @@ pre_bd(DECL_ARGS) print_line(".nf", 0); if (0 == n->norm->Bd.comp && NULL != n->parent->prev) outflags |= MMAN_sp; - print_line(".RS", 0); + print_line(".RS", MMAN_Bk_susp); print_offs(n->norm->Bd.offs); outflags |= MMAN_nl; return(1); @@ -841,7 +853,7 @@ post_bd(DECL_ARGS) */ if (NULL != n->parent->next && Bl_stack_len && Bl_stack[Bl_stack_len - 1]) { - print_line(".RS", 0); + print_line(".RS", MMAN_Bk_susp); snprintf(buf, sizeof(buf), "%ldn", Bl_stack[Bl_stack_len - 1]); print_word(buf); -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv