From 421c388bb77f19a5be3c987393ada1a8e5c8ea66 Mon Sep 17 00:00:00 2001 From: oni-link Date: Sun, 13 Apr 2014 00:52:08 +0200 Subject: vim-patch:7.4.209 Problem: When repeating a filter command "%" and "#" are expanded. Solution: Escape the command when storing for redo. (Christian Brabandt) https://code.google.com/p/vim/source/detail?r=bb402c49379de97fcd475fbbbbdc5ed41e5dff07 --- src/ex_cmds.c | 10 ++++++++-- src/version.c | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 9c843137f6..02bb65f13e 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -930,8 +930,14 @@ void do_bang(int addr_count, exarg_T *eap, int forceit, int do_in, int do_out) vim_free(prevcmd); prevcmd = newcmd; - if (bangredo) { /* put cmd in redo buffer for ! command */ - AppendToRedobuffLit(prevcmd, -1); + if (bangredo) { /* put cmd in redo buffer for ! command */ + /* 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 *)"%#"); + + AppendToRedobuffLit(cmd, -1); + vim_free(cmd); AppendToRedobuff((char_u *)"\n"); bangredo = FALSE; } diff --git a/src/version.c b/src/version.c index 2ed38e0650..6502a98e02 100644 --- a/src/version.c +++ b/src/version.c @@ -252,7 +252,7 @@ static int included_patches[] = { //212, //211, //210, - //209, + 209, //208, 207, //206, -- cgit