-# $OpenBSD: Makefile.inc,v 1.22 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile.inc,v 1.23 2017/05/30 19:29:31 schwarze Exp $
.include "Makefile.sub"
@${MANDOC} -man -Tascii -Omdoc ${.IMPSRC} > ${.TARGET}
.in.mandoc_lint:
- @-${MANDOC} ${MOPTS} -Tlint ${.IMPSRC} 2>&1 | \
+ @-${MANDOC} ${MOPTS} -Tlint -Wall ${.IMPSRC} 2>&1 | \
sed -E 's/^mandoc: \/[^:]+\//mandoc: /' > ${.TARGET}
.mandoc_lint.diff_lint:
.for t in ${LINT_TARGETS}
${t}.out_lint: ${t}.in
- -${MANDOC} ${MOPTS} -Tlint ${.ALLSRC} > ${.TARGET} 2>&1
+ -${MANDOC} ${MOPTS} -Tlint -Wall ${.ALLSRC} > ${.TARGET} 2>&1
.endfor
# --- phony targets ---
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Tn
+mandoc: noarg.in:9:2: STYLE: useless macro: Tn
+mandoc: arg.in:9:2: STYLE: useless macro: Ud
+mandoc: arg.in:11:2: STYLE: useless macro: Bt
+mandoc: arg.in:15:2: STYLE: useless macro: Ud
mandoc: arg.in:15:2: ERROR: skipping all arguments: Ud bar
+mandoc: arg.in:16:2: STYLE: useless macro: Bt
mandoc: arg.in:16:2: ERROR: skipping all arguments: Bt foo
+mandoc: arg.in:17:2: STYLE: useless macro: Ud
mandoc: arg.in:17:2: ERROR: skipping all arguments: Ud one
+mandoc: arg.in:18:2: STYLE: useless macro: Bt
mandoc: arg.in:18:2: ERROR: skipping all arguments: Bt one
-.\" $OpenBSD: mandoc.1,v 1.112 2017/05/17 23:39:15 schwarze Exp $
+.\" $OpenBSD: mandoc.1,v 1.113 2017/05/30 19:29:31 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: May 17 2017 $
+.Dd $Mdocdate: May 30 2017 $
.Dt MANDOC 1
.Os
.Sh NAME
option or
.Fl T Cm lint
output mode.
+.Ss Style messages
+.Bl -ohang
+.It Sy "useless macro"
+.Pq mdoc
+A
+.Ic \&Bt ,
+.Ic \&Tn ,
+or
+.Ic \Ud
+macro was found.
+Simply delete it, it serves no useful purpose.
+.El
.Ss Warnings related to the document prologue
.Bl -ohang
.It Sy "missing manual title, using UNTITLED"
-/* $OpenBSD: mandoc.h,v 1.158 2017/05/16 19:05:36 schwarze Exp $ */
+/* $OpenBSD: mandoc.h,v 1.159 2017/05/30 19:29:31 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
MANDOCERR_STYLE, /* ===== start of style suggestions ===== */
+ MANDOCERR_MACRO_USELESS, /* useless macro: macro */
+
MANDOCERR_WARNING, /* ===== start of warnings ===== */
/* related to the prologue */
-/* $OpenBSD: mdoc_validate.c,v 1.243 2017/05/14 13:59:53 schwarze Exp $ */
+/* $OpenBSD: mdoc_validate.c,v 1.244 2017/05/30 19:29:31 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
static void post_sm(POST_ARGS);
static void post_st(POST_ARGS);
static void post_std(POST_ARGS);
+static void post_useless(POST_ARGS);
static void post_xr(POST_ARGS);
static void post_xx(POST_ARGS);
post_sm, /* Sm */
post_hyph, /* Sx */
NULL, /* Sy */
- NULL, /* Tn */
+ post_useless, /* Tn */
post_xx, /* Ux */
NULL, /* Xc */
NULL, /* Xo */
{
struct roff_node *n;
+ post_useless(mdoc);
n = mdoc->last;
if (n->child != NULL)
mandoc_vmsg(MANDOCERR_ARG_SKIP, mdoc->parse, n->line,
n->line, n->pos, roff_name[n->tok]);
}
+static void
+post_useless(POST_ARGS)
+{
+ struct roff_node *n;
+
+ n = mdoc->last;
+ mandoc_msg(MANDOCERR_MACRO_USELESS, mdoc->parse,
+ n->line, n->pos, roff_name[n->tok]);
+}
+
/*
* Block macros.
*/
-/* $OpenBSD: read.c,v 1.137 2017/05/16 19:05:36 schwarze Exp $ */
+/* $OpenBSD: read.c,v 1.138 2017/05/30 19:29:31 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
"ok",
"generic style suggestion",
+
+ "useless macro",
+
"generic warning",
/* related to the prologue */