Skip to content

Instantly share code, notes, and snippets.

@fjolnir
Created February 2, 2014 08:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fjolnir/8764826 to your computer and use it in GitHub Desktop.
Save fjolnir/8764826 to your computer and use it in GitHub Desktop.
#import "NSWorkspace+OpenFileOnLine.h"
NSString *kSublimeText2Identifier = @"com.sublimetext.2";
NSString *kSublimeText3Identifier = @"com.sublimetext.3";
NSString *kMacVimIdentifier = @"org.vim.MacVim";
NSString *kTextmateIdentifier = @"com.macromates.textmate";
NSString *kTextmate2Identifier = @"com.macromates.textmate.preview";
NSString *kBBEditIdentifier = @"com.barebones.bbedit";
@implementation NSWorkspace (OpenFileOnLine)
+ (NSString *)cp_schemeForEditor:(NSString *)editor
{
if ([editor isEqualToString:kSublimeText2Identifier] ||
[editor isEqualToString:kSublimeText3Identifier])
return @"subl";
if ([editor isEqualToString:kMacVimIdentifier])
return @"mvim";
if ([editor isEqualToString:kTextmateIdentifier])
return @"txmt";
if ([editor isEqualToString:kBBEditIdentifier])
return @"txmt";
else
return nil;
}
- (void)cp_openURL:(NSURL *)url onLine:(NSUInteger)line
{
NSURL *editorURL = [self URLForApplicationToOpenURL:url];
NSString *editorIdentifier = [[NSBundle bundleWithURL:editorURL] bundleIdentifier];
NSString *scheme = [[self class] cp_schemeForEditor:editorIdentifier];
if(scheme)
url = [NSURL URLWithString:[NSString stringWithFormat:@"%@://open?url=%@&line=%lu",
scheme,
[[url absoluteString] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
(unsigned long)line]];
[self openURL:url];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment