-# $OpenBSD: Makefile,v 1.37 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile,v 1.38 2017/06/29 15:21:46 schwarze Exp $
REGRESS_TARGETS = item inset diag ohang bullet dash enum hang tag
-REGRESS_TARGETS += column colNoIt extend nested offset secstart
+REGRESS_TARGETS += column column_nogroff colNoIt
+REGRESS_TARGETS += extend nested offset secstart
REGRESS_TARGETS += notype multitype badargs
REGRESS_TARGETS += empty noIt emptyhead emptytag emptyitem multitag
UTF8_TARGETS = dash
-LINT_TARGETS = column notype badargs tag
+LINT_TARGETS = column column_nogroff notype badargs tag
LINT_TARGETS += empty noIt emptyhead emptytag emptyitem
LINT_TARGETS += bareIt bareTa break breakingIt broken
SKIP_GROFF ?= breakingTa
# groff-1.22.3 defects:
+# - column list items with no args but multiple lines cause bogus breaks
+# - in column lists, the tab macro cannot be a line macro
# - lists with missing or late type ruin indentation
# - empty lists ruin indentation and sometimes cause empty lines
# - breaking lists continue indefinitely
# - breaking a list aborts processing
# - empty -tag item heads lose the blank line and the indentation
-SKIP_GROFF += notype empty break breakingIt broken emptytag
+SKIP_GROFF += column_nogroff notype empty emptytag break breakingIt broken
SKIP_TMAN ?= column colNoIt multitype multitag bareTa break breakingTa broken
# Empty heads are still mishandled by -Tman.
-SKIP_TMAN += emptyhead emptytag
+SKIP_TMAN += column_nogroff emptyhead emptytag
# mandoc -T markdown still has issues with badly nested lists
.El
.\" Wrong number of columns.
.Bl -column "a" "b"
+.It
.It "a"
.It "a" Ta "b"
+.It
.It "a" Ta "b" Ta "c"
.It "a" Ta "b" Ta "c" Ta "d"
.It "a" Ta "b" Ta "c" Ta "d" Ta "e"
+.It
.El
.\" Mixed tab and Ta
.Bl -column a b c d
mandoc: column.in:3:5: BASE: operating system explicitly specified: Os OpenBSD (OpenBSD)
mandoc: column.in:1:5: BASE: Mdocdate missing: Dd October (OpenBSD)
-mandoc: column.in:71:2: WARNING: wrong number of cells: 2 columns, 1 cells
-mandoc: column.in:74:2: WARNING: wrong number of cells: 2 columns, 4 cells
-mandoc: column.in:75:2: WARNING: wrong number of cells: 2 columns, 5 cells
-mandoc: column.in:103:18: WARNING: skipping -width argument: Bl -column
+mandoc: column.in:71:2: WARNING: skipping empty macro: It
+mandoc: column.in:72:2: WARNING: wrong number of cells: 2 columns, 1 cells
+mandoc: column.in:74:2: WARNING: skipping empty macro: It
+mandoc: column.in:76:2: WARNING: wrong number of cells: 2 columns, 4 cells
+mandoc: column.in:77:2: WARNING: wrong number of cells: 2 columns, 5 cells
+mandoc: column.in:78:2: WARNING: skipping empty macro: It
+mandoc: column.in:106:18: WARNING: skipping -width argument: Bl -column
mandoc: column.in: BASE: RCS id missing: (OpenBSD)
--- /dev/null
+.Dd June 29, 2017
+.Dt BL-COLUMN_NOGROFF 1
+.Os OpenBSD
+.Sh NAME
+.Nm Bl-column_nogroff
+.Nd column lists mishandled by groff
+.Sh DESCRIPTION
+Item macro without arguments:
+.Bl -column "first column" "second column"
+.It
+text
+.No macro Ta after tab
+.El
+.Pp
+Tab macro at the beginning of a line:
+.Bl -column "aa" "bb"
+.It aa
+.Ta bb
+.El
--- /dev/null
+BL-COLUMN_NOGROFF(1) General Commands Manual BL-COLUMN_NOGROFF(1)
+
+N\bNA\bAM\bME\bE
+ B\bBl\bl-\b-c\bco\bol\blu\bum\bmn\bn_\b_n\bno\bog\bgr\bro\bof\bff\bf - column lists mishandled by groff
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+ Item macro without arguments:
+
+ text macro after tab
+
+ Tab macro at the beginning of a line:
+
+ aa bb
+
+OpenBSD June 29, 2017 OpenBSD
--- /dev/null
+mandoc: column_nogroff.in:3:5: BASE: operating system explicitly specified: Os OpenBSD (OpenBSD)
+mandoc: column_nogroff.in:1:5: BASE: Mdocdate missing: Dd June (OpenBSD)
+mandoc: column_nogroff.in:10:2: WARNING: missing argument, using next line: Bl -column It
+mandoc: column_nogroff.in:18:2: WARNING: first macro on line: Ta
+mandoc: column_nogroff.in: BASE: RCS id missing: (OpenBSD)
--- /dev/null
+BL-COLUMN\_NOGROFF(1) - General Commands Manual
+
+# NAME
+
+**Bl-column\_nogroff** - column lists mishandled by groff
+
+# DESCRIPTION
+
+Item macro without arguments:
+
+ text
+ macro after tab
+
+Tab macro at the beginning of a line:
+
+ aa bb
+
+OpenBSD - June 29, 2017
-.\" $OpenBSD: mandoc.1,v 1.132 2017/06/27 12:17:35 schwarze Exp $
+.\" $OpenBSD: mandoc.1,v 1.133 2017/06/29 15:21:46 schwarze Exp $
.\"
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
.\" Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: June 27 2017 $
+.Dd $Mdocdate: June 29 2017 $
.Dt MANDOC 1
.Os
.Sh NAME
.Ic \&It
macro.
The offending children are moved before the beginning of the list.
+.It Sy "first macro on line"
+Inside a
+.Ic \&Bl Fl column
+list, a
+.Ic \&Ta
+macro occurs as the first macro on a line, which is not portable.
.It Sy "fill mode already enabled, skipping"
.Pq man
A
.Ic \&It
block is empty.
An empty list item is shown.
+.It Sy "missing argument, using next line"
+.Pq mdoc
+An
+.Ic \&It
+macro in a
+.Ic \&Bd Fl column
+list has no arguments.
+While
+.Nm
+uses the text or macros of the following line, if any, for the cell,
+other formatters may misformat the list.
.It Sy "missing font type, using \efR"
.Pq mdoc
A
-/* $OpenBSD: mandoc.h,v 1.178 2017/06/25 17:42:37 schwarze Exp $ */
+/* $OpenBSD: mandoc.h,v 1.179 2017/06/29 15:21:46 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
MANDOCERR_BLK_NEST, /* blocks badly nested: macro ... */
MANDOCERR_BD_NEST, /* nested displays are not portable: macro ... */
MANDOCERR_BL_MOVE, /* moving content out of list: macro */
+ MANDOCERR_TA_LINE, /* first macro on line: Ta */
MANDOCERR_FI_SKIP, /* fill mode already enabled, skipping: fi */
MANDOCERR_NF_SKIP, /* fill mode already disabled, skipping: nf */
MANDOCERR_BLK_LINE, /* line scope broken: macro breaks macro */
MANDOCERR_FO_NOHEAD, /* missing function name, using "": Fo */
MANDOCERR_IT_NOHEAD, /* empty head in list item: Bl -type It */
MANDOCERR_IT_NOBODY, /* empty list item: Bl -type It */
+ MANDOCERR_IT_NOARG, /* missing argument, using next line: Bl -c It */
MANDOCERR_BF_NOFONT, /* missing font type, using \fR: Bf */
MANDOCERR_BF_BADFONT, /* unknown font type, using \fR: Bf font */
MANDOCERR_PF_SKIP, /* nothing follows prefix: Pf arg */
-/* $OpenBSD: mdoc_validate.c,v 1.259 2017/06/27 12:17:35 schwarze Exp $ */
+/* $OpenBSD: mdoc_validate.c,v 1.260 2017/06/29 15:21:46 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
assert(nit->head->child == NULL);
- i = 0;
- for (nch = nit->child; nch != NULL; nch = nch->next)
- if (nch->type == ROFFT_BODY)
- i++;
+ if (nit->head->next->child == NULL &&
+ nit->head->next->next == NULL) {
+ mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
+ nit->line, nit->pos, "It");
+ roff_node_delete(mdoc, nit);
+ break;
+ }
+ i = 0;
+ for (nch = nit->child; nch != NULL; nch = nch->next) {
+ if (nch->type != ROFFT_BODY)
+ continue;
+ if (i++ && nch->flags & NODE_LINE)
+ mandoc_msg(MANDOCERR_TA_LINE, mdoc->parse,
+ nch->line, nch->pos, "Ta");
+ }
if (i < cols || i > cols + 1)
mandoc_vmsg(MANDOCERR_BL_COL,
mdoc->parse, nit->line, nit->pos,
"%d columns, %d cells", cols, i);
+ else if (nit->head->next->child != NULL &&
+ nit->head->next->child->line > nit->line)
+ mandoc_msg(MANDOCERR_IT_NOARG, mdoc->parse,
+ nit->line, nit->pos, "Bl -column It");
break;
default:
abort();
-/* $OpenBSD: read.c,v 1.154 2017/06/25 17:42:37 schwarze Exp $ */
+/* $OpenBSD: read.c,v 1.155 2017/06/29 15:21:46 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
"blocks badly nested",
"nested displays are not portable",
"moving content out of list",
+ "first macro on line",
"fill mode already enabled, skipping",
"fill mode already disabled, skipping",
"line scope broken",
"missing function name, using \"\"",
"empty head in list item",
"empty list item",
+ "missing argument, using next line",
"missing font type, using \\fR",
"unknown font type, using \\fR",
"nothing follows prefix",