From d672f8cb82878baf3834e938c4c416f4493952cf Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sat, 15 Dec 2018 19:30:25 +0000 Subject: Several improvements to escape sequence handling. * Add the missing special character \_ (underscore). * Partial implementations of \a (leader character) and \E (uninterpreted escape character). * Parse and ignore \r (reverse line feed). * Add a WARNING message about undefined escape sequences. * Add an UNSUPP message about unsupported escape sequences. * Mark \! and \? (transparent throughput) and \O (suppress output) as unsupported. * Treat the various variants of zero-width spaces as one-byte escape sequences rather than as special characters, to avoid defining bogus forms with square brackets. * For special characters with one-byte names, do not define bogus forms with square brackets, except for \[-], which is valid. * In the form with square brackets, undefined special characters do not fall back to printing the name verbatim, not even for one-byte names. * Starting a special character name with a blank is an error. * Undefined escape sequences never abort formatting of the input string, not even in HTML output mode. * Document the newly handled escapes, and a few that were missing. * Regression tests for most of the above. --- regress/char/space/Makefile | 3 ++- regress/char/space/esct-man.in | 14 +++++++++++++- regress/char/space/esct-man.out_ascii | 6 +++++- regress/char/space/esct-man.out_lint | 10 +++++----- regress/char/space/invalid.in | 15 +++++++++++++++ regress/char/space/invalid.out_ascii | 21 +++++++++++++++++++++ regress/char/space/invalid.out_lint | 9 +++++++++ 7 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 regress/char/space/invalid.in create mode 100644 regress/char/space/invalid.out_ascii create mode 100644 regress/char/space/invalid.out_lint (limited to 'regress/char/space') diff --git a/regress/char/space/Makefile b/regress/char/space/Makefile index b6095de3..50c81c4a 100644 --- a/regress/char/space/Makefile +++ b/regress/char/space/Makefile @@ -3,11 +3,12 @@ REGRESS_TARGETS = leading-mdoc leading-man multiple trailing-mdoc zerowidth REGRESS_TARGETS += eos eos-man break nobreak REGRESS_TARGETS += tab tab-man esct-mdoc esct-man +REGRESS_TARGETS += invalid UTF8_TARGETS = zerowidth HTML_TARGETS = zerowidth -LINT_TARGETS = trailing-mdoc tab tab-man esct-mdoc esct-man +LINT_TARGETS = trailing-mdoc tab tab-man esct-mdoc esct-man invalid .include diff --git a/regress/char/space/esct-man.in b/regress/char/space/esct-man.in index e7afeefe..f290d9e2 100644 --- a/regress/char/space/esct-man.in +++ b/regress/char/space/esct-man.in @@ -1,5 +1,5 @@ .\" $OpenBSD: esct-man.in,v 1.2 2017/07/04 14:53:23 schwarze Exp $ -.TH SPACE-ESCT-MAN 1 2013-06-20 +.TH SPACE-ESCT-MAN 1 "December 15, 2018" .SH NAME SPACE-T-MAN \- the t escape sequence in pages with man macros .SH DESCRIPTION @@ -9,10 +9,14 @@ single tab .br single\tescape-t .br +single\aescape-a +.br double tab .br double\t\tescape-t .br +double\a\aescape-a +.br \tThis line starts with escape-t and comes close to the right margin. \tThe next line starts with escape-t as well. .sp @@ -20,8 +24,10 @@ In a literal display: .nf single tab single\tescape-t +single\aescape-a double tab double\t\tescape-t +double\a\aescape-a .fi .sp After the IP macro: @@ -29,7 +35,13 @@ After the IP macro: text .IP single\tescape-t 3n text +.\" XXX not implemented +.\" .IP single\aescape-a 3n +.\" text .PP After font macros: .br .B single\ttab +.\" XXX not implemented +.\" .br +.\" .B single\aleader diff --git a/regress/char/space/esct-man.out_ascii b/regress/char/space/esct-man.out_ascii index 29fbabea..3056cc72 100644 --- a/regress/char/space/esct-man.out_ascii +++ b/regress/char/space/esct-man.out_ascii @@ -9,16 +9,20 @@ DDEESSCCRRIIPPTTIIOONN In plain text: single tab singleescape-t + singleescape-a double tab doubleescape-t + doubleescape-a This line starts with escape-t and comes close to the right margin. The next line starts with escape-t as well. In a literal display: single tab singleescape-t + singleescape-a double tab doubleescape-t + doubleescape-a After the IP macro: @@ -33,4 +37,4 @@ DDEESSCCRRIIPPTTIIOONN -OpenBSD 2013-06-20 SPACE-ESCT-MAN(1) +OpenBSD December 15, 2018 SPACE-ESCT-MAN(1) diff --git a/regress/char/space/esct-man.out_lint b/regress/char/space/esct-man.out_lint index c625b3a3..2fa8ba9c 100644 --- a/regress/char/space/esct-man.out_lint +++ b/regress/char/space/esct-man.out_lint @@ -1,6 +1,6 @@ mandoc: esct-man.in:8:7: WARNING: tab in filled text -mandoc: esct-man.in:12:7: WARNING: tab in filled text -mandoc: esct-man.in:12:8: WARNING: tab in filled text -mandoc: esct-man.in:28:11: WARNING: tab in filled text -mandoc: esct-man.in:30:11: WARNING: tab in filled text -mandoc: esct-man.in:35:10: WARNING: tab in filled text +mandoc: esct-man.in:14:7: WARNING: tab in filled text +mandoc: esct-man.in:14:8: WARNING: tab in filled text +mandoc: esct-man.in:34:11: WARNING: tab in filled text +mandoc: esct-man.in:36:11: WARNING: tab in filled text +mandoc: esct-man.in:44:10: WARNING: tab in filled text diff --git a/regress/char/space/invalid.in b/regress/char/space/invalid.in new file mode 100644 index 00000000..c4692453 --- /dev/null +++ b/regress/char/space/invalid.in @@ -0,0 +1,15 @@ +.\" $OpenBSD$ +.TH SPACE-INVALID 1 "December 15, 2018" +.SH NAME +SPACE-INVALID \- invalid whitespace escape sequences +.SH DESCRIPTION +.nf +blank: a\[hy]b\[ hy]c +percent: a\%b\[%]c +ampersand: a\&b\[&]c +colon: a\:b\[:]c +caret: a\^b\[^]c +underline: a\_b\[_]c +pipe: a\|b\[|]c +tilde: a\~b\[~]c +digit-width: a\0b\[0]c diff --git a/regress/char/space/invalid.out_ascii b/regress/char/space/invalid.out_ascii new file mode 100644 index 00000000..bf3b5a16 --- /dev/null +++ b/regress/char/space/invalid.out_ascii @@ -0,0 +1,21 @@ +SPACE-INVALID(1) General Commands Manual SPACE-INVALID(1) + + + +NNAAMMEE + SPACE-INVALID - invalid whitespace escape sequences + +DDEESSCCRRIIPPTTIIOONN + blank: a-bhy]c + percent: abc + ampersand: abc + colon: abc + caret: abc + underline: a_bc + pipe: abc + tilde: a bc + digit-width: a bc + + + +OpenBSD December 15, 2018 SPACE-INVALID(1) diff --git a/regress/char/space/invalid.out_lint b/regress/char/space/invalid.out_lint new file mode 100644 index 00000000..c05ef38f --- /dev/null +++ b/regress/char/space/invalid.out_lint @@ -0,0 +1,9 @@ +mandoc: invalid.in:7:15: WARNING: invalid escape sequence: \[ +mandoc: invalid.in:8:14: WARNING: invalid escape sequence: \[%] +mandoc: invalid.in:9:16: WARNING: invalid escape sequence: \[&] +mandoc: invalid.in:10:12: WARNING: invalid escape sequence: \[:] +mandoc: invalid.in:11:12: WARNING: invalid escape sequence: \[^] +mandoc: invalid.in:12:16: WARNING: invalid escape sequence: \[_] +mandoc: invalid.in:13:11: WARNING: invalid escape sequence: \[|] +mandoc: invalid.in:14:12: WARNING: invalid escape sequence: \[~] +mandoc: invalid.in:15:18: WARNING: invalid escape sequence: \[0] -- cgit v1.2.3-56-ge451