tech@mandoc.bsd.lv
 help / color / mirror / Atom feed
* .TH/.nf indentation
@ 2015-09-04 11:55 Christian Neukirchen
  2015-09-04 21:49 ` Ingo Schwarze
  0 siblings, 1 reply; 2+ messages in thread
From: Christian Neukirchen @ 2015-09-04 11:55 UTC (permalink / raw)
  To: tech

Hi,

mdocml-1.13.3 and HEAD as of today misrender this:

.TH foo 1
.SH OPTIONS
.TP
.nf
foo
.fi
description of foo
.TP
.nf
bar
.fi
description of bar

as

OPTIONS
       foo
       description of foo
       bar
       description of bar

But groff and Plan9 nroff render it as

OPTIONS
       foo
              description of foo

       bar
              description of bar

Found in exiv2.1 and all manpages written by ksb.

-- 
Christian Neukirchen  <chneukirchen@gmail.com>  http://chneukirchen.org
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: .TH/.nf indentation
  2015-09-04 11:55 .TH/.nf indentation Christian Neukirchen
@ 2015-09-04 21:49 ` Ingo Schwarze
  0 siblings, 0 replies; 2+ messages in thread
From: Ingo Schwarze @ 2015-09-04 21:49 UTC (permalink / raw)
  To: Christian Neukirchen; +Cc: tech

Hi Christian,

Christian Neukirchen wrote on Fri, Sep 04, 2015 at 01:55:24PM +0200:

> mdocml-1.13.3 and HEAD as of today misrender this:

that should be fixed in HEAD now.

Thanks for reporting,
  Ingo

> .TH foo 1
> .SH OPTIONS
> .TP
> .nf
> foo
> .fi
> description of foo
> .TP
> .nf
> bar
> .fi
> description of bar
> 
> as
> 
> OPTIONS
>        foo
>        description of foo
>        bar
>        description of bar
> 
> But groff and Plan9 nroff render it as
> 
> OPTIONS
>        foo
>               description of foo
> 
>        bar
>               description of bar
> 
> Found in exiv2.1 and all manpages written by ksb.


Log Message:
-----------
Fill mode changes don't break next-line scope in all cases,
in particular not for tagged paragraphs.
Issue found by Christian Neukirchen <chneukirchen at gmail dot com>
in the exiv2(1) manual page.

Modified Files:
--------------
    mdocml:
        man.c
        man_macro.c

Revision Data
-------------
Index: man.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/man.c,v
retrieving revision 1.163
retrieving revision 1.164
diff -Lman.c -Lman.c -u -p -r1.163 -r1.164
--- man.c
+++ man.c
@@ -283,6 +283,20 @@ man_breakscope(struct roff_man *man, int
 	}
 
 	/*
+	 * Weird special case:
+	 * Switching fill mode closes section headers.
+	 */
+
+	if (man->flags & MAN_BLINE &&
+	    (tok == MAN_nf || tok == MAN_fi) &&
+	    (man->last->tok == MAN_SH || man->last->tok == MAN_SS)) {
+		n = man->last;
+		man_unscope(man, n);
+		roff_body_alloc(man, n->line, n->pos, n->tok);
+		man->flags &= ~MAN_BLINE;
+	}
+
+	/*
 	 * A block header next line scope is open,
 	 * and the new macro is not allowed inside block headers.
 	 * Delete the block that is being broken.
Index: man_macro.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/man_macro.c,v
retrieving revision 1.109
retrieving revision 1.110
diff -Lman_macro.c -Lman_macro.c -u -p -r1.109 -r1.110
--- man_macro.c
+++ man_macro.c
@@ -63,8 +63,8 @@ const	struct man_macro __man_macros[MAN_
 	{ in_line_eoln, 0 }, /* IR */
 	{ in_line_eoln, 0 }, /* RI */
 	{ in_line_eoln, MAN_NSCOPED }, /* sp */
-	{ in_line_eoln, MAN_BSCOPE }, /* nf */
-	{ in_line_eoln, MAN_BSCOPE }, /* fi */
+	{ in_line_eoln, MAN_NSCOPED }, /* nf */
+	{ in_line_eoln, MAN_NSCOPED }, /* fi */
 	{ blk_close, MAN_BSCOPE }, /* RE */
 	{ blk_exp, MAN_BSCOPE }, /* RS */
 	{ in_line_eoln, 0 }, /* DT */
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-09-04 21:49 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-04 11:55 .TH/.nf indentation Christian Neukirchen
2015-09-04 21:49 ` Ingo Schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).