From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 7b2acc14; for ; Mon, 26 Jan 2015 08:04:18 -0500 (EST) Date: Mon, 26 Jan 2015 08:04:18 -0500 (EST) Message-Id: <14488528168420462922.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: More improvements regarding tbl(7) options. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- More improvements regarding tbl(7) options. * Treat "allbox" as an alias for "box" for now. * Parse and ignore the GNU tbl "nowarn" option. * For separation, allow spaces, tabs, and commas only. * Mark eqn(7) within tbl(7) as unsupported. * Simplify the option table. * Improve and sort documentation. Modified Files: -------------- mdocml: mandoc.1 mandoc.h read.c tbl.7 tbl_opts.c Revision Data ------------- Index: mandoc.h =================================================================== RCS file: /home/cvs/mdocml/mdocml/mandoc.h,v retrieving revision 1.187 retrieving revision 1.188 diff -Lmandoc.h -Lmandoc.h -u -p -r1.187 -r1.188 --- mandoc.h +++ mandoc.h @@ -181,6 +181,7 @@ enum mandocerr { MANDOCERR_REQ_UNSUPP, /* unsupported roff request: request */ MANDOCERR_TBLLAYOUT, /* unsupported table layout */ MANDOCERR_TBLMACRO, /* ignoring macro in table: macro */ + MANDOCERR_TBLEQN, /* eqn in tbl */ MANDOCERR_MAX }; @@ -196,6 +197,7 @@ struct tbl_opts { #define TBL_OPT_ALLBOX (1 << 4) #define TBL_OPT_NOKEEP (1 << 5) #define TBL_OPT_NOSPACE (1 << 6) +#define TBL_OPT_NOWARN (1 << 7) int cols; /* number of columns */ }; Index: read.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/read.c,v retrieving revision 1.116 retrieving revision 1.117 diff -Lread.c -Lread.c -u -p -r1.116 -r1.117 --- read.c +++ read.c @@ -224,6 +224,7 @@ static const char * const mandocerrs[MAN "unsupported roff request", "unsupported table layout", "ignoring macro in table", + "eqn in tbl", }; static const char * const mandoclevels[MANDOCLEVEL_MAX] = { Index: tbl.7 =================================================================== RCS file: /home/cvs/mdocml/mdocml/tbl.7,v retrieving revision 1.22 retrieving revision 1.23 diff -Ltbl.7 -Ltbl.7 -u -p -r1.22 -r1.23 --- tbl.7 +++ tbl.7 @@ -1,7 +1,7 @@ .\" $Id$ .\" .\" Copyright (c) 2010, 2011 Kristaps Dzonsons -.\" Copyright (c) 2014 Ingo Schwarze +.\" Copyright (c) 2014, 2015 Ingo Schwarze .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -133,58 +133,60 @@ c c c. in the case of .Xr man 7 . .Ss Options -The first line of a table consists of space-separated option keys and -modifiers terminated by a semicolon. -For GNU compatibility, option keys can also be separated by commas. +The first line of a table may contain options separated by spaces, tabs, +or commas and terminated by a semicolon. If the first line does not have a terminating semicolon, it is assumed that no options are specified and instead a .Sx Layout is processed. -Some options accept arguments enclosed by parenthesis. +Some options require arguments enclosed by parentheses. The following case-insensitive options are available: .Bl -tag -width Ds -.It Cm center -This option is not supported by -.Xr mandoc 1 . -This may also be invoked with -.Cm centre . -.It Cm delim -Accepts a two-character argument. -This option is not supported by -.Xr mandoc 1 . -.It Cm expand -This option is not supported by -.Xr mandoc 1 . +.It Cm allbox +Draw a single-line box around each table cell. +Currently treated as a synonym for +.Cm box . .It Cm box Draw a single-line box around the table. -This may also be invoked with +For GNU compatibility, this may also be invoked with .Cm frame . +.It Cm center +Center the table instead of left-adjusting it. +Currently ignored. +For GNU compatibility, this may also be invoked with +.Cm centre . +.It Cm decimalpoint +Use the single-character argument as the decimal point with the +.Cm n +layout key. +This is a GNU extension. +.It Cm delim +Use the two characters of the argument as +.Xr eqn 7 +delimiters. +Currently unsupported. .It Cm doublebox Draw a double-line box around the table. -This may also be invoked with +For GNU compatibility, this may also be invoked with .Cm doubleframe . -.It Cm allbox -This option is not supported by -.Xr mandoc 1 . -.It Cm tab -Accepts a single-character argument. -This character is used as a delimiter between data cells, which otherwise -defaults to the tab character. +.It Cm expand +Increase the width of the table to the current line length. +Currently ignored. .It Cm linesize -Accepts a natural number (all digits). -This option is not supported by -.Xr mandoc 1 . +Draw lines with the point size given by the unsigned integer argument. +Currently ignored. .It Cm nokeep -This option is not supported by -.Xr mandoc 1 . -.It Cm decimalpoint -Accepts a single-character argument. -This character will be used as the decimal point with the -.Cm n -layout key. +Allow page breaks within the table. +This is a GNU extension and currently ignored. .It Cm nospaces -This option is not supported by -.Xr mandoc 1 . +Ignore leading and trailing spaces in data cells. +This is a GNU extension and currently ignored. +.It Cm nowarn +Suppress warnings about tables exceeding the current line length. +This is a GNU extension and currently ignored. +.It Cm tab +Use the single-character argument as a delimiter between data cells. +By default, the tab character is used. .El .Ss Layout The table layout follows Index: mandoc.1 =================================================================== RCS file: /home/cvs/mdocml/mdocml/mandoc.1,v retrieving revision 1.136 retrieving revision 1.137 diff -Lmandoc.1 -Lmandoc.1 -u -p -r1.136 -r1.137 --- mandoc.1 +++ mandoc.1 @@ -1609,6 +1609,10 @@ and it is likely that this will cause in or considerable misformatting. .It Sy "unsupported table layout" .It Sy "ignoring macro in table" +.It Sy "eqn in tbl" +.Pq eqn , tbl +The options line of a table defines equation delimiters. +Any equation source code contained in the table will be printed unformatted. .El .Sh COMPATIBILITY This section summarises Index: tbl_opts.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/tbl_opts.c,v retrieving revision 1.17 retrieving revision 1.18 diff -Ltbl_opts.c -Ltbl_opts.c -u -p -r1.17 -r1.18 --- tbl_opts.c +++ tbl_opts.c @@ -28,60 +28,45 @@ #include "libmandoc.h" #include "libroff.h" -enum tbl_ident { - KEY_CENTRE = 0, - KEY_DELIM, - KEY_EXPAND, - KEY_BOX, - KEY_DBOX, - KEY_ALLBOX, - KEY_TAB, - KEY_LINESIZE, - KEY_NOKEEP, - KEY_DPOINT, - KEY_NOSPACE, - KEY_FRAME, - KEY_DFRAME, - KEY_MAX -}; +#define KEY_DPOINT 0 +#define KEY_DELIM 1 +#define KEY_LINESIZE 2 +#define KEY_TAB 3 struct tbl_phrase { const char *name; int key; - enum tbl_ident ident; }; -/* Handle Commonwealth/American spellings. */ -#define KEY_MAXKEYS 14 - -static const struct tbl_phrase keys[KEY_MAXKEYS] = { - { "center", TBL_OPT_CENTRE, KEY_CENTRE}, - { "centre", TBL_OPT_CENTRE, KEY_CENTRE}, - { "delim", 0, KEY_DELIM}, - { "expand", TBL_OPT_EXPAND, KEY_EXPAND}, - { "box", TBL_OPT_BOX, KEY_BOX}, - { "doublebox", TBL_OPT_DBOX, KEY_DBOX}, - { "allbox", TBL_OPT_ALLBOX, KEY_ALLBOX}, - { "frame", TBL_OPT_BOX, KEY_FRAME}, - { "doubleframe", TBL_OPT_DBOX, KEY_DFRAME}, - { "tab", 0, KEY_TAB}, - { "linesize", 0, KEY_LINESIZE}, - { "nokeep", TBL_OPT_NOKEEP, KEY_NOKEEP}, - { "decimalpoint", 0, KEY_DPOINT}, - { "nospaces", TBL_OPT_NOSPACE, KEY_NOSPACE}, +static const struct tbl_phrase keys[] = { + {"decimalpoint", 0}, + {"delim", 0}, + {"linesize", 0}, + {"tab", 0}, + {"allbox", TBL_OPT_ALLBOX | TBL_OPT_BOX}, + {"box", TBL_OPT_BOX}, + {"frame", TBL_OPT_BOX}, + {"center", TBL_OPT_CENTRE}, + {"centre", TBL_OPT_CENTRE}, + {"doublebox", TBL_OPT_DBOX}, + {"doubleframe", TBL_OPT_DBOX}, + {"expand", TBL_OPT_EXPAND}, + {"nokeep", TBL_OPT_NOKEEP}, + {"nospaces", TBL_OPT_NOSPACE}, + {"nowarn", TBL_OPT_NOWARN}, }; -static void arg(struct tbl_node *, int, - const char *, int *, enum tbl_ident); +#define KEY_MAXKEYS ((int)(sizeof(keys)/sizeof(keys[0]))) + +static void arg(struct tbl_node *, int, const char *, int *, int); static void -arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key) +arg(struct tbl_node *tbl, int ln, const char *p, int *pos, int key) { - const char *optname; int len, want; - while (isspace((unsigned char)p[*pos])) + while (p[*pos] == ' ' || p[*pos] == '\t') (*pos)++; /* Arguments are enclosed in parentheses. */ @@ -95,21 +80,18 @@ arg(struct tbl_node *tbl, int ln, const switch (key) { case KEY_DELIM: - optname = "delim"; + mandoc_msg(MANDOCERR_TBLEQN, tbl->parse, ln, *pos, NULL); want = 2; break; case KEY_TAB: - optname = "tab"; want = 1; if (len == want) tbl->opts.tab = p[*pos]; break; case KEY_LINESIZE: - optname = "linesize"; want = 0; break; case KEY_DPOINT: - optname = "decimalpoint"; want = 1; if (len == want) tbl->opts.decimal = p[*pos]; @@ -121,11 +103,11 @@ arg(struct tbl_node *tbl, int ln, const if (len == 0) mandoc_msg(MANDOCERR_TBLOPT_NOARG, - tbl->parse, ln, *pos, optname); + tbl->parse, ln, *pos, keys[key].name); else if (want && len != want) mandoc_vmsg(MANDOCERR_TBLOPT_ARGSZ, - tbl->parse, ln, *pos, - "%s want %d have %d", optname, want, len); + tbl->parse, ln, *pos, "%s want %d have %d", + keys[key].name, want, len); *pos += len; if (p[*pos] == ')') @@ -144,7 +126,7 @@ tbl_option(struct tbl_node *tbl, int ln, pos = 0; for (;;) { - while (isspace((unsigned char)p[pos]) || p[pos] == ',') + while (p[pos] == ' ' || p[pos] == '\t' || p[pos] == ',') pos++; if (p[pos] == ';') @@ -184,6 +166,6 @@ tbl_option(struct tbl_node *tbl, int ln, if (keys[i].key) tbl->opts.opts |= keys[i].key; else - arg(tbl, ln, p, &pos, keys[i].ident); + arg(tbl, ln, p, &pos, i); } } -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv