diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2010-08-20 22:51:29 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2010-08-20 22:51:29 +0000 |
commit | ffbd731dc451c848b76e3a18e38fd28e9f34e6b7 (patch) | |
tree | 93ec52912164e4952d0dd187d12c979d0b8c6f00 | |
parent | 3da43777572aa0ff7a2a4c7e97ebf7aaedd9bfa2 (diff) | |
download | mandoc-ffbd731dc451c848b76e3a18e38fd28e9f34e6b7.tar.gz |
.Bl -column phrases ignore spacing rules for trailing punctuation
and render it just like normal text.
Minimal fix of a formatting bug in operator(7) reported by ray@.
-rw-r--r-- | TODO | 7 | ||||
-rw-r--r-- | mdoc_term.c | 13 |
2 files changed, 20 insertions, 0 deletions
@@ -56,6 +56,13 @@ - explicitly disallow nested `Bl -column', which would clobber internal flags defined for struct mdoc_macro +- inside `.Bl -column' phrases, punctuation is handled like normal + text, e.g. `.Bl -column .It Fl x . Ta ...' should give "-x -." + +- inside `.Bl -column' phrases, TERMP_IGNDELIM handling by `Pf' + is not safe, e.g. `.Bl -column .It Pf a b .' gives "ab." + but should give "ab ." + - set a meaningful default if no `Bl' list type is assigned - have a blank `It' head for `Bl -tag' not puke diff --git a/mdoc_term.c b/mdoc_term.c index 55d5d1e8..e521a0ce 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -842,6 +842,8 @@ termp_it_pre(DECL_ARGS) if (MDOC_BODY == n->prev->type) p->flags |= TERMP_NOLPAD; + p->flags |= TERMP_IGNDELIM; + break; case (LIST_diag): if (MDOC_HEAD == n->type) @@ -1000,6 +1002,13 @@ termp_it_post(DECL_ARGS) p->flags &= ~TERMP_TWOSPACE; p->flags &= ~TERMP_NOLPAD; p->flags &= ~TERMP_HANG; + + /* + * TERMP_IGNDELIM is also set by `Pf', but it is safe + * to clear it here because `Pf' cannot contain `It'. + */ + + p->flags &= ~TERMP_IGNDELIM; } @@ -1804,6 +1813,10 @@ static void termp_pf_post(DECL_ARGS) { + /* + * XXX Resetting TERMP_IGNDELIM here is not safe + * because `Pf' can be used inside `Bl -column'. + */ p->flags &= ~TERMP_IGNDELIM; p->flags |= TERMP_NOSPACE; } |