-.\" $Id: mdocterm.1,v 1.10 2009/03/03 21:07:01 kristaps Exp $
+.\" $Id: mdocterm.1,v 1.11 2009/03/03 22:17:19 kristaps Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
.\"
.Pp
.Bl -bullet -compact
.It
-Only \-bullet , \-dash , \-enum , \-hyphen , \-tag and \-ohang
+The \-hang and \-column
.Sq \&Bl
-lists are supported.
+lists are not yet supported.
.It
The \-literal and \-unfilled
.Sq \&Bd
-/* $Id: mdocterm.c,v 1.27 2009/03/03 21:07:01 kristaps Exp $ */
+/* $Id: mdocterm.c,v 1.28 2009/03/03 22:17:19 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
* offset value. This is useful when doing columnar lists where the
* prior column has right-padded.
*
- * - TERMP_LITERAL: don't break apart words. Note that a long literal
- * word will violate the right margin.
- *
* - TERMP_NOBREAK: this is the most important and is used when making
* columns. In short: don't print a newline and instead pad to the
* right margin. Used in conjunction with TERMP_NOLPAD.
* pad to the right margin and stay off.
*/
- if (p->flags & TERMP_NOBREAK) {
+ if (p->flags & TERMP_NOBREAK)
for ( ; vis < maxvis; vis++)
putchar(' ');
- } else
+ else
putchar('\n');
p->col = 0;
-/* $Id: term.c,v 1.36 2009/03/02 17:29:16 kristaps Exp $ */
+/* $Id: term.c,v 1.37 2009/03/03 22:17:19 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
#define TTYPE_INCLUDE 15
#define TTYPE_SYMB 16
#define TTYPE_SYMBOL 17
-#define TTYPE_NMAX 18
+#define TTYPE_DIAG 18
+#define TTYPE_NMAX 19
/*
* These define "styles" for element types, like command arguments or
TERMP_BOLD, /* TTYPE_CMD */
TERMP_BOLD, /* TTYPE_INCLUDE */
TERMP_BOLD, /* TTYPE_SYMB */
- TERMP_BOLD /* TTYPE_SYMBOL */
+ TERMP_BOLD, /* TTYPE_SYMBOL */
+ TERMP_BOLD /* TTYPE_DIAG */
};
static int arg_hasattr(int, size_t,
/* FALLTHROUGH */
case (MDOC_Tag):
/* FALLTHROUGH */
+ case (MDOC_Inset):
+ /* FALLTHROUGH */
+ case (MDOC_Diag):
+ /* FALLTHROUGH */
case (MDOC_Ohang):
type = bl->argv[i].arg;
i = (int)bl->argc;
width = width > 6 ? width : 6;
break;
case (MDOC_Tag):
- /* FIXME: auto-size. */
if (0 == width)
errx(1, "need non-zero -width");
break;
/* Word-wrap control. */
- p->flags |= TERMP_NOSPACE;
-
switch (type) {
+ case (MDOC_Diag):
+ if (MDOC_HEAD == node->type)
+ TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_DIAG]);
+ /* FALLTHROUGH */
+ case (MDOC_Inset):
+ if (MDOC_HEAD == node->type)
+ p->flags |= TERMP_NOSPACE;
+ break;
case (MDOC_Bullet):
/* FALLTHROUGH */
case (MDOC_Dash):
case (MDOC_Hyphen):
/* FALLTHROUGH */
case (MDOC_Tag):
+ p->flags |= TERMP_NOSPACE;
if (MDOC_HEAD == node->type)
p->flags |= TERMP_NOBREAK;
else if (MDOC_BODY == node->type)
static void
termp_it_post(DECL_ARGS)
{
+ int type, i;
+ struct mdoc_block *bl;
if (MDOC_BODY != node->type && MDOC_HEAD != node->type)
return;
- flushln(p);
+ assert(MDOC_BLOCK == node->parent->parent->parent->type);
+ assert(MDOC_Bl == node->parent->parent->parent->tok);
+ bl = &node->parent->parent->parent->data.block;
+
+ for (type = -1, i = 0; i < (int)bl->argc; i++)
+ switch (bl->argv[i].arg) {
+ case (MDOC_Bullet):
+ /* FALLTHROUGH */
+ case (MDOC_Dash):
+ /* FALLTHROUGH */
+ case (MDOC_Enum):
+ /* FALLTHROUGH */
+ case (MDOC_Hyphen):
+ /* FALLTHROUGH */
+ case (MDOC_Tag):
+ /* FALLTHROUGH */
+ case (MDOC_Diag):
+ /* FALLTHROUGH */
+ case (MDOC_Inset):
+ /* FALLTHROUGH */
+ case (MDOC_Ohang):
+ type = bl->argv[i].arg;
+ i = (int)bl->argc;
+ break;
+ default:
+ errx(1, "list type not supported");
+ /* NOTREACHED */
+ }
+
+
+ switch (type) {
+ case (MDOC_Diag):
+ /* FALLTHROUGH */
+ case (MDOC_Inset):
+ break;
+ default:
+ flushln(p);
+ break;
+ }
p->offset = pair->offset;
p->rmargin = pair->rmargin;
- if (MDOC_HEAD == node->type)
- p->flags &= ~TERMP_NOBREAK;
- else if (MDOC_BODY == node->type)
- p->flags &= ~TERMP_NOLPAD;
+ switch (type) {
+ case (MDOC_Inset):
+ break;
+ default:
+ if (MDOC_HEAD == node->type)
+ p->flags &= ~TERMP_NOBREAK;
+ else if (MDOC_BODY == node->type)
+ p->flags &= ~TERMP_NOLPAD;
+ break;
+ }
}
-/* $Id: term.h,v 1.15 2009/03/03 21:07:01 kristaps Exp $ */
+/* $Id: term.h,v 1.16 2009/03/03 22:17:19 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
#define TERMP_LITERAL (1 << 5) /* Literal words. */
#define TERMP_IGNDELIM (1 << 6) /* Delims like regulars. */
#define TERMP_NONOSPACE (1 << 7) /* No space (no autounset). */
+#define TERMP_NORPAD (1 << 8) /* No rightpad. */
+#define TERMP_NOINSET (1 << 9) /* If NOBREAK, no inset. */
char *buf;
struct termsym *symtab; /* Special-symbol table. */
struct termsym *styletab; /* Style table. */