summaryrefslogtreecommitdiffstats
path: root/mandoc.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2012-05-31 22:29:13 +0000
committerIngo Schwarze <schwarze@openbsd.org>2012-05-31 22:29:13 +0000
commit151c919ed8cc3ed826972bf9834c86d322c8ea2a (patch)
tree88cd0e892637ff83ebf37f93c1e552f8572604bb /mandoc.c
parenta72385d7db78c4b91054f655c790402b70f79571 (diff)
downloadmandoc-151c919ed8cc3ed826972bf9834c86d322c8ea2a.tar.gz
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.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/mandoc.c b/mandoc.c
index a7d8a92d..e363765b 100644
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,7 +1,7 @@
/* $Id$ */
/*
* 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.
*/