Revision: 4920
http://skim-app.svn.sourceforge.net/skim-app/?rev=4920&view=rev
Author: hofman
Date: 2008-11-06 22:17:31 +0000 (Thu, 06 Nov 2008)
Log Message:
-----------
Append .tex extension to synchronized source file whenever we don't see an
expected tex extension.
Modified Paths:
--------------
trunk/SKPDFSynchronizer.m
Modified: trunk/SKPDFSynchronizer.m
===================================================================
--- trunk/SKPDFSynchronizer.m 2008-11-06 18:49:47 UTC (rev 4919)
+++ trunk/SKPDFSynchronizer.m 2008-11-06 22:17:31 UTC (rev 4920)
@@ -45,11 +45,13 @@
#import "Files_SKExtensions.h"
#import "NSString_SKExtensions.h"
#import "SKCFCallBacks.h"
+#import "SKRuntime.h"
#define PDFSYNC_TO_PDF(coord) ((float)coord / 65536.0)
static NSString *SKPDFSynchronizerTexExtension = @"tex";
static NSString *SKPDFSynchronizerPdfsyncExtension = @"pdfsync";
+static NSSet *SKPDFSynchronizerTexExtensionSet = nil;
#pragma mark -
@@ -80,6 +82,11 @@
@implementation SKPDFSynchronizer
++ (void)initialize {
+ OBINITIALIZE;
+ SKPDFSynchronizerTexExtensionSet = [[NSSet alloc] initWithObjects:@"tex",
@"ltx", @"sty", @"cls", @"aux", @"clo", @"fd", @"def", @"cfg", nil];
+}
+
// Offset of coordinates in PDFKit and what pdfsync tells us. Don't know what
they are; is this implementation dependent?
static NSPoint pdfOffset = {0.0, 0.0};
@@ -326,20 +333,20 @@
#pragma mark | Server thread
-- (NSString *)sourceFileForFileName:(NSString *)file
defaultExtension:(NSString *)extension removeQuotes:(BOOL)removeQuotes {
+- (NSString *)sourceFileForFileName:(NSString *)file isTeX:(BOOL)isTeX
removeQuotes:(BOOL)removeQuotes {
if (removeQuotes && [file length] > 2 && [file characterAtIndex:0] == '"'
&& [file characterAtIndex:[file length] - 1] == '"')
file = [file substringWithRange:NSMakeRange(1, [file length] - 2)];
- if (extension && [[file pathExtension] length] == 0)
- file = [file stringByAppendingPathExtension:extension];
+ if (isTeX && [SKPDFSynchronizerTexExtensionSet containsObject:[[file
pathExtension] lowercaseString]] == NO)
+ file = [file
stringByAppendingPathExtension:SKPDFSynchronizerTexExtension];
if ([file isAbsolutePath] == NO)
file = [[[self fileName] stringByDeletingLastPathComponent]
stringByAppendingPathComponent:file];
// the docs say -stringByStandardizingPath uses
-stringByResolvingSymlinksInPath, but it doesn't
return [[file stringByResolvingSymlinksInPath] stringByStandardizingPath];
}
-- (NSString *)sourceFileForFileSystemRepresentation:(const char *)fileRep
defaultExtension:(NSString *)extension {
+- (NSString *)sourceFileForFileSystemRepresentation:(const char *)fileRep
isTeX:(BOOL)isTeX {
NSString *file = (NSString
*)CFStringCreateWithFileSystemRepresentation(NULL, fileRep);
- return [self sourceFileForFileName:[file autorelease]
defaultExtension:extension removeQuotes:NO];
+ return [self sourceFileForFileName:[file autorelease] isTeX:isTeX
removeQuotes:NO];
}
#pragma mark || PDFSync
@@ -378,7 +385,7 @@
if ([sc scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet]
intoString:&file] &&
[sc scanCharactersFromSet:[NSCharacterSet newlineCharacterSet]
intoString:NULL]) {
- file = [self sourceFileForFileName:file
defaultExtension:SKPDFSynchronizerTexExtension removeQuotes:YES];
+ file = [self sourceFileForFileName:file isTeX:YES
removeQuotes:YES];
[files addObject:file];
array = [[NSMutableArray alloc] init];
@@ -425,7 +432,7 @@
case '(':
// start of a new source file
if ([sc scanUpToCharactersFromSet:[NSCharacterSet
newlineCharacterSet] intoString:&file]) {
- file = [self sourceFileForFileName:file
defaultExtension:SKPDFSynchronizerTexExtension removeQuotes:YES];
+ file = [self sourceFileForFileName:file
isTeX:YES removeQuotes:YES];
[files addObject:file];
if ([lines objectForKey:file] == nil) {
array = [[NSMutableArray alloc] init];
@@ -589,7 +596,7 @@
synctex_scanner_free(scanner);
scanner = synctex_scanner_new_with_output_file([theFileName
fileSystemRepresentation]);
if (scanner) {
- [self setSyncFileName:[self
sourceFileForFileSystemRepresentation:synctex_scanner_get_synctex(scanner)
defaultExtension:nil]];
+ [self setSyncFileName:[self
sourceFileForFileSystemRepresentation:synctex_scanner_get_synctex(scanner)
isTeX:NO]];
if (filenames)
[filenames removeAllObjects];
else
@@ -598,7 +605,7 @@
synctex_node_t node = synctex_scanner_input(scanner);
do {
filename = [(NSString
*)CFStringCreateWithFileSystemRepresentation(NULL,
synctex_scanner_get_name(scanner, synctex_node_tag(node))) autorelease];
- [filenames setObject:filename forKey:[self
sourceFileForFileName:filename defaultExtension:SKPDFSynchronizerTexExtension
removeQuotes:NO]];
+ [filenames setObject:filename forKey:[self
sourceFileForFileName:filename isTeX:YES removeQuotes:NO]];
} while (node = synctex_node_next(node));
isPdfsync = NO;
rv = [self shouldKeepRunning];
@@ -612,7 +619,7 @@
synctex_node_t node = synctex_next_result(scanner);
if (node) {
*linePtr = MAX(synctex_node_line(node), 1) - 1;
- *filePtr = [self
sourceFileForFileSystemRepresentation:synctex_scanner_get_name(scanner,
synctex_node_tag(node)) defaultExtension:SKPDFSynchronizerTexExtension];
+ *filePtr = [self
sourceFileForFileSystemRepresentation:synctex_scanner_get_name(scanner,
synctex_node_tag(node)) isTeX:YES];
rv = YES;
}
}
@@ -687,7 +694,7 @@
NSPoint foundPoint = NSZeroPoint;
BOOL success = NO;
- file = [self sourceFileForFileName:file
defaultExtension:SKPDFSynchronizerTexExtension removeQuotes:NO];
+ file = [self sourceFileForFileName:file isTeX:YES removeQuotes:NO];
if (isPdfsync)
success = [self pdfsyncFindPage:&foundPageIndex
location:&foundPoint forLine:line inFile:file];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit