=================================================================== RCS file: /cvs/mandoc/term.c,v retrieving revision 1.24 retrieving revision 1.27 diff -u -p -r1.24 -r1.27 --- mandoc/term.c 2009/02/26 14:56:27 1.24 +++ mandoc/term.c 2009/02/27 09:39:40 1.27 @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.24 2009/02/26 14:56:27 kristaps Exp $ */ +/* $Id: term.c,v 1.27 2009/02/27 09:39:40 kristaps Exp $ */ /* * Copyright (c) 2009 Kristaps Dzonsons * @@ -17,6 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ #include +#include #include #include #include @@ -24,7 +25,7 @@ #include "term.h" -#define INDENT 4 +#define INDENT 6 /* * Performs actions on nodes of the abstract syntax tree. Both pre- and @@ -276,9 +277,29 @@ const struct termact *termacts = __termacts; static size_t arg_width(const struct mdoc_arg *arg) { + size_t v; + int i, len; - /* TODO */ assert(*arg->value); + if (0 == strcmp(*arg->value, "indent")) + return(INDENT); + if (0 == strcmp(*arg->value, "indent-two")) + return(INDENT * 2); + + len = (int)strlen(*arg->value); + assert(len > 0); + + for (i = 0; i < len - 1; i++) + if ( ! isdigit((int)(*arg->value)[i])) + break; + + if (i == len - 1) { + if ('n' == (*arg->value)[len - 1]) { + v = (size_t)atoi(*arg->value); + return(v); + } + + } return(strlen(*arg->value)); } @@ -293,7 +314,6 @@ arg_offset(const struct mdoc_arg *arg) return(INDENT); if (0 == strcmp(*arg->value, "indent-two")) return(INDENT * 2); - return(strlen(*arg->value)); } @@ -1310,7 +1330,7 @@ termp_bq_pre(DECL_ARGS) if (MDOC_BODY != node->type) return(1); - word(p, "["); + word(p, "\\["); p->flags |= TERMP_NOSPACE; return(1); } @@ -1334,7 +1354,7 @@ termp_pq_pre(DECL_ARGS) if (MDOC_BODY != node->type) return(1); - word(p, "("); + word(p, "\\&("); p->flags |= TERMP_NOSPACE; return(1); }