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 570aabdc for ; Sun, 25 Nov 2018 16:18:04 -0500 (EST) Date: Sun, 25 Nov 2018 16:18:04 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: mandoc: Let cells containing nothing but \^ extend the cell above. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-Id: <381d7b3b2d87aace@fantadrom.bsd.lv> Log Message: ----------- Let cells containing nothing but \^ extend the cell above. Missing feature reported by Pali dot Rohar at gmail dot com. Modified Files: -------------- mandoc: TODO tbl.7 tbl_data.c tbl_html.c Revision Data ------------- Index: tbl.7 =================================================================== RCS file: /home/cvs/mandoc/mandoc/tbl.7,v retrieving revision 1.29 retrieving revision 1.30 diff -Ltbl.7 -Ltbl.7 -u -p -r1.29 -r1.30 --- tbl.7 +++ tbl.7 @@ -1,7 +1,7 @@ .\" $Id$ .\" .\" Copyright (c) 2010, 2011 Kristaps Dzonsons -.\" Copyright (c) 2014, 2015, 2017 Ingo Schwarze +.\" Copyright (c) 2014, 2015, 2017, 2018 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 @@ -147,9 +147,9 @@ The combined cell as a whole consumes on of the corresponding data line. .It Cm a Left-justify a string and pad with one space. -.It Cm ^ +.It Cm \(ha Vertically span rows from the last -.Pf non- Cm ^ +.Pf non- Cm \(ha layout cell. It is an error to invoke a vertical span on the first layout line. Unlike a horizontal span, a vertical span consumes a data cell @@ -231,7 +231,13 @@ Each data line consists of one or more d .Cm tab characters. .Pp -If a data cells contains only the single character +If a data cell contains only the two bytes +.Ql \e\(ha , +the cell above spans to this row, as if the layout specification +of this cell were +.Cm \(ha . +.Pp +If a data cell contains only the single character .Ql _ or .Ql = , @@ -332,8 +338,8 @@ Spans and skipping width calculations: \&.TS box tab(:); lz s | rt -lt| cb| ^ -^ | rz s. +lt| cb| \(ha +\(ha | rz s. left:r l:center: :right Index: tbl_data.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/tbl_data.c,v retrieving revision 1.46 retrieving revision 1.47 diff -Ltbl_data.c -Ltbl_data.c -u -p -r1.46 -r1.47 --- tbl_data.c +++ tbl_data.c @@ -45,6 +45,15 @@ getdata(struct tbl_node *tbl, struct tbl struct tbl_span *pdp; int sv; + /* + * Determine the length of the string in the cell + * and advance the parse point to the end of the cell. + */ + + sv = *pos; + while (p[*pos] != '\0' && p[*pos] != tbl->opts.tab) + (*pos)++; + /* Advance to the next layout cell, skipping spanners. */ cp = dp->last == NULL ? dp->layout->first : dp->last->layout->next; @@ -67,8 +76,8 @@ getdata(struct tbl_node *tbl, struct tbl dp->layout->last = cp; } else { mandoc_msg(MANDOCERR_TBLDATA_EXTRA, tbl->parse, - ln, *pos, p + *pos); - while (p[*pos]) + ln, sv, p + sv); + while (p[*pos] != '\0') (*pos)++; return; } @@ -91,7 +100,8 @@ getdata(struct tbl_node *tbl, struct tbl * can be reused for more than one data row. */ - if (cp->pos == TBL_CELL_DOWN) { + if (cp->pos == TBL_CELL_DOWN || + (*pos - sv == 2 && p[sv] == '\\' && p[sv + 1] == '^')) { pdp = dp; while ((pdp = pdp->prev) != NULL) { pdat = pdp->first; @@ -100,7 +110,8 @@ getdata(struct tbl_node *tbl, struct tbl pdat = pdat->next; if (pdat == NULL) break; - if (pdat->layout->pos != TBL_CELL_DOWN) { + if (pdat->layout->pos != TBL_CELL_DOWN && + strcmp(pdat->string, "\\^") != 0) { pdat->vspans++; break; } @@ -126,10 +137,6 @@ getdata(struct tbl_node *tbl, struct tbl dp->last->next = dat; dp->last = dat; - sv = *pos; - while (p[*pos] && p[*pos] != tbl->opts.tab) - (*pos)++; - /* * Check for a continued-data scope opening. This consists of a * trailing `T{' at the end of the line. Subsequent lines, @@ -143,7 +150,7 @@ getdata(struct tbl_node *tbl, struct tbl dat->string = mandoc_strndup(p + sv, *pos - sv); - if (p[*pos]) + if (p[*pos] != '\0') (*pos)++; if ( ! strcmp(dat->string, "_")) Index: tbl_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/tbl_html.c,v retrieving revision 1.26 retrieving revision 1.27 diff -Ltbl_html.c -Ltbl_html.c -u -p -r1.26 -r1.27 --- tbl_html.c +++ tbl_html.c @@ -126,13 +126,18 @@ print_tbl(struct html *h, const struct t default: for (dp = sp->first; dp != NULL; dp = dp->next) { print_stagq(h, tt); - switch (dp->layout->pos) { - case TBL_CELL_SPAN: - case TBL_CELL_DOWN: + + /* + * Do not generate elements for continuations + * of spanned cells. Larger elements covering + * this space were already generated earlier. + */ + + if (dp->layout->pos == TBL_CELL_SPAN || + dp->layout->pos == TBL_CELL_DOWN || + (dp->string != NULL && + strcmp(dp->string, "\\^") == 0)) continue; - default: - break; - } /* Determine the attribute values. */ Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.277 retrieving revision 1.278 diff -LTODO -LTODO -u -p -r1.277 -r1.278 --- TODO +++ TODO @@ -168,10 +168,6 @@ are mere guesses, and some may be wrong. --- missing tbl features ----------------------------------------------- -- vertically spanning cells by \^ in the data section - pali dot rohar at gmail dot com 16 Jul 2018 13:03:35 +0200 - loc * exist * algo * size * imp *** - - the "s" layout column specifier is used for placement of data into columns, but ignored during column width calculations synaptics(4) found by tedu@ Mon, 17 Aug 2015 21:17:42 -0400 -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv