The commit window app assumes that your diff invocation will return  
the diff. This is not always the case. If you are using Changes.app  
your invocation of svn diff doesn't actually return the diff.

The commit window app needs to be smarter in that it should try to  
send anything to mate if the diff command didn't return any output.  
The offending method in CommitWindowCommandLine.m is…

- (IBAction) doubleClickRowInTable:(id)sender
{
        if( fDiffCommand != nil )
        {
                static NSString *       sCommandAbsolutePath = nil;

                NSMutableArray *        arguments       = [[fDiffCommand  
componentsSeparatedByString:@","] mutableCopy];
                NSString *                      filePath        = 
[[[[fFilesController arrangedObjects]  
objectAtIndex:[sender selectedRow]] objectForKey:@"path"]  
stringByStandardizingPath];
                NSData *                        diffData;
                NSString *                      errorText;
                int                                     exitStatus;
                
                // Resolve the command to an absolute path (only do this once 
per  
launch)
                if(sCommandAbsolutePath == nil)
                {
                        sCommandAbsolutePath = [[self 
absolutePathForPath:[arguments  
objectAtIndex:0]] retain];
                }
                [arguments replaceObjectAtIndex:0 
withObject:sCommandAbsolutePath];

                // Run the diff
                [arguments addObject:filePath];
                exitStatus = [NSTask executeTaskWithArguments:arguments
                                                                input:nil
                                                outputData:&diffData
                                                errorString:&errorText];
                [self checkExitStatus:exitStatus forCommand:arguments  
errorText:errorText];

                // Success, send the diff to TextMate
                arguments = [NSArray arrayWithObjects:[NSString  
stringWithFormat:@"%s/bin/mate", getenv("TM_SUPPORT_PATH")], @"-a",  
nil];
                
                exitStatus = [NSTask executeTaskWithArguments:arguments
                                                                input:diffData
                                                outputData:nil
                                                errorString:&errorText];
                [self checkExitStatus:exitStatus forCommand:arguments  
errorText:errorText];
        }
}

Ideally, it would be nice to have TM pop up a dialog. Which probably  
means we need to invoke tm_dialog here.

I'll try and add this in, but can someone tell me how I would go about  
building this damn thing? There is no xcode project or build script of  
any kind to my eyes.
_______________________________________________
textmate-dev mailing list
[email protected]
http://lists.macromates.com/listinfo/textmate-dev

Reply via email to