Use current document when no URL given in txmt URL

Brings TM2 in line with the promises in

	http://manual.macromates.com/en/using_textmate_from_terminal.html

Could probably be written nicer, I just don't get C++!
This commit is contained in:
Gerd Knops
2012-08-05 19:38:53 -05:00
committed by Allan Odgaard
parent aa234b723d
commit 2beac7080b
3 changed files with 20 additions and 0 deletions

View File

@@ -77,6 +77,7 @@ static NSString* const OakGlobalSessionInfo = @"OakGlobalSessionInfo";
{
std::map<std::string, std::string> parameters;
BOOL hadURL = NO;
NSArray* components = [[aURL query] componentsSeparatedByString:@"&"];
for(NSString* part in components)
{
@@ -86,6 +87,19 @@ static NSString* const OakGlobalSessionInfo = @"OakGlobalSessionInfo";
std::string key = to_s([[keyValue firstObject] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
NSURL* fileURL = key == "url" ? [NSURL URLWithString:[keyValue lastObject]] : nil;
parameters[key] = to_s([fileURL isFileURL] ? [fileURL path] : [[keyValue lastObject] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
hadURL |= (key == "url");
}
}
if(!hadURL && [[NSApp orderedWindows]count] > 0)
{
NSWindow* window=[[NSApp orderedWindows]objectAtIndex:0];
DocumentController* controller = (DocumentController*)[window delegate];
if([controller isKindOfClass:[DocumentController class]] && !controller->documentTabs.empty())
{
NSString* path=[controller documentFilePath];
if(path && [path length] > 0) parameters["url"] = to_s(path);
}
}

View File

@@ -71,6 +71,7 @@ namespace bundles { struct item_t; typedef std::tr1::shared_ptr<item_t> item_ptr
@property (nonatomic, readonly) NSString* identifier;
@property (nonatomic, assign) BOOL fileBrowserHidden;
@property (nonatomic, readonly) NSString* documentPath;
@property (nonatomic, readonly) NSString* documentFilePath;
@property (nonatomic, readonly) NSString* fileBrowserPath;
@property (nonatomic, readonly) NSString* projectPath;
@property (nonatomic, readonly) NSString* untitledSavePath;

View File

@@ -1160,6 +1160,11 @@ static std::string parent_or_home (std::string const& path)
return [NSString stringWithCxxString:documentTabs.empty() ? NULL_STR : parent_or_home([self selectedDocument]->path())];
}
- (NSString*)documentFilePath
{
return [NSString stringWithCxxString:documentTabs.empty() ? NULL_STR : [self selectedDocument]->path()];
}
- (NSString*)projectPath
{
settings_t const& settings = documentTabs.empty() || [self selectedDocument]->path() == NULL_STR ? settings_for_path(NULL_STR, "", to_s(self.fileBrowserPath)) : [self selectedDocument]->settings();