aboutsummaryrefslogtreecommitdiffstatshomepage
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
commit202b7e8f93f2d7b52432ac7b359f9df32d46f683 (patch)
treeb0a7dae1cafcea499730ab4b4aa45acde007b42c /mandoc.c
parentf2888f84e20ae452a6382db6d6f0888b1da41ef5 (diff)
downloadmandoc-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.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/mandoc.c b/mandoc.c
index 604bb67e..bde6e559 100644
--- a/mandoc.c
+++ b/mandoc.c
@@ -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.
*/