]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_macro.c
For .IP groff requires a single space only after the head, adopt.
[mandoc.git] / man_macro.c
index 17f61f9834231099266547c952b0b218bfbffdc8..37534e091ffda2b02c1e3e42757c02cb1f481fe7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_macro.c,v 1.39 2010/03/27 10:13:16 kristaps Exp $ */
+/*     $Id: man_macro.c,v 1.42 2010/03/29 10:10:35 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -28,7 +28,7 @@
 enum   rew {
        REW_REWIND,
        REW_NOHALT,
-       REW_HALT,
+       REW_HALT
 };
 
 static int              blk_close(MACRO_PROT_ARGS);
@@ -314,20 +314,14 @@ blk_dotted(MACRO_PROT_ARGS)
        if ( ! rew_scope(MAN_BLOCK, m, ntok))
                return(0);
 
-       /* 
-        * XXX: manually adjust our next-line status.  roff macros are,
-        * for the moment, ignored, so we don't want to close out bodies
-        * and so on.
+       /*
+        * Restore flags set when we got here and also stipulate that we
+        * don't post-process the line when exiting the macro op
+        * function in man_pmacro().  See blk_exp().
         */
 
-       switch (m->last->type) {
-       case (MAN_BODY):
-               m->next = MAN_NEXT_CHILD;
-               break;
-       default:
-               break;
-       }
-
+       m->flags = m->svflags | MAN_ILINE;
+       m->next = m->svnext;
        return(1);
 }
 
@@ -385,6 +379,17 @@ blk_exp(MACRO_PROT_ARGS)
                        return(0);
                if ( ! rew_scope(MAN_BLOCK, m, tok))
                        return(0);
+       } else {
+               /*
+                * Save our state and next-scope indicator; we restore
+                * it when exiting from the roff instruction block.  See
+                * blk_dotted().
+                */
+               m->svflags = m->flags;
+               m->svnext = m->next;
+               
+               /* Make sure we drop any line modes. */
+               m->flags = 0;
        }
 
        if ( ! man_block_alloc(m, line, ppos, tok))