]> git.cameronkatri.com Git - mandoc.git/commitdiff
Fix two TODOs with one check-in. Both of these relate to vertical space
authorKristaps Dzonsons <kristaps@bsd.lv>
Sat, 18 Jun 2011 17:58:48 +0000 (17:58 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Sat, 18 Jun 2011 17:58:48 +0000 (17:58 +0000)
before paragraphs and/or within `RS' blocks.

TODO
man_html.c
man_term.c

diff --git a/TODO b/TODO
index 98212dc93f36821076cac730256ab22e2e76641a..6cd2adf03f0337d72ed7e2838321772b0f0a7625 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
 ************************************************************************
 * Official mandoc TODO.
-* $Id: TODO,v 1.112 2011/06/18 17:36:52 kristaps Exp $
+* $Id: TODO,v 1.113 2011/06/18 17:58:48 kristaps Exp $
 ************************************************************************
 
 ************************************************************************
   should not produce two blank lines before the .SH,
   see for example named-checkconf(8).
 
-- In man(7), the sequence
-    regular text
-    .RS
-    .IP
-  should have a blank line between the text and the beginning of the
-  indented paragraph, see for example sudo(1).
-
 - In man(7), the sequence
     .SH HEADER
     <blank line>
   see for example rsync(1).
   Reported by naddy@  Mon, 28 Mar 2011 20:45:42 +0200
 
-- In man(7), the sequence
-    regular text
-    .PP
-    .RS
-    indented text
-  should produce one blank line between the regular and indented texts,
-  see for example rsync(1), and
-    .RE
-    <blank line>
-    .PP
-    .RS
-  should produce two,not one blank lines.
-  Reported by naddy@  Mon, 28 Mar 2011 20:45:42 +0200
-
 - In man(7), the sequence
     regular text
     .IP
index 73953ecdd21868e221d59e283674f27c5de6b788..52a5c5b1d35c59c327666ad617b28c116238e012 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_html.c,v 1.72 2011/05/17 11:34:31 kristaps Exp $ */
+/*     $Id: man_html.c,v 1.73 2011/06/18 17:58:48 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -135,7 +135,6 @@ html_man(void *arg, const struct man *m)
        printf("\n");
 }
 
-
 static void
 print_man(MAN_ARGS) 
 {
index 8184fc23ea540fac61eb052dd4b7ad566fb017c7..8bf9d0c6fc700cc7ea1ea49a26dadce833bfa3b3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_term.c,v 1.110 2011/06/18 17:36:52 kristaps Exp $ */
+/*     $Id: man_term.c,v 1.111 2011/06/18 17:58:48 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -198,27 +198,31 @@ a2width(const struct termp *p, const char *cp)
        return((int)term_hspan(p, &su));
 }
 
-
+/*
+ * Printing leading vertical space before a block.
+ * This is used for the paragraph macros.
+ * The rules are pretty simple, since there's very little nesting going
+ * on here.  Basically, if we're the first within another block (SS/SH),
+ * then don't emit vertical space.  If we are (RS), then do.  If not the
+ * first, print it.
+ */
 static void
 print_bvspace(struct termp *p, const struct man_node *n)
 {
-       term_newln(p);
 
-       if (n->body && n->body->child && MAN_TBL == n->body->child->type)
-               return;
+       term_newln(p);
 
-       if (NULL == n->prev)
-               return;
+       if (n->body && n->body->child)
+               if (MAN_TBL == n->body->child->type)
+                       return;
 
-       if (MAN_SS == n->prev->tok)
-               return;
-       if (MAN_SH == n->prev->tok)
-               return;
+       if (MAN_ROOT == n->parent->type || MAN_RS != n->parent->tok)
+               if (NULL == n->prev)
+                       return;
 
        term_vspace(p);
 }
 
-
 /* ARGSUSED */
 static int
 pre_ign(DECL_ARGS)