diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2012-05-31 22:29:13 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2012-05-31 22:29:13 +0000 |
commit | 202b7e8f93f2d7b52432ac7b359f9df32d46f683 (patch) | |
tree | b0a7dae1cafcea499730ab4b4aa45acde007b42c /mandoc.c | |
parent | f2888f84e20ae452a6382db6d6f0888b1da41ef5 (diff) | |
download | mandoc-202b7e8f93f2d7b52432ac7b359f9df32d46f683.tar.gz mandoc-202b7e8f93f2d7b52432ac7b359f9df32d46f683.tar.zst mandoc-202b7e8f93f2d7b52432ac7b359f9df32d46f683.zip |
Implement the roff \z escape sequence, intended to output the next
character without advancing the cursor position; implement it to
simply skip the next character, as it will usually be overwritten.
With this change, the pod2man(1) preamble user-defined string \*:,
intended to render as a diaeresis or umlaut diacritic above the
preceding character, is rendered in a slightly less ugly way,
though still not correctly. It was rendered as "z.." and is now
rendered as ".".
Given that the definition of \*: uses elaborate manual \h positioning,
there is little chance for mandoc(1) to ever render it correctly,
but at least we can refrain from printing out a spurious "z", and
we can make the \z do something semi-reasonable for easier cases.
"just commit" kristaps@
Diffstat (limited to 'mandoc.c')
-rw-r--r-- | mandoc.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -1,7 +1,7 @@ -/* $Id: mandoc.c,v 1.62 2011/12/03 16:08:51 schwarze Exp $ */ +/* $Id: mandoc.c,v 1.63 2012/05/31 22:29:13 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -143,6 +143,16 @@ mandoc_escape(const char **end, const char **start, int *sz) break; /* + * The \z escape is supposed to output the following + * character without advancing the cursor position. + * Since we are mostly dealing with terminal mode, + * let us just skip the next character. + */ + case ('z'): + (*end)++; + return(ESCAPE_SKIPCHAR); + + /* * Handle all triggers matching \X(xy, \Xx, and \X[xxxx], where * 'X' is the trigger. These have opaque sub-strings. */ |