]> git.cameronkatri.com Git - mandoc.git/commitdiff
Noted lacking areas in mdocterm.1.
authorKristaps Dzonsons <kristaps@bsd.lv>
Mon, 2 Mar 2009 17:29:16 +0000 (17:29 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Mon, 2 Mar 2009 17:29:16 +0000 (17:29 +0000)
Put styles into symtab (for real this time).

mdocterm.1
mdocterm.c
term.c

index f350c33670f35d07553f5f1e36ae961347014a0b..49250d59a80b57edac045359c80783432bd5a269 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: mdocterm.1,v 1.8 2009/02/27 10:55:16 kristaps Exp $
+.\" $Id: mdocterm.1,v 1.9 2009/03/02 17:29:16 kristaps Exp $
 .\"
 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
 .\"
@@ -16,7 +16,7 @@
 .\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 .\" PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: February 27 2009 $
+.Dd $Mdocdate: March 2 2009 $
 .Dt mdocmterm 1
 .Os
 .\" SECTION
@@ -220,3 +220,22 @@ See
 .Xr mdoc 3
 for a list of bugs, caveats, and incomplete macros regarding the
 document parse.
+.Pp
+The 
+.Nm
+utility doesn't yet know how to display the following:
+.Pp
+.Bl -bullet -compact
+.It
+Only \-bullet , \-dash , \-enum , \-hyphen , \-tag and \-ohang
+.Sq \&Bl
+lists are supported.
+.It
+The \-literal and \-unfilled 
+.Sq \&Bd
+displays only accept text contents.
+.It
+The
+.Sq \&Xo/Xc
+pair isn't supported (and never will be).
+.El
index 0e36fb308d6fff12cdc44f656ba10bec31cc719d..f2f05dfa9edd92bbaf3bf2c98537c1042b4ca5c2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mdocterm.c,v 1.25 2009/03/02 17:14:46 kristaps Exp $ */
+/* $Id: mdocterm.c,v 1.26 2009/03/02 17:29:16 kristaps Exp $ */
 /*
  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -44,13 +44,13 @@ static      void              footer(struct termp *,
 static void              pword(struct termp *, const char *, size_t);
 static void              pescape(struct termp *, const char *, 
                                size_t *, size_t);
-static void              style(struct termp *, enum tstyle);
 static void              nescape(struct termp *,
                                const char *, size_t);
 static void              chara(struct termp *, char);
 static void              stringa(struct termp *, 
                                const char *, size_t);
 static void              symbola(struct termp *, enum tsym);
+static void              stylea(struct termp *, enum tstyle);
 
 #ifdef __linux__
 extern size_t            strlcat(char *, const char *, size_t);
@@ -729,37 +729,6 @@ nescape(struct termp *p, const char *word, size_t len)
 }
 
 
-/*
- * Apply a style to the output buffer.  This is looked up by means of
- * the styletab.
- */
-static void
-style(struct termp *p, enum tstyle esc)
-{
-
-       if (p->col + 4 >= p->maxcols)
-               errx(1, "line overrun");
-
-       p->buf[(p->col)++] = 27;
-       p->buf[(p->col)++] = '[';
-       switch (esc) {
-       case (TERMSTYLE_CLEAR):
-               p->buf[(p->col)++] = '0';
-               break;
-       case (TERMSTYLE_BOLD):
-               p->buf[(p->col)++] = '1';
-               break;
-       case (TERMSTYLE_UNDER):
-               p->buf[(p->col)++] = '4';
-               break;
-       default:
-               abort();
-               /* NOTREACHED */
-       }
-       p->buf[(p->col)++] = 'm';
-}
-
-
 /*
  * Handle an escape sequence: determine its length and pass it to the
  * escape-symbol look table.  Note that we assume mdoc(3) has validated
@@ -835,9 +804,9 @@ pword(struct termp *p, const char *word, size_t len)
         */
 
        if (p->flags & TERMP_BOLD)
-               style(p, TERMSTYLE_BOLD);
+               stylea(p, TERMSTYLE_BOLD);
        if (p->flags & TERMP_UNDERLINE)
-               style(p, TERMSTYLE_UNDER);
+               stylea(p, TERMSTYLE_UNDER);
 
        for (i = 0; i < len; i++) {
                if ('\\' == word[i]) {
@@ -849,7 +818,7 @@ pword(struct termp *p, const char *word, size_t len)
 
        if (p->flags & TERMP_BOLD ||
                        p->flags & TERMP_UNDERLINE)
-               style(p, TERMSTYLE_CLEAR);
+               stylea(p, TERMSTYLE_CLEAR);
 }
 
 
@@ -865,6 +834,18 @@ symbola(struct termp *p, enum tsym sym)
 }
 
 
+/*
+ * Add a style to the output line buffer.
+ */
+static void
+stylea(struct termp *p, enum tstyle style)
+{
+
+       assert(p->styletab[style].sym);
+       stringa(p, p->styletab[style].sym, p->styletab[style].sz);
+}
+
+
 /*
  * Like chara() but for arbitrary-length buffers.  Resize the buffer by
  * a factor of two (if the buffer is less than that) or the buffer's
diff --git a/term.c b/term.c
index 8096238733bd82b7f638e9fa777f52cfb56ca76f..5181f9b0018a69a230a811f9a1fd45f8f60f65ef 100644 (file)
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.35 2009/03/02 17:14:46 kristaps Exp $ */
+/* $Id: term.c,v 1.36 2009/03/02 17:29:16 kristaps Exp $ */
 /*
  * Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -30,7 +30,6 @@
  * post-fix operations are defined here.
  */
 
-/* FIXME: indent/tab. */
 /* FIXME: macro arguments can be escaped. */
 
 #define        TTYPE_PROG        0
@@ -59,6 +58,8 @@
  * the same thing (like .Ex -std cmd and .Nm cmd). 
  */
 
+/* TODO: abstract this into mdocterm.c. */
+
 const  int ttypes[TTYPE_NMAX] = {
        TERMP_BOLD,             /* TTYPE_PROG */
        TERMP_BOLD,             /* TTYPE_CMD_FLAG */