updated for version 7.4.209
Problem: When repeating a filter command "%" and "#" are expanded.
Solution: Escape the command when storing for redo. (Christian Brabandt)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 465fb9e..fc83aba 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1012,7 +1012,18 @@
if (bangredo) /* put cmd in redo buffer for ! command */
{
- AppendToRedobuffLit(prevcmd, -1);
+ /* If % or # appears in the command, it must have been escaped.
+ * Reescape them, so that redoing them does not substitute them by the
+ * buffername. */
+ char_u *cmd = vim_strsave_escaped(prevcmd, (char_u *)"%#");
+
+ if (cmd != NULL)
+ {
+ AppendToRedobuffLit(cmd, -1);
+ vim_free(cmd);
+ }
+ else
+ AppendToRedobuffLit(prevcmd, -1);
AppendToRedobuff((char_u *)"\n");
bangredo = FALSE;
}