]> git.cameronkatri.com Git - mandoc.git/commitdiff
First in several iterative patches in getting complex -column lists
authorKristaps Dzonsons <kristaps@bsd.lv>
Sun, 30 May 2010 21:28:30 +0000 (21:28 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Sun, 30 May 2010 21:28:30 +0000 (21:28 +0000)
supported (which works but is tricky enough that it should be broken
down into digestable parts).  This simply moves around the propogation
of ARGS_PEND into one recognised by phrase().

Added a few regressions for simple -column lists.

mdoc_macro.c
regress/mdoc/It/mixed-tabs-tas.in [new file with mode: 0644]
regress/mdoc/It/simple-tabs-tas.in [new file with mode: 0644]

index a19bdd32dc0002cf114835e5e766a8fe9fe3e360..af3467a5bf749b3f06cd42480dee40d6878a5329 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_macro.c,v 1.70 2010/05/29 18:47:54 kristaps Exp $ */
+/*     $Id: mdoc_macro.c,v 1.71 2010/05/30 21:28:30 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -1002,6 +1002,7 @@ blk_full(MACRO_PROT_ARGS)
        } 
 
        ac = ARGS_ERROR;
+       lac = ARGS_PHRASE;
 
        for ( ; ; ) {
                la = *pos;
@@ -1013,16 +1014,10 @@ blk_full(MACRO_PROT_ARGS)
                if (ARGS_EOLN == ac)
                        break;
 
-               if (ARGS_PEND == ac) {
-                       if (ARGS_PPHRASE == lac)
-                               ac = ARGS_PPHRASE;
-                       else
-                               ac = ARGS_PHRASE;
-               }
-
                /* Don't emit leading punct. for phrases. */
 
                if (NULL == head && 
+                               ARGS_PEND != ac &&
                                ARGS_PHRASE != ac &&
                                ARGS_PPHRASE != ac &&
                                ARGS_QWORD != ac &&
@@ -1035,6 +1030,7 @@ blk_full(MACRO_PROT_ARGS)
                /* Always re-open head for phrases. */
 
                if (NULL == head || 
+                               ARGS_PEND == ac ||
                                ARGS_PHRASE == ac || 
                                ARGS_PPHRASE == ac) {
                        if ( ! mdoc_head_alloc(m, line, ppos, tok))
@@ -1045,9 +1041,17 @@ blk_full(MACRO_PROT_ARGS)
                if (ARGS_PHRASE == ac || ARGS_PPHRASE == ac) {
                        if (ARGS_PPHRASE == ac)
                                m->flags |= MDOC_PPHRASE;
-                       if ( ! phrase(m, line, la, buf, ac))
+                       if (ARGS_PEND == ac && ARGS_PPHRASE == lac)
+                               m->flags |= MDOC_PPHRASE;
+
+                       if (ARGS_PEND == ac) {
+                               if ( ! phrase(m, line, la, buf, lac))
+                                       return(0);
+                       } else if ( ! phrase(m, line, la, buf, ac))
                                return(0);
+
                        m->flags &= ~MDOC_PPHRASE;
+
                        if ( ! rew_sub(MDOC_HEAD, m, tok, line, ppos))
                                return(0);
                        continue;
diff --git a/regress/mdoc/It/mixed-tabs-tas.in b/regress/mdoc/It/mixed-tabs-tas.in
new file mode 100644 (file)
index 0000000..0c6fca3
--- /dev/null
@@ -0,0 +1,13 @@
+.Dd $Mdocdate: May 30 2010 $
+.Dt FOO
+.Os
+.Sh NAME
+.Nm foo
+.Nd bar
+.Sh DESCRIPTION
+.Bl -column asdfasdf asdfasdf asdfasdf
+.It asdf Ta asdf       asdf
+.El
+.Bl -column asdfasdf asdfasdf asdfasdf
+.It asdf       asdf ; Ta asdf
+.El
diff --git a/regress/mdoc/It/simple-tabs-tas.in b/regress/mdoc/It/simple-tabs-tas.in
new file mode 100644 (file)
index 0000000..7b03393
--- /dev/null
@@ -0,0 +1,17 @@
+.Dd $Mdocdate: May 30 2010 $
+.Dt FOO
+.Os
+.Sh NAME
+.Nm foo
+.Nd bar
+.Sh DESCRIPTION
+.Bl -column asdfasdf asdfasdf asdfasdf
+.It asdf       asdf    asdf
+.El
+.Bl -column asdfasdf asdfasdf asdfasdf
+.It asdf ; Ta asdf ; Ta asdf
+.El
+.Bl -tag -width Ds
+.It asdf
+asdf
+.El