=================================================================== RCS file: /cvs/mandoc/mdoc_man.c,v retrieving revision 1.59 retrieving revision 1.61 diff -u -p -r1.59 -r1.61 --- mandoc/mdoc_man.c 2014/03/23 11:25:26 1.59 +++ mandoc/mdoc_man.c 2014/03/30 23:34:32 1.61 @@ -1,4 +1,4 @@ -/* $Id: mdoc_man.c,v 1.59 2014/03/23 11:25:26 schwarze Exp $ */ +/* $Id: mdoc_man.c,v 1.61 2014/03/30 23:34:32 schwarze Exp $ */ /* * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze * @@ -90,6 +90,7 @@ static int pre_in(DECL_ARGS); static int pre_it(DECL_ARGS); static int pre_lk(DECL_ARGS); static int pre_li(DECL_ARGS); +static int pre_ll(DECL_ARGS); static int pre_nm(DECL_ARGS); static int pre_no(DECL_ARGS); static int pre_ns(DECL_ARGS); @@ -241,6 +242,7 @@ static const struct manact manacts[MDOC_MAX + 1] = { { NULL, pre_sp, post_sp, NULL, NULL }, /* sp */ { NULL, NULL, post_percent, NULL, NULL }, /* %U */ { NULL, NULL, NULL, NULL, NULL }, /* Ta */ + { NULL, pre_ll, post_sp, NULL, NULL }, /* ll */ { NULL, NULL, NULL, NULL, NULL }, /* ROOT */ }; @@ -599,7 +601,7 @@ print_node(DECL_ARGS) */ act = manacts + n->tok; cond = NULL == act->cond || (*act->cond)(meta, n); - if (cond && act->pre) + if (cond && act->pre && ENDBODY_NOT == n->end) do_sub = (*act->pre)(meta, n); } @@ -615,8 +617,17 @@ print_node(DECL_ARGS) /* * Lastly, conditionally run the post-node handler. */ + if (MDOC_ENDED & n->flags) + return; + if (cond && act->post) (*act->post)(meta, n); + + if (ENDBODY_NOT != n->end) + n->pending->flags |= MDOC_ENDED; + + if (ENDBODY_NOSPACE == n->end) + outflags &= ~(MMAN_spc | MMAN_nl); } static int @@ -654,7 +665,7 @@ post_enc(DECL_ARGS) suffix = manacts[n->tok].suffix; if (NULL == suffix) return; - outflags &= ~MMAN_spc; + outflags &= ~(MMAN_spc | MMAN_nl); print_word(suffix); } @@ -1403,6 +1414,14 @@ pre_lk(DECL_ARGS) print_word(link->string); font_pop(); return(0); +} + +static int +pre_ll(DECL_ARGS) +{ + + print_line(".ll", 0); + return(1); } static int