aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_validate.c
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
commit9306621d8349d12b435699e61a7427b41fc2b808 (patch)
tree7323cadafba082baf54aafb2c95290598e070cb2 /mdoc_validate.c
parent438e0fe53465ef80060077f745e8cb68d8bd4fe0 (diff)
downloadmandoc-9306621d8349d12b435699e61a7427b41fc2b808.tar.gz
mandoc-9306621d8349d12b435699e61a7427b41fc2b808.tar.zst
mandoc-9306621d8349d12b435699e61a7427b41fc2b808.zip
Allow `It' to have a trailing paragraph if the surrounding list is in
compact mode.
Diffstat (limited to 'mdoc_validate.c')
-rw-r--r--mdoc_validate.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c
index 89265d5c..083fdd4c 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.141 2010/12/16 00:25:35 kristaps Exp $ */
+/* $Id: mdoc_validate.c,v 1.142 2010/12/16 00:53:04 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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);