diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-12-15 19:30:25 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-12-15 19:30:25 +0000 |
commit | d672f8cb82878baf3834e938c4c416f4493952cf (patch) | |
tree | a46f3c1570ef9a8cdb5d67fd75e3bb77c8e4068f /mandoc.h | |
parent | bb4f86d616ee99eb82c0875af27b9d8a216ecfdc (diff) | |
download | mandoc-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 'mandoc.h')
-rw-r--r-- | mandoc.h | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $Id: mandoc.h,v 1.260 2018/12/14 05:18:02 schwarze Exp $ */ +/* $Id: mandoc.h,v 1.261 2018/12/15 19:30:26 schwarze Exp $ */ /* * Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2012-2018 Ingo Schwarze <schwarze@openbsd.org> @@ -169,6 +169,7 @@ enum mandocerr { MANDOCERR_FI_TAB, /* tab in filled text */ MANDOCERR_EOS, /* new sentence, new line */ MANDOCERR_ESC_BAD, /* invalid escape sequence: esc */ + MANDOCERR_ESC_UNDEF, /* undefined escape, printing literally: char */ MANDOCERR_STR_UNDEF, /* undefined string, using "": name */ /* related to tables */ @@ -231,6 +232,7 @@ enum mandocerr { MANDOCERR_TOOLARGE, /* input too large */ MANDOCERR_CHAR_UNSUPP, /* unsupported control character: number */ + MANDOCERR_ESC_UNSUPP, /* unsupported escape sequence: escape */ MANDOCERR_REQ_UNSUPP, /* unsupported roff request: request */ MANDOCERR_WHILE_NEST, /* nested .while loops */ MANDOCERR_WHILE_OUTOF, /* end of scope with open .while loop */ @@ -245,7 +247,9 @@ enum mandocerr { enum mandoc_esc { ESCAPE_ERROR = 0, /* bail! unparsable escape */ + ESCAPE_UNSUPP, /* unsupported escape; ignore it */ ESCAPE_IGNORE, /* escape to be ignored */ + ESCAPE_UNDEF, /* undefined escape; print literal character */ ESCAPE_SPECIAL, /* a regular special character */ ESCAPE_FONT, /* a generic font mode */ ESCAPE_FONTBOLD, /* bold font mode */ |