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:
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*