From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 8d6a513b; for ; Mon, 9 Mar 2015 13:55:08 -0500 (EST) Date: Mon, 9 Mar 2015 13:55:08 -0500 (EST) Message-Id: <6418902506878635453.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: texi2mdoc: Prevent empty Bd/Ed listing after type definition. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Prevent empty Bd/Ed listing after type definition. This also includes some ifdef'd menu generation. Modified Files: -------------- texi2mdoc: main.c Revision Data ------------- Index: main.c =================================================================== RCS file: /home/cvs/mdocml/texi2mdoc/main.c,v retrieving revision 1.64 retrieving revision 1.65 diff -Lmain.c -Lmain.c -u -p -r1.64 -r1.65 --- main.c +++ main.c @@ -65,6 +65,9 @@ static void domath(struct texi *, enum t static void domenu(struct texi *, enum texicmd, size_t *); #endif static void domultitable(struct texi *, enum texicmd, size_t *); +#if 0 +static void donode(struct texi *, enum texicmd, size_t *); +#endif static void doquotation(struct texi *, enum texicmd, size_t *); static void dotable(struct texi *, enum texicmd, size_t *); static void dotop(struct texi *, enum texicmd, size_t *); @@ -234,12 +237,20 @@ static const struct texitok __texitoks[T { domacro, "macro", 5 }, /* TEXICMD_MACRO */ { doaccent, "=", 1 }, /* TEXICMD_MACRON */ { domath, "math", 4 }, /* TEXICMD_MATH */ +#if 0 + { domenu, "menu", 4 }, /* TEXICMD_MENU */ +#else { doignblock, "menu", 4 }, /* TEXICMD_MENU */ +#endif { dosymbol, "minus", 5 }, /* TEXICMD_MINUS */ { domultitable, "multitable", 10 }, /* TEXICMD_MULTITABLE */ { doignline, "need", 4 }, /* TEXICMD_NEED */ { dosymbol, "\n", 1 }, /* TEXICMD_NEWLINE */ +#if 0 + { donode, "node", 4 }, /* TEXICMD_NODE */ +#else { doignline, "node", 4 }, /* TEXICMD_NODE */ +#endif { doignline, "noindent", 8 }, /* TEXICMD_NOINDENT */ { dosymbol, "O", 1 }, /* TEXICMD_O */ { dosymbol, "OE", 2 }, /* TEXICMD_OE */ @@ -546,6 +557,12 @@ dodefn(struct texi *p, enum texicmd cmd, } break; } + + if (TEXICMD_END == peekcmd(p, *pos)) { + parseto(p, pos, blk); + return; + } + teximacro(p, "Bd -filled -offset indent"); parseto(p, pos, blk); teximacro(p, "Ed"); @@ -1456,9 +1473,30 @@ doquotation(struct texi *p, enum texicmd #if 0 static void +donode(struct texi *p, enum texicmd cmd, size_t *pos) +{ + + teximacroopen(p, "Ix"); + texiputchars(p, "Node"); + while (*pos < BUFSZ(p) && isspace(BUF(p)[*pos])) + advance(p, pos); + while (*pos < BUFSZ(p)) { + if (BUF(p)[*pos] == ',') + break; + else if (BUF(p)[*pos] == '\n') + break; + texiputchar(p, BUF(p)[*pos]); + advance(p, pos); + } + + teximacroclose(p); + advanceeoln(p, pos, 1); +} + +static void domenu(struct texi *p, enum texicmd cmd, size_t *pos) { - size_t start; + size_t start, sv; if (NULL != p->chapters) { doignblock(p, cmd, pos); @@ -1467,7 +1505,8 @@ domenu(struct texi *p, enum texicmd cmd, advanceeoln(p, pos, 1); - teximacro(p, "Bl -tag -width Ds"); + texivspace(p); + teximacro(p, "Bl -tag -width Ds -compact"); while (*pos < BUFSZ(p)) { /* Read to next menu item. */ while (*pos < BUFSZ(p) && ismspace(BUF(p)[*pos])) @@ -1479,7 +1518,7 @@ domenu(struct texi *p, enum texicmd cmd, advance(p, pos); while (*pos < BUFSZ(p) && ismspace(BUF(p)[*pos])) advance(p, pos); - start = *pos; + sv = start = *pos; while (*pos < BUFSZ(p) && ':' != BUF(p)[*pos]) advance(p, pos); if (*pos == BUFSZ(p) || *pos == start) { @@ -1487,9 +1526,15 @@ domenu(struct texi *p, enum texicmd cmd, break; } teximacroopen(p, "It"); - teximacroopen(p, "Sx"); - for ( ; start < *pos; start++) + teximacroopen(p, "Lkx"); + texiputchar(p, '"'); + texiputchars(p, "Node"); + for (start = sv; start < *pos; start++) + texiputchar(p, BUF(p)[start]); + texiputchars(p, "\" \""); + for (start = sv; start < *pos; start++) texiputchar(p, BUF(p)[start]); + texiputchar(p, '"'); teximacroclose(p); teximacroclose(p); -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv