summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9e0fd4a)
because otherwise UTF-8 versions of man(1) tend to turn them into
Unicode hyphen characters, with the result that if you cut and paste
sample command lines out of man pages in the obvious way then the
things that look like hyphens are not in fact the character that the
program in question would recognise as an option introducer.
git-svn-id: svn://svn.tartarus.org/sgt/halibut@8309
cda61777-01e9-0310-a592-
d414129be87e
return cmdline_cfg_simple("man-filename", filename, NULL);
}
return cmdline_cfg_simple("man-filename", filename, NULL);
}
-#define QUOTE_INITCTRL 1 /* quote initial . and ' on a line */
-#define QUOTE_QUOTES 2 /* quote double quotes by doubling them */
+#define QUOTE_INITCTRL 1 /* quote initial . and ' on a line */
+#define QUOTE_QUOTES 2 /* quote double quotes by doubling them */
+#define QUOTE_LITHYPHENS 4 /* don't convert hyphens into \(hy */
void man_backend(paragraph *sourceform, keywordlist *keywords,
indexdata *idx, void *unused) {
void man_backend(paragraph *sourceform, keywordlist *keywords,
indexdata *idx, void *unused) {
/* Turn backslashes into \e. */
rdaddsc(&out, "\\e");
continue;
/* Turn backslashes into \e. */
rdaddsc(&out, "\\e");
continue;
- } else if (*q == '-') {
+ } else if (*q == '-' && !(quote_props & QUOTE_LITHYPHENS)) {
/* Turn nonbreakable hyphens into \(hy. */
rdaddsc(&out, "\\(hy");
continue;
/* Turn nonbreakable hyphens into \(hy. */
rdaddsc(&out, "\\(hy");
continue;
quote_props = man_rdaddctrl(rs, "\\fB", quote_props, conf, state);
}
quote_props = man_rdaddctrl(rs, "\\fB", quote_props, conf, state);
}
+ if (towordstyle(text->type) == word_Code ||
+ towordstyle(text->type) == word_WeakCode)
+ quote_props |= QUOTE_LITHYPHENS;
+
if (removeattr(text->type) == word_Normal) {
charset_state s2 = *state;
int len = ustrlen(text->text), hyphen = FALSE;
if (removeattr(text->type) == word_Normal) {
charset_state s2 = *state;
int len = ustrlen(text->text), hyphen = FALSE;
for (; text; text = text->next) if (text->type == word_WeakCode) {
char *c;
wchar_t *t, *e;
for (; text; text = text->next) if (text->type == word_WeakCode) {
char *c;
wchar_t *t, *e;
- int quote_props = QUOTE_INITCTRL;
+ int quote_props = QUOTE_INITCTRL | QUOTE_LITHYPHENS;
t = text->text;
if (text->next && text->next->type == word_Emph) {
t = text->text;
if (text->next && text->next->type == word_Emph) {