aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/regress/char
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-12-15 19:30:25 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-12-15 19:30:25 +0000
commitd672f8cb82878baf3834e938c4c416f4493952cf (patch)
treea46f3c1570ef9a8cdb5d67fd75e3bb77c8e4068f /regress/char
parentbb4f86d616ee99eb82c0875af27b9d8a216ecfdc (diff)
downloadmandoc-d672f8cb82878baf3834e938c4c416f4493952cf.tar.gz
mandoc-d672f8cb82878baf3834e938c4c416f4493952cf.tar.zst
mandoc-d672f8cb82878baf3834e938c4c416f4493952cf.zip
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.
Diffstat (limited to 'regress/char')
-rw-r--r--regress/char/accent/Makefile1
-rw-r--r--regress/char/accent/nocombine.in12
-rw-r--r--regress/char/accent/nocombine.out_ascii6
-rw-r--r--regress/char/accent/nocombine.out_lint2
-rw-r--r--regress/char/accent/nocombine.out_utf86
-rw-r--r--regress/char/space/Makefile3
-rw-r--r--regress/char/space/esct-man.in14
-rw-r--r--regress/char/space/esct-man.out_ascii6
-rw-r--r--regress/char/space/esct-man.out_lint10
-rw-r--r--regress/char/space/invalid.in15
-rw-r--r--regress/char/space/invalid.out_ascii21
-rw-r--r--regress/char/space/invalid.out_lint9
12 files changed, 85 insertions, 20 deletions
diff --git a/regress/char/accent/Makefile b/regress/char/accent/Makefile
index 4bc149a7..3712217e 100644
--- a/regress/char/accent/Makefile
+++ b/regress/char/accent/Makefile
@@ -3,5 +3,6 @@
REGRESS_TARGETS = nocombine utf8only combine
SKIP_ASCII = utf8only combine
UTF8_TARGETS = nocombine utf8only combine
+LINT_TARGETS = nocombine
.include <bsd.regress.mk>
diff --git a/regress/char/accent/nocombine.in b/regress/char/accent/nocombine.in
index a81d446b..637d337e 100644
--- a/regress/char/accent/nocombine.in
+++ b/regress/char/accent/nocombine.in
@@ -1,17 +1,17 @@
.\" $OpenBSD: nocombine.in,v 1.2 2017/07/04 14:53:23 schwarze Exp $
-.TH CHAR-ACCENT-NOCOMBINE 1 "March 8, 2014"
+.TH CHAR-ACCENT-NOCOMBINE 1 "December 15, 2018"
.SH NAME
\fBchar-accent-nocombine\fR - non-combining accents
.SH DESCRIPTION
bare acute accent: e'e
.br
-escaped acute accent: e\'e
+escaped acute accent: e\'e\[']e
.br
acute accent sequence: e\(aae
.br
bare grave accent: e`e
.br
-escaped grave accent: e\`e
+escaped grave accent: e\`e\[`]e
.br
acute grave sequence: e\(gae
.br
@@ -20,15 +20,15 @@ hungarian umlaut: e\(a"e
.\" XXX This is ridiculous.
.\" XXX groff prints the macron as an underscore in the previous line.
.\" macron: e\(a-e
-.br
+.\" .br
.\" XXX groff doesn't have a dot in ASCII mode, only in UTF-8 mode.
.\" dotted: e\(a.e
-.br
+.\" .br
circumflex: e\(a^e
.br
.\" XXX groff uses a backspace for this one in ASCII mode.
.\" breve: e\(abe
-.br
+.\" .br
cedilla: e\(ace
.br
dieresis: e\(ade
diff --git a/regress/char/accent/nocombine.out_ascii b/regress/char/accent/nocombine.out_ascii
index bc1cce15..0f18ac4a 100644
--- a/regress/char/accent/nocombine.out_ascii
+++ b/regress/char/accent/nocombine.out_ascii
@@ -7,10 +7,10 @@ NNAAMMEE
DDEESSCCRRIIPPTTIIOONN
bare acute accent: e'e
- escaped acute accent: e'e
+ escaped acute accent: e'ee
acute accent sequence: e'e
bare grave accent: e`e
- escaped grave accent: e`e
+ escaped grave accent: e`ee
acute grave sequence: e`e
hungarian umlaut: e"e
circumflex: e^e
@@ -25,4 +25,4 @@ DDEESSCCRRIIPPTTIIOONN
-OpenBSD March 8, 2014 CHAR-ACCENT-NOCOMBINE(1)
+OpenBSD December 15, 2018 CHAR-ACCENT-NOCOMBINE(1)
diff --git a/regress/char/accent/nocombine.out_lint b/regress/char/accent/nocombine.out_lint
new file mode 100644
index 00000000..c9de4162
--- /dev/null
+++ b/regress/char/accent/nocombine.out_lint
@@ -0,0 +1,2 @@
+mandoc: nocombine.in:8:27: WARNING: invalid escape sequence: \[']
+mandoc: nocombine.in:14:27: WARNING: invalid escape sequence: \[`]
diff --git a/regress/char/accent/nocombine.out_utf8 b/regress/char/accent/nocombine.out_utf8
index 3aa441a2..497bf6fd 100644
--- a/regress/char/accent/nocombine.out_utf8
+++ b/regress/char/accent/nocombine.out_utf8
@@ -7,10 +7,10 @@ NNAAMMEE
DDEESSCCRRIIPPTTIIOONN
bare acute accent: e'e
- escaped acute accent: e´e
+ escaped acute accent: e´ee
acute accent sequence: e´e
bare grave accent: e`e
- escaped grave accent: e`e
+ escaped grave accent: e`ee
acute grave sequence: e`e
hungarian umlaut: e˝e
circumflex: e^e
@@ -25,4 +25,4 @@ DDEESSCCRRIIPPTTIIOONN
-OpenBSD March 8, 2014 CHAR-ACCENT-NOCOMBINE(1)
+OpenBSD December 15, 2018 CHAR-ACCENT-NOCOMBINE(1)
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 <bsd.regress.mk>
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]