markman

markdown man page converter
git clone git://edryd.org/markman
Log | Files | Refs | LICENSE

commit 3ea11dbb9be06bccb0916b305fab943071973021
parent 1a52bdc1c709de798330c68555402ec4cdc8ad1b
Author: Ed van Bruggen <ed@edryd.org>
Date:   Sat,  7 Jun 2025 22:53:52 -0400

Correctly indent all paragraphs in a section

Diffstat:
Mmarkman.c | 15++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/markman.c b/markman.c @@ -295,8 +295,9 @@ void disp_line(Line l) } void -disp_block(Block b, Block prev) +disp_block(Block b, Block prev, int lvl) { + int new_lvl = lvl; switch (b->t) { case BR: break; @@ -316,12 +317,16 @@ disp_block(Block b, Block prev) printf(".TP\n"); break; } + new_lvl = b->v.h.lvl; disp_line(b->v.h.l); putchar('\n'); break; case PARA: - if (prev && prev->t == HEADER && prev->v.h.lvl < 4) - puts(".PP"); + if (prev && prev->t == HEADER) { + if (prev->v.h.lvl < 4) + puts(".PP"); + } else if (lvl == 4) + puts(".IP"); disp_line(b->v.l); puts("\n.PP"); break; @@ -337,7 +342,7 @@ disp_block(Block b, Block prev) break; } if (b->next) - disp_block(b->next, b); + disp_block(b->next, b, new_lvl); } void @@ -369,7 +374,7 @@ markman_disp(Block b, char *name) printf(".PP\n.SH SYNOPSIS\n%s\n", synsec); if (descsec) puts(".PP\n.SH DESCRIPTION"); - disp_block(b, NULL); + disp_block(b, NULL, 1); } static char*