diff --git a/src/MacVim/MMAppController.m b/src/MacVim/MMAppController.m index f6815a7919..652ca91133 100644 --- a/src/MacVim/MMAppController.m +++ b/src/MacVim/MMAppController.m @@ -181,15 +181,20 @@ static NSTimeInterval MMReplyTimeout = 5; for (i = 0; i < count; ++i) { MMVimController *controller = [vimControllers objectAtIndex:i]; id proxy = [controller backendProxy]; + NSString *file = [[files objectAtIndex:0] + stringByEscapingSpecialFilenameCharacters]; @try { NSString *expr = [NSString stringWithFormat: - @"bufloaded(\"%@\")", [files objectAtIndex:0]]; + @"bufloaded(\"%@\")", file]; NSString *eval = [proxy evaluateExpression:expr]; if ([eval isEqual:@"1"]) { // TODO: Select the tab with 'file' open. - [controller addVimInput: - @":cal foreground()"]; + NSString *input = [NSString stringWithFormat:@"" + ":let oldswb=&swb|let &swb=\"useopen,usetab\"|" + "tab sb %@|let &swb=oldswb|unl oldswb|" + "cal foreground()|redr|f", file]; + [controller addVimInput:input]; return; } }