Add %%% to substitute with quotes escaped (convert " to \"). Use this

for the prompts in copy mode. Fixes problems with jumping to ' reported
by Theo Buehler.
This commit is contained in:
nicm
2016-10-21 13:51:59 +00:00
parent 99c262b7d0
commit 8084a2c9e6
3 changed files with 30 additions and 18 deletions

18
cmd.c
View File

@ -653,8 +653,8 @@ char *
cmd_template_replace(const char *template, const char *s, int idx)
{
char ch, *buf;
const char *ptr;
int replaced;
const char *ptr, *cp;
int replaced, quoted;
size_t len;
if (strchr(template, '%') == NULL)
@ -676,9 +676,17 @@ cmd_template_replace(const char *template, const char *s, int idx)
}
ptr++;
len += strlen(s);
buf = xrealloc(buf, len + 1);
strlcat(buf, s, len + 1);
quoted = (*ptr == '%');
if (quoted)
ptr++;
buf = xrealloc(buf, len + (strlen(s) * 2) + 1);
for (cp = s; *cp != '\0'; cp++) {
if (quoted && *cp == '"')
buf[len++] = '\\';
buf[len++] = *cp;
}
buf[len] = '\0';
continue;
}
buf = xrealloc(buf, len + 2);