summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-16 00:53:04 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-16 00:53:04 +0000
commit6bbd2938e989d6a753c5a0df2ff6403bcbdbf35c (patch)
treeda331d933d4e6ca2bab5630384292a470fa22f5c
parente2932ed1ff621d2bbe9623a25fa5d93b2a42241d (diff)
downloadmandoc-6bbd2938e989d6a753c5a0df2ff6403bcbdbf35c.tar.gz
Allow `It' to have a trailing paragraph if the surrounding list is in
compact mode.
-rw-r--r--mdoc_validate.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c
index 40d66564..d00295de 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -144,7 +144,7 @@ static v_post posts_dd[] = { ewarn_ge1, post_dd, post_prol, NULL };
static v_post posts_dl[] = { post_literal, bwarn_ge1, herr_eq0, NULL };
static v_post posts_dt[] = { post_dt, post_prol, NULL };
static v_post posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL };
-static v_post posts_it[] = { post_it, NULL };
+static v_post posts_it[] = { post_ignpar, post_it, NULL };
static v_post posts_lb[] = { eerr_eq1, post_lb, NULL };
static v_post posts_nd[] = { berr_ge1, NULL };
static v_post posts_nm[] = { post_nm, NULL };
@@ -1886,12 +1886,27 @@ post_ignpar(POST_ARGS)
if (MDOC_BODY != mdoc->last->type)
return(1);
- if (NULL != (np = mdoc->last->child))
+ /*
+ * Lists are allowed to have paragraphs as the first macro (I
+ * have no idea why: it really uglifies things).
+ */
+
+ np = mdoc->last->child;
+ if (NULL != np && MDOC_It != mdoc->last->tok)
if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) {
mdoc_nmsg(mdoc, np, MANDOCERR_IGNPAR);
mdoc_node_delete(mdoc, np);
}
+ /*
+ * Compact lists are allowed to have trailing paragraph macros;
+ * however, nobody else is (including non-compact lists).
+ */
+
+ np = mdoc->last;
+ if (MDOC_It == np->tok && ! np->parent->parent->data.Bl->comp)
+ return(1);
+
if (NULL != (np = mdoc->last->last))
if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) {
mdoc_nmsg(mdoc, np, MANDOCERR_IGNPAR);