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
This commit is contained in:
oni-link
2014-04-13 00:52:08 +02:00
committed by Thiago de Arruda
parent 4a13143263
commit 421c388bb7
2 changed files with 9 additions and 3 deletions

View File

@@ -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;
}