From d769b406898f4cb6b65c691825fb2a8f9d89aa13 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sun, 1 Feb 2015 23:10:35 +0000 Subject: fix .Eo/.Ec spacing --- mdoc_man.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'mdoc_man.c') diff --git a/mdoc_man.c b/mdoc_man.c index f329cd98..2be9945e 100644 --- a/mdoc_man.c +++ b/mdoc_man.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_man.c,v 1.83 2015/01/28 17:32:07 schwarze Exp $ */ +/* $Id: mdoc_man.c,v 1.84 2015/02/01 23:10:35 schwarze Exp $ */ /* * Copyright (c) 2011-2015 Ingo Schwarze * @@ -1134,16 +1134,38 @@ static int pre_eo(DECL_ARGS) { - outflags &= ~(MMAN_spc | MMAN_nl); + if (n->end == ENDBODY_NOT && + n->parent->head->child == NULL && + n->child != NULL && + n->child->end != ENDBODY_NOT) + print_word("\\&"); + else if (n->end != ENDBODY_NOT ? n->child != NULL : + n->parent->head->child != NULL && + (n->parent->body->child != NULL || + n->parent->tail->child != NULL)) + outflags &= ~(MMAN_spc | MMAN_nl); return(1); } static void post_eo(DECL_ARGS) { + int body, tail; + + if (n->end != ENDBODY_NOT) { + outflags |= MMAN_spc; + return; + } - if (n->end != ENDBODY_SPACE) + body = n->child != NULL || n->parent->head->child != NULL; + tail = n->parent->tail != NULL && n->parent->tail->child != NULL; + + if (body && tail) outflags &= ~MMAN_spc; + else if ( ! (body || tail)) + print_word("\\&"); + else if ( ! tail) + outflags |= MMAN_spc; } static int -- cgit v1.2.3-56-ge451