diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2017-06-27 12:18:00 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2017-06-27 12:18:00 +0000 |
commit | e9817d1eee252f2a60704c140932abd01803441b (patch) | |
tree | cbeb21eb9bd60a58cd0da3b9275fbc86284fda68 | |
parent | 7a652daded74f9e8becb34e9dca1d6202eae46fe (diff) | |
download | mandoc-e9817d1eee252f2a60704c140932abd01803441b.tar.gz |
warn about .Ns macros that have no effect because they are followed
by an isolated closing delimiter; inspired by mdoclint
-rw-r--r-- | mandoc.1 | 4 | ||||
-rw-r--r-- | mdoc_validate.c | 7 | ||||
-rw-r--r-- | regress/mdoc/Ns/position.in | 8 | ||||
-rw-r--r-- | regress/mdoc/Ns/position.out_ascii | 6 | ||||
-rw-r--r-- | regress/mdoc/Ns/position.out_lint | 3 | ||||
-rw-r--r-- | regress/mdoc/Ns/position.out_markdown | 8 |
6 files changed, 29 insertions, 7 deletions
@@ -1175,7 +1175,9 @@ The paragraph macro is moved after the end of the list. .Pq mdoc An input line begins with an .Ic \&Ns -macro. +macro, or the next argument after an +.Ic \&Ns +macro is an isolated closing delimiter. The macro is ignored. .It Sy "blocks badly nested" .Pq mdoc diff --git a/mdoc_validate.c b/mdoc_validate.c index 42a51afd..5be54f6b 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1983,10 +1983,13 @@ post_hyph(POST_ARGS) static void post_ns(POST_ARGS) { + struct roff_node *n; - if (mdoc->last->flags & NODE_LINE) + n = mdoc->last; + if (n->flags & NODE_LINE || + (n->next != NULL && n->next->flags & NODE_DELIMC)) mandoc_msg(MANDOCERR_NS_SKIP, mdoc->parse, - mdoc->last->line, mdoc->last->pos, NULL); + n->line, n->pos, NULL); } static void diff --git a/regress/mdoc/Ns/position.in b/regress/mdoc/Ns/position.in index 1325df25..56fc5de6 100644 --- a/regress/mdoc/Ns/position.in +++ b/regress/mdoc/Ns/position.in @@ -1,4 +1,4 @@ -.Dd September 15, 2013 +.Dd June 27, 2017 .Dt NS-POSITION 1 .Os OpenBSD .Sh NAME @@ -20,6 +20,12 @@ After some macro and a block closing: In the middle of a macro line: .Oo before Oc Ns Op after .Pp +After closing punctuation: +.Oo before Oc : Ns Op after +.Pp +Before closing punctuation: +.Oo before Oc Ns : Op after +.Pp At the end of a macro line: .Oo before Oc Ns .Op after diff --git a/regress/mdoc/Ns/position.out_ascii b/regress/mdoc/Ns/position.out_ascii index a2bd6c45..26de0562 100644 --- a/regress/mdoc/Ns/position.out_ascii +++ b/regress/mdoc/Ns/position.out_ascii @@ -12,8 +12,12 @@ DDEESSCCRRIIPPTTIIOONN In the middle of a macro line: [before][after] + After closing punctuation: [before]:[after] + + Before closing punctuation: [before]: [after] + At the end of a macro line: [before][after] At the end of partial implicit: [before][after] -OpenBSD September 15, 2013 OpenBSD +OpenBSD June 27, 2017 OpenBSD diff --git a/regress/mdoc/Ns/position.out_lint b/regress/mdoc/Ns/position.out_lint index 91695895..aa1f3275 100644 --- a/regress/mdoc/Ns/position.out_lint +++ b/regress/mdoc/Ns/position.out_lint @@ -1,4 +1,5 @@ mandoc: position.in:3:5: BASE: operating system explicitly specified: Os OpenBSD (OpenBSD) -mandoc: position.in:1:5: BASE: Mdocdate missing: Dd September (OpenBSD) +mandoc: position.in:1:5: BASE: Mdocdate missing: Dd June (OpenBSD) mandoc: position.in:10:2: WARNING: skipping no-space macro +mandoc: position.in:27:15: WARNING: skipping no-space macro mandoc: position.in: BASE: RCS id missing: (OpenBSD) diff --git a/regress/mdoc/Ns/position.out_markdown b/regress/mdoc/Ns/position.out_markdown index 14414a3e..8b6c509c 100644 --- a/regress/mdoc/Ns/position.out_markdown +++ b/regress/mdoc/Ns/position.out_markdown @@ -20,10 +20,16 @@ still before]\[after] In the middle of a macro line: \[before]\[after] +After closing punctuation: +\[before]:\[after] + +Before closing punctuation: +\[before]: \[after] + At the end of a macro line: \[before]\[after] At the end of partial implicit: \[before]\[after] -OpenBSD - September 15, 2013 +OpenBSD - June 27, 2017 |