Skip to content

Commit b93473f

Browse files
authored
Merge pull request #1002 from frarees/handleurl_fix
Fix mvim:// not handling paths with spaces
2 parents f12f328 + 5f7e769 commit b93473f

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/MacVim/MMAppController.m

+21-8
Original file line numberDiff line numberDiff line change
@@ -1744,19 +1744,32 @@ - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
17441744
NSEnumerator *enumerator = [queries objectEnumerator];
17451745
NSString *param;
17461746
while ((param = [enumerator nextObject])) {
1747+
// query: <field>=<value>
17471748
NSArray *arr = [param componentsSeparatedByString:@"="];
17481749
if ([arr count] == 2) {
1750+
// parse field
1751+
NSString *f = [arr objectAtIndex:0];
17491752
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
1750-
[dict setValue:[[arr lastObject] stringByRemovingPercentEncoding]
1751-
forKey:[[arr objectAtIndex:0] stringByRemovingPercentEncoding]];
1753+
f = [f stringByRemovingPercentEncoding];
17521754
#else
1753-
[dict setValue:[[arr lastObject]
1754-
stringByReplacingPercentEscapesUsingEncoding:
1755-
NSUTF8StringEncoding]
1756-
forKey:[[arr objectAtIndex:0]
1757-
stringByReplacingPercentEscapesUsingEncoding:
1758-
NSUTF8StringEncoding]];
1755+
f = [f stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
17591756
#endif
1757+
1758+
// parse value
1759+
NSString *v = [arr objectAtIndex:1];
1760+
1761+
// do not decode url, since it's a file URI
1762+
BOOL decode = ![f isEqualToString:@"url"];
1763+
if (decode)
1764+
{
1765+
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
1766+
v = [f stringByRemovingPercentEncoding];
1767+
#else
1768+
v = [f stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
1769+
#endif
1770+
}
1771+
1772+
[dict setValue:v forKey:f];
17601773
}
17611774
}
17621775

0 commit comments

Comments
 (0)