diff options
-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; } |