From ccdc28b884f5297f967078a51434c264fafd91ae Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Wed, 4 Mar 2009 14:41:40 +0000 Subject: -tag, if followed by empty body, doesn't newline. Versioning up. --- Makefile | 4 ++-- mdocterm.c | 19 +++++++++++-------- term.c | 8 +++++++- term.h | 3 ++- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 8f944d54..1ec235f9 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .SUFFIXES: .html .sgml -VERSION = 1.3.17 -VDATE = 03 March 2009 +VERSION = 1.3.18 +VDATE = 04 March 2009 BINDIR = $(PREFIX)/bin INCLUDEDIR = $(PREFIX)/include diff --git a/mdocterm.c b/mdocterm.c index 7fbd9466..c873c576 100644 --- a/mdocterm.c +++ b/mdocterm.c @@ -1,4 +1,4 @@ -/* $Id: mdocterm.c,v 1.31 2009/03/04 14:13:05 kristaps Exp $ */ +/* $Id: mdocterm.c,v 1.32 2009/03/04 14:41:40 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -351,9 +351,11 @@ flushln(struct termp *p) */ if ((TERMP_NOBREAK & p->flags) && vis >= maxvis) { - putchar('\n'); - for (i = 0; i < p->rmargin; i++) - putchar(' '); + if ( ! (TERMP_NONOBREAK & p->flags)) { + putchar('\n'); + for (i = 0; i < p->rmargin; i++) + putchar(' '); + } p->col = 0; return; } @@ -363,10 +365,11 @@ flushln(struct termp *p) * pad to the right margin and stay off. */ - if (p->flags & TERMP_NOBREAK) - for ( ; vis < maxvis; vis++) - putchar(' '); - else + if (p->flags & TERMP_NOBREAK) { + if ( ! (TERMP_NONOBREAK & p->flags)) + for ( ; vis < maxvis; vis++) + putchar(' '); + } else putchar('\n'); p->col = 0; diff --git a/term.c b/term.c index 956bc1d6..76fced1e 100644 --- a/term.c +++ b/term.c @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.40 2009/03/04 14:13:05 kristaps Exp $ */ +/* $Id: term.c,v 1.41 2009/03/04 14:41:40 kristaps Exp $ */ /* * Copyright (c) 2009 Kristaps Dzonsons * @@ -536,6 +536,10 @@ termp_it_pre(DECL_ARGS) p->flags |= TERMP_NOBREAK; else p->flags |= TERMP_NOLPAD; + if (MDOC_HEAD == node->type && MDOC_Tag == type) + if (NULL == node->next || + NULL == node->next->child) + p->flags |= TERMP_NONOBREAK; break; case (MDOC_Diag): if (MDOC_HEAD == node->type) @@ -1662,6 +1666,7 @@ static int termp__t_pre(DECL_ARGS) { + /* FIXME: titles are underlined. */ word(p, "\""); p->flags |= TERMP_NOSPACE; return(1); @@ -1674,6 +1679,7 @@ termp__t_post(DECL_ARGS) { p->flags |= TERMP_NOSPACE; + /* FIXME: titles are underlined. */ word(p, "\""); word(p, node->next ? "," : "."); } diff --git a/term.h b/term.h index 4ec3e751..29cd9ca7 100644 --- a/term.h +++ b/term.h @@ -1,4 +1,4 @@ -/* $Id: term.h,v 1.18 2009/03/04 14:13:05 kristaps Exp $ */ +/* $Id: term.h,v 1.19 2009/03/04 14:41:40 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -95,6 +95,7 @@ struct termp { #define TERMP_LITERAL (1 << 5) /* Literal words. */ #define TERMP_IGNDELIM (1 << 6) /* Delims like regulars. */ #define TERMP_NONOSPACE (1 << 7) /* No space (no autounset). */ +#define TERMP_NONOBREAK (1 << 8) char *buf; struct termsym *symtab; /* Special-symbol table. */ struct termsym *styletab; /* Style table. */ -- cgit v1.2.3-56-ge451