diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2012-07-18 16:52:03 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2012-07-18 16:52:03 +0000 |
commit | d40f01e01b9fd995ed3ff236f92882a453ac2d00 (patch) | |
tree | 81fda8f023a6a4ed920ab313799f96af8841c395 | |
parent | fbd1946d95c6c63b887598f0ef0fa3488dd6e8c5 (diff) | |
download | mandoc-d40f01e01b9fd995ed3ff236f92882a453ac2d00.tar.gz |
Drop empty .IP such that is does not cause additional vertical spacing.
Issue first reported by naddy@ in rsync(1).
OpenBSD rev. 1.55.
-rw-r--r-- | TODO | 20 | ||||
-rw-r--r-- | man_validate.c | 22 |
2 files changed, 21 insertions, 21 deletions
@@ -248,26 +248,6 @@ and document it in mdoc(7) and man(7) COMPATIBILITY found while talking to Chris Bennett -- In man(7), the sequence - regular text - .IP - .IP "tag" - indented text - should produce one, not four blank lines between the regular text - and the tag, see for example rsync(1). - Likewise, - regular text - .IP - indented text - should produce one, not two blank lines in between, and - regular text - .IP - .RS - .IP tag - indented text - should produce one, not three blank lines. - Reported by naddy@ Mon, 28 Mar 2011 20:45:42 +0200 - - trailing whitespace must be ignored even when followed by a font escape, see for example makes diff --git a/man_validate.c b/man_validate.c index 0865bafc..67b99afc 100644 --- a/man_validate.c +++ b/man_validate.c @@ -55,6 +55,7 @@ static int check_root(CHKARGS); static void check_text(CHKARGS); static int post_AT(CHKARGS); +static int post_IP(CHKARGS); static int post_vs(CHKARGS); static int post_fi(CHKARGS); static int post_ft(CHKARGS); @@ -70,6 +71,7 @@ static v_check posts_eq0[] = { check_eq0, NULL }; static v_check posts_eq2[] = { check_eq2, NULL }; static v_check posts_fi[] = { check_eq0, post_fi, NULL }; static v_check posts_ft[] = { post_ft, NULL }; +static v_check posts_ip[] = { post_IP, NULL }; static v_check posts_nf[] = { check_eq0, post_nf, NULL }; static v_check posts_par[] = { check_par, NULL }; static v_check posts_part[] = { check_part, NULL }; @@ -88,7 +90,7 @@ static const struct man_valid man_valids[MAN_MAX] = { { NULL, posts_par }, /* LP */ { NULL, posts_par }, /* PP */ { NULL, posts_par }, /* P */ - { NULL, NULL }, /* IP */ + { NULL, posts_ip }, /* IP */ { NULL, NULL }, /* HP */ { NULL, NULL }, /* SM */ { NULL, NULL }, /* SB */ @@ -354,6 +356,24 @@ check_par(CHKARGS) return(1); } +static int +post_IP(CHKARGS) +{ + + switch (n->type) { + case (MAN_BLOCK): + if (0 == n->head->nchild && 0 == n->body->nchild) + man_node_delete(m, n); + break; + case (MAN_BODY): + if (0 == n->parent->head->nchild && 0 == n->nchild) + man_nmsg(m, n, MANDOCERR_IGNPAR); + break; + default: + break; + } + return(1); +} static int post_TH(CHKARGS) |