Index: trunk/Cocoa/F-Script Anywhere/Source/DeVercruesseProcess.m
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/DeVercruesseProcess.m	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/DeVercruesseProcess.m	(revision 16)
@@ -20,6 +20,4 @@
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //  02111-1307, USA.
-
-// njr changes: 
 
 #import "DeVercruesseProcess.h"
@@ -102,10 +100,22 @@
 - (NSString *)executableLoc;
 {
-    CFURLRef bundleURL = CFURLCreateWithFileSystemPath(NULL, (CFStringRef) [self loc], kCFURLPOSIXPathStyle, NO);
-    CFBundleRef bundleRef = CFBundleCreate(NULL, bundleURL);
+    CFStringRef bundleLoc = (CFStringRef) [self loc];
+    CFURLRef bundleURL;
+    CFBundleRef bundleRef;
+
+    if (bundleLoc == NULL) {
+        // GetProcessBundleLocation returns NULL on 10.1.5 for certain CFM Carbon applications (BBEdit 6.5.3) - njr
+        return nil; // XXX should really handle this better, but for the purposes of F-Script Anywhere, we donÕt care if itÕs not a Carbon app, and this works fine going forward.
+    }
+    
+    bundleURL = CFURLCreateWithFileSystemPath(NULL, bundleLoc, kCFURLPOSIXPathStyle, NO);
+    bundleRef = CFBundleCreate(NULL, bundleURL);
 
     if (bundleRef == NULL) {
+        BOOL isDir;
         CFRelease(bundleURL);
-        return nil; // not a bundle
+        if ([[NSFileManager defaultManager] fileExistsAtPath: [self loc] isDirectory: &isDir] && !isDir)
+            return [self loc];
+        return nil; // not a bundle or file
     } else {
         CFURLRef execURL = CFBundleCopyExecutableURL(bundleRef);
@@ -144,24 +154,8 @@
     char		buffer[1025];
     CFStringRef		pName;
-    NSBundle		*b;
     
     
     if( !name )
     {
-        if( [self loc] )
-        {
-            b = [NSBundle bundleWithPath:loc];
-            if( b )
-            {
-                name = [b localizedStringForKey:@"CFBundleName" value:@"_AsM_nO_nAmE_" table:@"InfoPlist"];
-                
-                if( [name isEqualToString:@"_AsM_nO_nAmE_"] )
-                    name = [[b infoDictionary] objectForKey:@"CFBundleName"];
-                
-                if( name )
-                    [name retain];
-            }
-        }
-        
         if( !name && (CopyProcessName( &psn, &pName) == noErr) )    // with thanks to Dylan Ashe
         {
@@ -173,7 +167,23 @@
             CFRelease( pName);
         }
-    }
-    
-    return name;
+        // CFBundleName code demoted to alternate method because it was causing plist processing issues in Jaguar, yet CopyProcessName doesn't work for everything, e.g. Help Viewer - njr
+        else if( [self loc] )
+        {
+            NSBundle *b = [NSBundle bundleWithPath:loc];
+            if( b )
+            {
+                name = [b localizedStringForKey:@"CFBundleName" value:@"_AsM_nO_nAmE_" table:@"InfoPlist"];
+
+                if( [name isEqualToString:@"_AsM_nO_nAmE_"] )
+                    name = [[b infoDictionary] objectForKey:@"CFBundleName"];
+
+                if( name )
+                    [name retain];
+            }
+        }
+        
+   }
+
+    return name ? name : @"Çunknown nameÈ";
 }
 
Index: trunk/Cocoa/F-Script Anywhere/Source/English.lproj/FSAViewAssociationPanel.nib/info.nib
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/English.lproj/FSAViewAssociationPanel.nib/info.nib	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/English.lproj/FSAViewAssociationPanel.nib/info.nib	(revision 16)
@@ -4,5 +4,5 @@
 <dict>
 	<key>IBDocumentLocation</key>
-	<string>558 -6 356 240 0 0 1600 1178 </string>
+	<string>133 92 356 240 0 0 1600 1178 </string>
 	<key>IBFramework Version</key>
 	<string>263.2</string>
Index: trunk/Cocoa/F-Script Anywhere/Source/English.lproj/MainMenu.nib/info.nib
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/English.lproj/MainMenu.nib/info.nib	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/English.lproj/MainMenu.nib/info.nib	(revision 16)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
-<plist version="0.9">
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
 <dict>
 	<key>IBDocumentLocation</key>
@@ -11,5 +11,5 @@
 	</dict>
 	<key>IBFramework Version</key>
-	<string>263.2</string>
+	<string>283.0</string>
 	<key>IBOpenObjects</key>
 	<array>
@@ -18,5 +18,5 @@
 	</array>
 	<key>IBSystem Version</key>
-	<string>5S66</string>
+	<string>6C115</string>
 </dict>
 </plist>
Index: trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/nicholas.pbxuser
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/nicholas.pbxuser	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/nicholas.pbxuser	(revision 16)
@@ -14,8 +14,9 @@
 		activeTarget = 29B97326FDCFA39411CA2CEA;
 		addToTargets = (
+			103DFC1B016C16650C000109,
 		);
 		breakpoints = (
 			F5184FB202DF90C801AEEDB1,
-			F5FF507302E50EB501AEEDB1,
+			F57D63130318A6D601AEEDB1,
 		);
 		executables = (
@@ -23,15 +24,16 @@
 		);
 		perUserDictionary = {
-			PBXPerProjectTemplateStateSaveDate = 48675460;
-			"PBXTemplateGeometry-F5CA7EC8015C06940DCA290F" = {
-				ContentSize = "{705, 569}";
+			PBXPerProjectTemplateStateSaveDate = 55214324;
+			"PBXTemplateGeometry-F5314676015831810DCA290F" = {
+				ContentSize = "{685, 434}";
 				LeftSlideOut = {
 					Collapsed = NO;
-					Frame = "{{0, 0}, {705, 569}}";
+					Frame = "{{0, 23}, {685, 411}}";
 					Split0 = {
+						ActiveTab = 2;
 						Collapsed = NO;
-						Frame = "{{0, 0}, {705, 569}}";
+						Frame = "{{0, 0}, {685, 411}}";
 						Split0 = {
-							Frame = "{{0, 0}, {705, 569}}";
+							Frame = "{{0, 221}, {685, 190}}";
 						};
 						SplitCount = 1;
@@ -39,20 +41,20 @@
 							Debugger = {
 								Collapsed = NO;
-								Frame = "{{0, 0}, {484, 208}}";
+								Frame = "{{0, 0}, {952, 321}}";
 								Split0 = {
-									Frame = "{{0, 24}, {484, 184}}";
+									Frame = "{{0, 24}, {952, 297}}";
 									Split0 = {
-										Frame = "{{0, 0}, {236, 184}}";
+										Frame = "{{0, 0}, {468, 297}}";
 									};
 									Split1 = {
 										DebugVariablesTableConfiguration = (
 											Name,
-											48.80299,
+											126.803,
 											Value,
-											71.07401,
+											150.074,
 											Summary,
-											93.123,
+											172.123,
 										);
-										Frame = "{{245, 0}, {239, 184}}";
+										Frame = "{{477, 0}, {475, 297}}";
 									};
 									SplitCount = 2;
@@ -68,18 +70,18 @@
 								TabsVisible = YES;
 							};
-							Frame = "{{0, 0}, {484, 208}}";
+							Frame = "{{0, 0}, {952, 321}}";
 							LauncherConfigVersion = 7;
 						};
 						Tab1 = {
-							Frame = "{{0, 0}, {522, 208}}";
+							Frame = "{{0, 0}, {781, 452}}";
 							LauncherConfigVersion = 3;
 							Runner = {
-								Frame = "{{0, 0}, {522, 208}}";
+								Frame = "{{0, 0}, {781, 452}}";
 							};
 						};
 						Tab2 = {
-							BuildMessageFrame = "{{0, 0}, {809, 410}}";
-							BuildTranscriptFrame = "{{0, 419}, {809, 119}}";
-							Frame = "{{0, 0}, {807, 536}}";
+							BuildMessageFrame = "{{0, 0}, {687, 149}}";
+							BuildTranscriptFrame = "{{0, 158}, {687, 59}}";
+							Frame = "{{0, 0}, {685, 215}}";
 						};
 						Tab3 = {
@@ -120,35 +122,13 @@
 					};
 					Tab3 = {
-						Frame = "{{0, 0}, {222, 536}}";
-						Split0 = {
-							Frame = "{{0, 0}, {222, 379}}";
-							TargetTreeTableConfiguration = (
-								ActiveTarget,
-								16,
-								TargetName,
-								190,
-							);
-						};
-						Split1 = {
-							BuildStyleTreeTableConfiguration = (
-								IsActive,
-								16,
-								Name,
-								191,
-							);
-							Frame = "{{0, 388}, {222, 148}}";
-						};
-						SplitCount = 2;
+						Frame = "{{0, 0}, {200, 100}}";
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
 					};
 					Tab4 = {
-						ExecutableTreeTableConfiguration = (
-							ActiveExecutable,
-							16,
-							ExecutableName,
-							217,
-						);
-						Frame = "{{0, 0}, {250, 528}}";
-					};
-					Tab5 = {
 						BreakpointsTreeTableConfiguration = (
 							breakpointColumn,
@@ -159,11 +139,11 @@
 						Frame = "{{0, 0}, {250, 100}}";
 					};
-					TabCount = 6;
+					TabCount = 5;
 					TabsVisible = NO;
 				};
-				StatusViewVisible = NO;
-				Template = F5CA7EC8015C06940DCA290F;
+				StatusViewVisible = YES;
+				Template = F5314676015831810DCA290F;
 				ToolbarVisible = YES;
-				WindowLocation = "{388, 507}";
+				WindowLocation = "{589, 87}";
 			};
 			"PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = {
@@ -191,9 +171,9 @@
 										DebugVariablesTableConfiguration = (
 											Name,
-											48.80299,
+											123,
 											Value,
-											71.07401,
+											85,
 											Summary,
-											93.123,
+											62.123,
 										);
 										Frame = "{{245, 0}, {239, 184}}";
@@ -264,34 +244,12 @@
 					Tab3 = {
 						Frame = "{{0, 0}, {200, 557}}";
-						Split0 = {
-							Frame = "{{0, 0}, {200, 270}}";
-							TargetTreeTableConfiguration = (
-								ActiveTarget,
-								16,
-								TargetName,
-								168,
-							);
-						};
-						Split1 = {
-							BuildStyleTreeTableConfiguration = (
-								IsActive,
-								16,
-								Name,
-								169,
-							);
-							Frame = "{{0, 279}, {200, 278}}";
-						};
-						SplitCount = 2;
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
 					};
 					Tab4 = {
-						ExecutableTreeTableConfiguration = (
-							ActiveExecutable,
-							16,
-							ExecutableName,
-							217,
-						);
-						Frame = "{{0, 0}, {250, 100}}";
-					};
-					Tab5 = {
 						BreakpointsTreeTableConfiguration = (
 							breakpointColumn,
@@ -302,5 +260,5 @@
 						Frame = "{{0, 0}, {250, 100}}";
 					};
-					TabCount = 6;
+					TabCount = 5;
 					TabsVisible = NO;
 				};
@@ -308,5 +266,128 @@
 				Template = F5CA7ECB015C094F0DCA290F;
 				ToolbarVisible = NO;
-				WindowLocation = "{48, 349}";
+				WindowLocation = "{489, 236}";
+			};
+			"PBXTemplateGeometry-F5CA7ECC015C09990DCA290F" = {
+				ContentSize = "{773, 558}";
+				LeftSlideOut = {
+					Collapsed = NO;
+					Frame = "{{0, 23}, {773, 535}}";
+					Split0 = {
+						ActiveTab = 0;
+						Collapsed = NO;
+						Frame = "{{24, 0}, {749, 535}}";
+						Split0 = {
+							Frame = "{{0, 273}, {749, 262}}";
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Debugger = {
+								ActiveTab = 1;
+								Collapsed = NO;
+								Frame = "{{0, 0}, {749, 267}}";
+								Split0 = {
+									Frame = "{{0, 169}, {749, 98}}";
+									Split0 = {
+										Frame = "{{0, 0}, {366, 98}}";
+									};
+									Split1 = {
+										DebugVariablesTableConfiguration = (
+											Name,
+											93.80298,
+											Value,
+											116.074,
+											Summary,
+											138.123,
+										);
+										Frame = "{{375, 0}, {374, 98}}";
+									};
+									SplitCount = 2;
+								};
+								SplitCount = 1;
+								Tab0 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								Tab1 = {
+									Frame = "{{0, 0}, {749, 145}}";
+								};
+								TabCount = 2;
+								TabsVisible = YES;
+							};
+							Frame = "{{0, 0}, {749, 267}}";
+							LauncherConfigVersion = 7;
+						};
+						Tab1 = {
+							Frame = "{{0, 0}, {664, 208}}";
+							LauncherConfigVersion = 3;
+							Runner = {
+								Frame = "{{0, 0}, {664, 208}}";
+							};
+						};
+						Tab2 = {
+							BuildMessageFrame = "{{0, 0}, {666, 43}}";
+							BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
+							Frame = "{{0, 0}, {664, 50}}";
+						};
+						Tab3 = {
+							Frame = "{{0, 0}, {612, 295}}";
+						};
+						TabCount = 4;
+						TabsVisible = NO;
+					};
+					SplitCount = 1;
+					Tab0 = {
+						Frame = "{{0, 0}, {313, 531}}";
+						GroupTreeTableConfiguration = (
+							TargetStatusColumn,
+							18,
+							MainColumn,
+							280,
+						);
+					};
+					Tab1 = {
+						ClassesFrame = "{{0, 0}, {280, 398}}";
+						ClassesTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXClassColumnIdentifier,
+							237,
+						);
+						Frame = "{{0, 0}, {278, 659}}";
+						MembersFrame = "{{0, 407}, {280, 252}}";
+						MembersTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXMethodColumnIdentifier,
+							236,
+						);
+					};
+					Tab2 = {
+						Frame = "{{0, 0}, {200, 100}}";
+					};
+					Tab3 = {
+						Frame = "{{0, 0}, {200, 557}}";
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
+					};
+					Tab4 = {
+						BreakpointsTreeTableConfiguration = (
+							breakpointColumn,
+							197,
+							enabledColumn,
+							31,
+						);
+						Frame = "{{0, 0}, {250, 100}}";
+					};
+					TabCount = 5;
+					TabsVisible = YES;
+				};
+				StatusViewVisible = YES;
+				Template = F5CA7ECC015C09990DCA290F;
+				ToolbarVisible = YES;
+				WindowLocation = "{13, 212}";
 			};
 			PBXWorkspaceContents = (
@@ -315,7 +396,26 @@
 						Split0 = {
 							Split0 = {
+								NavContent0 = {
+									bookmark = F5486B9D034A85A801AEEDB1;
+									history = (
+										F5486B91034A85A801AEEDB1,
+										F5486B92034A85A801AEEDB1,
+										F5486B93034A85A801AEEDB1,
+										F5486B94034A85A801AEEDB1,
+										F5486B95034A85A801AEEDB1,
+									);
+									prevStack = (
+										F5486B96034A85A801AEEDB1,
+										F5486B97034A85A801AEEDB1,
+										F5486B98034A85A801AEEDB1,
+										F5486B99034A85A801AEEDB1,
+										F5486B9A034A85A801AEEDB1,
+										F5486B9B034A85A801AEEDB1,
+										F5486B9C034A85A801AEEDB1,
+									);
+								};
 								NavCount = 1;
 								NavGeometry0 = {
-									Frame = "{{0, 0}, {150, 530}}";
+									Frame = "{{0, 0}, {643, 567}}";
 									NavBarVisible = YES;
 								};
@@ -343,8 +443,5 @@
 							OptionsSetName = "Hierarchy, all classes";
 						};
-						Tab3 = {
-							SplitCount = 2;
-						};
-						TabCount = 6;
+						TabCount = 5;
 					};
 				},
@@ -381,90 +478,5 @@
 							OptionsSetName = "Hierarchy, all classes";
 						};
-						Tab3 = {
-							SplitCount = 2;
-						};
-						TabCount = 6;
-					};
-				},
-				{
-					LeftSlideOut = {
-						Split0 = {
-							Split0 = {
-								NavCount = 1;
-								NavGeometry0 = {
-									Frame = "{{0, 0}, {618, 150}}";
-									NavBarVisible = YES;
-								};
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Debugger = {
-									Split0 = {
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									TabCount = 2;
-								};
-								LauncherConfigVersion = 7;
-							};
-							Tab1 = {
-								LauncherConfigVersion = 3;
-								Runner = {
-								};
-							};
-							TabCount = 4;
-						};
-						SplitCount = 1;
-						Tab1 = {
-							OptionsSetName = "Hierarchy, all classes";
-						};
-						Tab3 = {
-							SplitCount = 2;
-						};
-						TabCount = 6;
-					};
-				},
-				{
-					LeftSlideOut = {
-						Split0 = {
-							Split0 = {
-								NavContent0 = {
-									bookmark = F53CD13702E6A45601AEEDB1;
-									history = (
-										F50BD5BE02E6897C01AEEDB1,
-									);
-								};
-								NavCount = 1;
-								NavGeometry0 = {
-									Frame = "{{0, 0}, {668, 621}}";
-									NavBarVisible = YES;
-								};
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Debugger = {
-									Split0 = {
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									TabCount = 2;
-								};
-								LauncherConfigVersion = 7;
-							};
-							Tab1 = {
-								LauncherConfigVersion = 3;
-								Runner = {
-								};
-							};
-							TabCount = 4;
-						};
-						SplitCount = 1;
-						Tab1 = {
-							OptionsSetName = "Hierarchy, all classes";
-						};
-						Tab3 = {
-							SplitCount = 2;
-						};
-						TabCount = 6;
+						TabCount = 5;
 					};
 				},
@@ -472,14 +484,14 @@
 			PBXWorkspaceGeometries = (
 				{
-					ContentSize = "{352, 553}";
+					ContentSize = "{927, 590}";
 					LeftSlideOut = {
 						ActiveTab = 0;
-						Collapsed = YES;
-						Frame = "{{0, 23}, {352, 530}}";
+						Collapsed = NO;
+						Frame = "{{0, 23}, {927, 567}}";
 						Split0 = {
 							Collapsed = NO;
-							Frame = "{{1e+06, 1e+06}, {0, 530}}";
+							Frame = "{{284, 0}, {643, 567}}";
 							Split0 = {
-								Frame = "{{0, 0}, {0, 530}}";
+								Frame = "{{0, 0}, {643, 567}}";
 							};
 							SplitCount = 1;
@@ -487,20 +499,20 @@
 								Debugger = {
 									Collapsed = NO;
-									Frame = "{{0, 0}, {484, 208}}";
+									Frame = "{{0, 0}, {681, 289}}";
 									Split0 = {
-										Frame = "{{0, 24}, {484, 184}}";
+										Frame = "{{0, 24}, {681, 265}}";
 										Split0 = {
-											Frame = "{{0, 0}, {236, 184}}";
+											Frame = "{{0, 0}, {333, 265}}";
 										};
 										Split1 = {
 											DebugVariablesTableConfiguration = (
 												Name,
-												48.80299,
+												82.80298,
 												Value,
-												71.07401,
+												104.074,
 												Summary,
-												93.123,
+												126.123,
 											);
-											Frame = "{{245, 0}, {239, 184}}";
+											Frame = "{{342, 0}, {339, 265}}";
 										};
 										SplitCount = 2;
@@ -516,21 +528,21 @@
 									TabsVisible = YES;
 								};
-								Frame = "{{0, 0}, {484, 208}}";
+								Frame = "{{0, 0}, {681, 289}}";
 								LauncherConfigVersion = 7;
 							};
 							Tab1 = {
-								Frame = "{{0, 0}, {664, 208}}";
+								Frame = "{{0, 0}, {681, 120}}";
 								LauncherConfigVersion = 3;
 								Runner = {
-									Frame = "{{0, 0}, {664, 208}}";
+									Frame = "{{0, 0}, {681, 120}}";
 								};
 							};
 							Tab2 = {
-								BuildMessageFrame = "{{0, 0}, {666, 43}}";
-								BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
-								Frame = "{{0, 0}, {664, 50}}";
+								BuildMessageFrame = "{{0, 0}, {683, 127}}";
+								BuildTranscriptFrame = "{{0, 136}, {683, 100}}";
+								Frame = "{{0, 0}, {681, 234}}";
 							};
 							Tab3 = {
-								Frame = "{{0, 0}, {612, 295}}";
+								Frame = "{{0, 0}, {681, 238}}";
 							};
 							TabCount = 4;
@@ -539,79 +551,57 @@
 						SplitCount = 1;
 						Tab0 = {
-							Frame = "{{0, 0}, {328, 530}}";
+							Frame = "{{0, 0}, {260, 567}}";
 							GroupTreeTableConfiguration = (
 								TargetStatusColumn,
 								18,
 								MainColumn,
-								295,
+								227,
 							);
 						};
 						Tab1 = {
-							ClassesFrame = "{{0, 0}, {343, 348}}";
+							ClassesFrame = "{{0, 0}, {250, 333}}";
 							ClassesTreeTableConfiguration = (
 								PBXBookColumnIdentifier,
 								20,
 								PBXClassColumnIdentifier,
-								300,
+								207,
 							);
-							Frame = "{{0, 0}, {341, 578}}";
-							MembersFrame = "{{0, 357}, {343, 221}}";
+							Frame = "{{0, 0}, {248, 554}}";
+							MembersFrame = "{{0, 342}, {250, 212}}";
 							MembersTreeTableConfiguration = (
 								PBXBookColumnIdentifier,
 								20,
 								PBXMethodColumnIdentifier,
-								299,
+								206,
 							);
 						};
 						Tab2 = {
-							Frame = "{{0, 0}, {319, 576}}";
+							Frame = "{{0, 0}, {217, 554}}";
 						};
 						Tab3 = {
-							Frame = "{{0, 0}, {328, 530}}";
-							Split0 = {
-								Frame = "{{0, 0}, {328, 255}}";
-								TargetTreeTableConfiguration = (
-									ActiveTarget,
-									16,
-									TargetName,
-									296,
-								);
-							};
-							Split1 = {
-								BuildStyleTreeTableConfiguration = (
-									IsActive,
-									16,
-									Name,
-									297,
-								);
-								Frame = "{{0, 264}, {328, 266}}";
-							};
-							SplitCount = 2;
+							Frame = "{{0, 0}, {239, 554}}";
+							TargetTableConfiguration = (
+								ActiveObject,
+								16,
+								ObjectNames,
+								206.296,
+							);
 						};
 						Tab4 = {
-							ExecutableTreeTableConfiguration = (
-								ActiveExecutable,
-								16,
-								ExecutableName,
-								286,
-							);
-							Frame = "{{0, 0}, {319, 576}}";
-						};
-						Tab5 = {
 							BreakpointsTreeTableConfiguration = (
 								breakpointColumn,
-								266,
+								197,
 								enabledColumn,
 								31,
 							);
-							Frame = "{{0, 0}, {319, 576}}";
-						};
-						TabCount = 6;
+							Frame = "{{0, 0}, {250, 554}}";
+						};
+						TabCount = 5;
 						TabsVisible = YES;
 					};
 					StatusViewVisible = YES;
-					Template = F5E465990156DFB90DCA290F;
+					Template = 64ABBB4501FA494900185B06;
 					ToolbarVisible = YES;
-					WindowLocation = "{4, 556}";
+					WindowLocation = "{9, 520}";
 				},
 				{
@@ -640,9 +630,9 @@
 											DebugVariablesTableConfiguration = (
 												Name,
-												102.803,
+												123,
 												Value,
-												125.074,
+												85,
 												Summary,
-												147.123,
+												167.123,
 											);
 											Frame = "{{403, 0}, {401, 297}}";
@@ -713,34 +703,12 @@
 						Tab3 = {
 							Frame = "{{0, 0}, {200, 386}}";
-							Split0 = {
-								Frame = "{{0, 0}, {200, 186}}";
-								TargetTreeTableConfiguration = (
-									ActiveTarget,
-									16,
-									TargetName,
-									168,
-								);
-							};
-							Split1 = {
-								BuildStyleTreeTableConfiguration = (
-									IsActive,
-									16,
-									Name,
-									169,
-								);
-								Frame = "{{0, 195}, {200, 191}}";
-							};
-							SplitCount = 2;
+							TargetTableConfiguration = (
+								ActiveObject,
+								16,
+								ObjectNames,
+								202.296,
+							);
 						};
 						Tab4 = {
-							ExecutableTreeTableConfiguration = (
-								ActiveExecutable,
-								16,
-								ExecutableName,
-								217,
-							);
-							Frame = "{{0, 0}, {250, 386}}";
-						};
-						Tab5 = {
 							BreakpointsTreeTableConfiguration = (
 								breakpointColumn,
@@ -749,7 +717,7 @@
 								31,
 							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						TabCount = 6;
+							Frame = "{{0, 0}, {250, 386}}";
+						};
+						TabCount = 5;
 						TabsVisible = NO;
 					};
@@ -757,299 +725,23 @@
 					Template = F5534CB2020F3F8A0DCA290F;
 					ToolbarVisible = YES;
-					WindowLocation = "{397, 507}";
-				},
-				{
-					ContentSize = "{618, 257}";
-					LeftSlideOut = {
-						Collapsed = NO;
-						Frame = "{{0, 23}, {618, 234}}";
-						Split0 = {
-							ActiveTab = 2;
-							Collapsed = YES;
-							Frame = "{{0, 0}, {618, 234}}";
-							Split0 = {
-								Frame = "{{1e+06, 1e+06}, {618, 0}}";
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Debugger = {
-									Collapsed = NO;
-									Frame = "{{0, 0}, {952, 321}}";
-									Split0 = {
-										Frame = "{{0, 24}, {952, 297}}";
-										Split0 = {
-											Frame = "{{0, 0}, {468, 297}}";
-										};
-										Split1 = {
-											DebugVariablesTableConfiguration = (
-												Name,
-												126.803,
-												Value,
-												150.074,
-												Summary,
-												172.123,
-											);
-											Frame = "{{477, 0}, {475, 297}}";
-										};
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									Tab0 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									Tab1 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									TabCount = 2;
-									TabsVisible = YES;
-								};
-								Frame = "{{0, 0}, {952, 321}}";
-								LauncherConfigVersion = 7;
-							};
-							Tab1 = {
-								Frame = "{{0, 0}, {781, 452}}";
-								LauncherConfigVersion = 3;
-								Runner = {
-									Frame = "{{0, 0}, {781, 452}}";
-								};
-							};
-							Tab2 = {
-								BuildMessageFrame = "{{0, 0}, {620, 123}}";
-								BuildTranscriptFrame = "{{0, 132}, {620, 98}}";
-								Frame = "{{0, 0}, {618, 228}}";
-							};
-							Tab3 = {
-								Frame = "{{0, 0}, {612, 295}}";
-							};
-							TabCount = 4;
-							TabsVisible = NO;
-						};
-						SplitCount = 1;
-						Tab0 = {
-							Frame = "{{0, 0}, {300, 533}}";
-							GroupTreeTableConfiguration = (
-								TargetStatusColumn,
-								18,
-								MainColumn,
-								267,
-							);
-						};
-						Tab1 = {
-							ClassesFrame = "{{0, 0}, {280, 398}}";
-							ClassesTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXClassColumnIdentifier,
-								237,
-							);
-							Frame = "{{0, 0}, {278, 659}}";
-							MembersFrame = "{{0, 407}, {280, 252}}";
-							MembersTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXMethodColumnIdentifier,
-								236,
-							);
-						};
-						Tab2 = {
-							Frame = "{{0, 0}, {200, 100}}";
-						};
-						Tab3 = {
-							Frame = "{{0, 0}, {200, 100}}";
-							Split0 = {
-								Frame = "{{0, 0}, {200, 45}}";
-								TargetTreeTableConfiguration = (
-									ActiveTarget,
-									16,
-									TargetName,
-									168,
-								);
-							};
-							Split1 = {
-								BuildStyleTreeTableConfiguration = (
-									IsActive,
-									16,
-									Name,
-									169,
-								);
-								Frame = "{{0, 54}, {200, 46}}";
-							};
-							SplitCount = 2;
-						};
-						Tab4 = {
-							ExecutableTreeTableConfiguration = (
-								ActiveExecutable,
-								16,
-								ExecutableName,
-								217,
-							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						Tab5 = {
-							BreakpointsTreeTableConfiguration = (
-								breakpointColumn,
-								197,
-								enabledColumn,
-								31,
-							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						TabCount = 6;
-						TabsVisible = NO;
-					};
-					StatusViewVisible = YES;
-					Template = F5314676015831810DCA290F;
-					ToolbarVisible = YES;
-					WindowLocation = "{453, 592}";
-				},
-				{
-					ContentSize = "{668, 621}";
-					LeftSlideOut = {
-						Collapsed = NO;
-						Frame = "{{0, 0}, {668, 621}}";
-						Split0 = {
-							Collapsed = NO;
-							Frame = "{{0, 0}, {668, 621}}";
-							Split0 = {
-								Frame = "{{0, 0}, {668, 621}}";
-							};
-							SplitCount = 1;
-							Tab0 = {
-								Debugger = {
-									Collapsed = NO;
-									Frame = "{{0, 0}, {484, 208}}";
-									Split0 = {
-										Frame = "{{0, 24}, {484, 184}}";
-										Split0 = {
-											Frame = "{{0, 0}, {236, 184}}";
-										};
-										Split1 = {
-											DebugVariablesTableConfiguration = (
-												Name,
-												48.80299,
-												Value,
-												71.07401,
-												Summary,
-												93.123,
-											);
-											Frame = "{{245, 0}, {239, 184}}";
-										};
-										SplitCount = 2;
-									};
-									SplitCount = 1;
-									Tab0 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									Tab1 = {
-										Frame = "{{0, 0}, {100, 50}}";
-									};
-									TabCount = 2;
-									TabsVisible = YES;
-								};
-								Frame = "{{0, 0}, {484, 208}}";
-								LauncherConfigVersion = 7;
-							};
-							Tab1 = {
-								Frame = "{{0, 0}, {664, 208}}";
-								LauncherConfigVersion = 3;
-								Runner = {
-									Frame = "{{0, 0}, {664, 208}}";
-								};
-							};
-							Tab2 = {
-								BuildMessageFrame = "{{0, 0}, {666, 43}}";
-								BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
-								Frame = "{{0, 0}, {664, 50}}";
-							};
-							Tab3 = {
-								Frame = "{{0, 0}, {612, 295}}";
-							};
-							TabCount = 4;
-							TabsVisible = NO;
-						};
-						SplitCount = 1;
-						Tab0 = {
-							Frame = "{{0, 0}, {313, 531}}";
-							GroupTreeTableConfiguration = (
-								TargetStatusColumn,
-								18,
-								MainColumn,
-								280,
-							);
-						};
-						Tab1 = {
-							ClassesFrame = "{{0, 0}, {280, 398}}";
-							ClassesTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXClassColumnIdentifier,
-								237,
-							);
-							Frame = "{{0, 0}, {278, 659}}";
-							MembersFrame = "{{0, 407}, {280, 252}}";
-							MembersTreeTableConfiguration = (
-								PBXBookColumnIdentifier,
-								20,
-								PBXMethodColumnIdentifier,
-								236,
-							);
-						};
-						Tab2 = {
-							Frame = "{{0, 0}, {200, 100}}";
-						};
-						Tab3 = {
-							Frame = "{{0, 0}, {200, 557}}";
-							Split0 = {
-								Frame = "{{0, 0}, {200, 270}}";
-								TargetTreeTableConfiguration = (
-									ActiveTarget,
-									16,
-									TargetName,
-									168,
-								);
-							};
-							Split1 = {
-								BuildStyleTreeTableConfiguration = (
-									IsActive,
-									16,
-									Name,
-									169,
-								);
-								Frame = "{{0, 279}, {200, 278}}";
-							};
-							SplitCount = 2;
-						};
-						Tab4 = {
-							ExecutableTreeTableConfiguration = (
-								ActiveExecutable,
-								16,
-								ExecutableName,
-								217,
-							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						Tab5 = {
-							BreakpointsTreeTableConfiguration = (
-								breakpointColumn,
-								197,
-								enabledColumn,
-								31,
-							);
-							Frame = "{{0, 0}, {250, 100}}";
-						};
-						TabCount = 6;
-						TabsVisible = NO;
-					};
-					StatusViewVisible = NO;
-					Template = F5CA7ECB015C094F0DCA290F;
-					ToolbarVisible = NO;
-					WindowLocation = "{385, 535}";
+					WindowLocation = "{4, 633}";
 				},
 			);
-			PBXWorkspaceStateSaveDate = 48675460;
+			PBXWorkspaceStateSaveDate = 55214324;
 		};
 		perUserProjectItems = {
-			F50BD5BE02E6897C01AEEDB1 = F50BD5BE02E6897C01AEEDB1;
-			F53CD13702E6A45601AEEDB1 = F53CD13702E6A45601AEEDB1;
+			F5486B91034A85A801AEEDB1 = F5486B91034A85A801AEEDB1;
+			F5486B92034A85A801AEEDB1 = F5486B92034A85A801AEEDB1;
+			F5486B93034A85A801AEEDB1 = F5486B93034A85A801AEEDB1;
+			F5486B94034A85A801AEEDB1 = F5486B94034A85A801AEEDB1;
+			F5486B95034A85A801AEEDB1 = F5486B95034A85A801AEEDB1;
+			F5486B96034A85A801AEEDB1 = F5486B96034A85A801AEEDB1;
+			F5486B97034A85A801AEEDB1 = F5486B97034A85A801AEEDB1;
+			F5486B98034A85A801AEEDB1 = F5486B98034A85A801AEEDB1;
+			F5486B99034A85A801AEEDB1 = F5486B99034A85A801AEEDB1;
+			F5486B9A034A85A801AEEDB1 = F5486B9A034A85A801AEEDB1;
+			F5486B9B034A85A801AEEDB1 = F5486B9B034A85A801AEEDB1;
+			F5486B9C034A85A801AEEDB1 = F5486B9C034A85A801AEEDB1;
+			F5486B9D034A85A801AEEDB1 = F5486B9D034A85A801AEEDB1;
 		};
 		projectwideBuildSettings = {
@@ -1064,29 +756,139 @@
 		);
 	};
-	F50BD5BE02E6897C01AEEDB1 = {
-		fRef = F5FF50BD02E53B9E01AEEDB1;
-		isa = PBXTextBookmark;
-		name = "FSAViewAssociationController.m: 94";
-		rLen = 0;
-		rLoc = 3104;
-		rType = 0;
-		vrLen = 1429;
-		vrLoc = 2322;
-	};
 	F5184FB202DF90C801AEEDB1 = {
 		fileReference = F5EFC2CA020A6CD101AEEDB1;
 		isa = PBXFileBreakpoint;
 		lineNumber = 162;
-		state = 1;
-	};
-	F53CD13702E6A45601AEEDB1 = {
+		state = 2;
+	};
+	F5486B91034A85A801AEEDB1 = {
+		fRef = F5EFC2C9020A6CD101AEEDB1;
+		isa = PBXTextBookmark;
+		name = "DeVercruesseProcess.m: initWithPSN:";
+		rLen = 0;
+		rLoc = 2022;
+		rType = 0;
+		vrLen = 863;
+		vrLoc = 1426;
+	};
+	F5486B92034A85A801AEEDB1 = {
 		fRef = F5FF50BD02E53B9E01AEEDB1;
 		isa = PBXTextBookmark;
-		name = "FSAViewAssociationController.m: 94";
-		rLen = 0;
-		rLoc = 3104;
-		rType = 0;
-		vrLen = 1429;
-		vrLoc = 2322;
+		name = "FSAViewAssociationController.m: __STDC__";
+		rLen = 0;
+		rLoc = 179;
+		rType = 0;
+		vrLen = 1261;
+		vrLoc = 0;
+	};
+	F5486B93034A85A801AEEDB1 = {
+		fRef = F5FD788A034828E101AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAWindowManager.m: 270";
+		rLen = 0;
+		rLoc = 8244;
+		rType = 0;
+		vrLen = 1209;
+		vrLoc = 6919;
+	};
+	F5486B94034A85A801AEEDB1 = {
+		fRef = F574ADDB020ACAC801AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAController.m: FSA_associateWithInterface:";
+		rLen = 0;
+		rLoc = 8299;
+		rType = 0;
+		vrLen = 1094;
+		vrLoc = 7296;
+	};
+	F5486B95034A85A801AEEDB1 = {
+		fRef = F523EA2B020CF06A01AEEC37;
+		isa = PBXTextBookmark;
+		name = "FSAnywhere.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 319;
+		vrLoc = 0;
+	};
+	F5486B96034A85A801AEEDB1 = {
+		fRef = F5EFC2C9020A6CD101AEEDB1;
+		isa = PBXTextBookmark;
+		name = "DeVercruesseProcess.m: initWithPSN:";
+		rLen = 0;
+		rLoc = 2022;
+		rType = 0;
+		vrLen = 863;
+		vrLoc = 1426;
+	};
+	F5486B97034A85A801AEEDB1 = {
+		fRef = F523EA2B020CF06A01AEEC37;
+		isa = PBXTextBookmark;
+		name = "FSAnywhere.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 319;
+		vrLoc = 0;
+	};
+	F5486B98034A85A801AEEDB1 = {
+		fRef = F574ADDB020ACAC801AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAController.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1163;
+		vrLoc = 0;
+	};
+	F5486B99034A85A801AEEDB1 = {
+		fRef = F5FF50BD02E53B9E01AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAViewAssociationController.m: __STDC__";
+		rLen = 0;
+		rLoc = 179;
+		rType = 0;
+		vrLen = 1261;
+		vrLoc = 0;
+	};
+	F5486B9A034A85A801AEEDB1 = {
+		fRef = F574ADDB020ACAC801AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAController.m: FSA_associateWithInterface:";
+		rLen = 0;
+		rLoc = 8336;
+		rType = 0;
+		vrLen = 1027;
+		vrLoc = 7296;
+	};
+	F5486B9B034A85A801AEEDB1 = {
+		fRef = F5FD788A034828E101AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAWindowManager.m: 270";
+		rLen = 0;
+		rLoc = 8244;
+		rType = 0;
+		vrLen = 1209;
+		vrLoc = 6919;
+	};
+	F5486B9C034A85A801AEEDB1 = {
+		fRef = F574ADDB020ACAC801AEEDB1;
+		isa = PBXTextBookmark;
+		name = "FSAController.m: FSA_associateWithInterface:";
+		rLen = 0;
+		rLoc = 8299;
+		rType = 0;
+		vrLen = 1094;
+		vrLoc = 7296;
+	};
+	F5486B9D034A85A801AEEDB1 = {
+		fRef = F523EA2B020CF06A01AEEC37;
+		isa = PBXTextBookmark;
+		name = "FSAnywhere.h: 9";
+		rLen = 0;
+		rLoc = 176;
+		rType = 0;
+		vrLen = 319;
+		vrLoc = 0;
 	};
 	F574ADDB020ACAC801AEEDB1 = {
@@ -1094,4 +896,9 @@
 			sepNavWindowFrame = "{{15, 671}, {750, 502}}";
 		};
+	};
+	F57D63130318A6D601AEEDB1 = {
+		isa = PBXSymbolicBreakpoint;
+		state = 1;
+		symbolName = CFLog;
 	};
 	F59279F301FEA34701AEEC37 = {
@@ -1126,9 +933,3 @@
 		};
 	};
-	F5FF507302E50EB501AEEDB1 = {
-		fileReference = F5EFC2C9020A6CD101AEEDB1;
-		isa = PBXFileBreakpoint;
-		lineNumber = 92;
-		state = 1;
-	};
 }
Index: trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/project.pbxproj
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/project.pbxproj	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.pbproj/project.pbxproj	(revision 16)
@@ -107,6 +107,8 @@
 				F523EA2C020CF06A01AEEC37,
 				F5FF50BE02E53B9E01AEEDB1,
+				F5FD788B034828E101AEEDB1,
 			);
 			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		103DFC1D016C16650C000109 = {
@@ -117,6 +119,8 @@
 				F523EA2F020CF15B01AEEC37,
 				F5FF50BF02E53B9E01AEEDB1,
+				F5FD788C034828E101AEEDB1,
 			);
 			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		103DFC1E016C16650C000109 = {
@@ -127,4 +131,5 @@
 			);
 			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		103DFC1F016C16650C000109 = {
@@ -133,4 +138,5 @@
 			);
 			isa = PBXRezBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		103DFC20016C16E20C000109 = {
@@ -153,4 +159,5 @@
 			);
 			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		1058C7A1FEA54F0111CA2CBB = {
@@ -261,4 +268,6 @@
 				F5FF50BC02E53B9E01AEEDB1,
 				F5FF50BD02E53B9E01AEEDB1,
+				F5FD7889034828E101AEEDB1,
+				F5FD788A034828E101AEEDB1,
 			);
 			isa = PBXGroup;
@@ -279,4 +288,6 @@
 				089C165CFE840E0CC02AAC07,
 				F535E67D020CD95201AEEC37,
+				F5694E2702E96FFE01AEEDB1,
+				F57D63160319B6CA01AEEDB1,
 				F523EA29020CEF5001AEEC37,
 				F5680F83020D369A01AEEC37,
@@ -308,5 +319,4 @@
 				F59279FB01FED0C901AEEC37,
 				1058C7A1FEA54F0111CA2CBB,
-				F5EFC2D3020A6D2C01AEEDB1,
 				108927070180B1F40C000084,
 				F5EFC2C3020A6C2601AEEDB1,
@@ -333,4 +343,5 @@
 				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../Darwin source/Commands/Apple/cctools/libstuff\"";
 				OTHER_LDFLAGS = "-multiply_defined suppress -lstuff";
+				PREBINDING = NO;
 				PRODUCT_NAME = "F-Script Anywhere";
 				SECTORDER_FLAGS = "";
@@ -347,6 +358,6 @@
 			productReference = 17587328FF379C6511CA2CBB;
 			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">
-<plist version=\"0.9\">
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
 <dict>
 	<key>CFBundleDevelopmentRegion</key>
@@ -355,5 +366,5 @@
 	<string>F-Script Anywhere</string>
 	<key>CFBundleGetInfoString</key>
-	<string>F-Script Anywhere 1.1.2, © 2002 Nicholas Riley</string>
+	<string>F-Script Anywhere 1.1.5, © 2002 Nicholas Riley</string>
 	<key>CFBundleIconFile</key>
 	<string>Application icon</string>
@@ -367,9 +378,9 @@
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.1.2</string>
+	<string>1.1.5</string>
 	<key>CFBundleSignature</key>
 	<string>FSAn</string>
 	<key>CFBundleVersion</key>
-	<string>1.1.2</string>
+	<string>1.1.5</string>
 	<key>NSMainNibFile</key>
 	<string>MainMenu</string>
@@ -397,4 +408,5 @@
 			);
 			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		29B97328FDCFA39411CA2CEA = {
@@ -407,6 +419,9 @@
 				F5680F7C020D0D0401AEEC37,
 				F5FF50C202E5418F01AEEDB1,
+				F5694E2802E96FFE01AEEDB1,
+				F57D63170319B6CA01AEEDB1,
 			);
 			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		29B9732BFDCFA39411CA2CEA = {
@@ -427,4 +442,5 @@
 			);
 			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		29B9732CFDCFA39411CA2CEA = {
@@ -441,8 +457,8 @@
 				1058C7A3FEA54F0111CA2CBB,
 				108927080180B1F40C000084,
-				F5EFC2D4020A6D2C01AEEDB1,
 				F5EFC2D5020A6D3701AEEDB1,
 			);
 			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 //290
@@ -471,4 +487,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
+				OTHER_CFLAGS = "-DFSA_DEBUG=0";
 			};
 			isa = PBXBuildStyle;
@@ -557,4 +574,5 @@
 			);
 			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
 		};
 		F52D400402D2C7A501AEEDB1 = {
@@ -638,4 +656,5 @@
 			neededFileNames = (
 			);
+			runOnlyForDeploymentPostprocessing = 1;
 			shellPath = /bin/sh;
 			shellScript = "# Copy various README files into DSTROOT if building a root\n\nif [ z\"${DSTROOT}\" != z\"\" ] ; then\n    rm -f \"${DSTROOT}/Read Me\"\n    tr '\\n' '\\r' < \"Read Me\" > \"${DSTROOT}/Read Me\"\n    cp \"Read Me.rsrc\" \"${DSTROOT}/Read Me/..namedfork/rsrc\"\n    /Developer/Tools/SetFile -t 'ttro' -c 'ttxt' \"${DSTROOT}/Read Me\"\n        \n    # Create Darwin source directory\n    mkdir \"${DSTROOT}/Darwin source\"\n    \n    # Fix permissions so ditto doesn't lock people out\n    chmod -R a+rX,u+w \"${DSTROOT}\"\nfi";
@@ -647,4 +666,15 @@
 			refType = 2;
 		};
+		F5694E2702E96FFE01AEEDB1 = {
+			isa = PBXFileReference;
+			path = "Bullseye menu cursor.tiff";
+			refType = 4;
+		};
+		F5694E2802E96FFE01AEEDB1 = {
+			fileRef = F5694E2702E96FFE01AEEDB1;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		F574ADD5020AC10F01AEEDB1 = {
 			isa = PBXFileReference;
@@ -687,4 +717,15 @@
 		F574ADE0020ACCDF01AEEDB1 = {
 			fileRef = F574ADDB020ACAC801AEEDB1;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F57D63160319B6CA01AEEDB1 = {
+			isa = PBXFileReference;
+			path = "Fallback checkmark.tiff";
+			refType = 4;
+		};
+		F57D63170319B6CA01AEEDB1 = {
+			fileRef = F57D63160319B6CA01AEEDB1;
 			isa = PBXBuildFile;
 			settings = {
@@ -771,16 +812,4 @@
 		F5EFC2D2020A6CEC01AEEDB1 = {
 			fileRef = F5EFC2D1020A6CEC01AEEDB1;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F5EFC2D3020A6D2C01AEEDB1 = {
-			isa = PBXFrameworkReference;
-			name = HIServices.framework;
-			path = /System/Library/PrivateFrameworks/HIServices.framework;
-			refType = 0;
-		};
-		F5EFC2D4020A6D2C01AEEDB1 = {
-			fileRef = F5EFC2D3020A6D2C01AEEDB1;
 			isa = PBXBuildFile;
 			settings = {
@@ -929,4 +958,26 @@
 			};
 		};
+		F5FD7889034828E101AEEDB1 = {
+			isa = PBXFileReference;
+			path = FSAWindowManager.h;
+			refType = 4;
+		};
+		F5FD788A034828E101AEEDB1 = {
+			isa = PBXFileReference;
+			path = FSAWindowManager.m;
+			refType = 4;
+		};
+		F5FD788B034828E101AEEDB1 = {
+			fileRef = F5FD7889034828E101AEEDB1;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5FD788C034828E101AEEDB1 = {
+			fileRef = F5FD788A034828E101AEEDB1;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		F5FF50BC02E53B9E01AEEDB1 = {
 			isa = PBXFileReference;
Index: trunk/Cocoa/F-Script Anywhere/Source/FSAApp.m
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/FSAApp.m	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/FSAApp.m	(revision 16)
@@ -106,5 +106,11 @@
         }
     }
-    [[PatchController sharedPatchController] setDelegate:self];
+    [[PatchController sharedPatchController] setDelegate: self];
+    // In Jaguar 6C115, libPatch no longer delivers process death notifications to the application unless it registers for NSWorkspaceDidTerminateApplicationNotification.  (Process launch notifications are still received.)
+    [[[NSWorkspace sharedWorkspace] notificationCenter]
+        addObserver: self
+           selector: @selector(applicationDidTerminate:)
+               name: NSWorkspaceDidTerminateApplicationNotification
+             object: nil];
 }
 
@@ -167,4 +173,17 @@
 @end
 
+@implementation FSAApp (NSWorkspaceNotifications)
+
+- (void)applicationDidTerminate:(NSNotification *)notification;
+{
+    NSDictionary *userInfo = [notification userInfo];
+    FSALog(@"Process terminated (pid %6d): %@\n",
+           [[userInfo objectForKey: @"NSApplicationProcessIdentifier"] intValue],
+           [userInfo objectForKey: @"NSApplicationName"]);
+    // Don't do anything here, this is a dummy method triggered by a NSWorkspaceDidTerminateApplicationNotification
+}
+
+@end
+
 @implementation FSAApp (PatchControllerDelegate)
 
@@ -174,4 +193,5 @@
 }
 
+// this delegate method is never invoked in Mac OS X 10.2 unless I register for NSWorkspaceDidTerminateApplicationNotification
 - (void) notifyProcessDeath:(pid_t)pid info:(NSDictionary*)info
 {
Index: trunk/Cocoa/F-Script Anywhere/Source/FSAAppList.m
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/FSAAppList.m	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/FSAAppList.m	(revision 16)
@@ -25,4 +25,5 @@
 */
 
+#import "FSAnywhere.h"
 #import "FSAAppList.h"
 #import "FSAApp.h"
@@ -32,8 +33,14 @@
 #import "NSTableView-NJRExtensions.h"
 
+// for appIsPEF:
+#import <Carbon/Carbon.h>
+#import <fcntl.h>
+#import <unistd.h>
+
 NSString * const FSATableColumnIdentifier_appNameAndIcon = @"appNameAndIcon";
 NSString * const FSATableColumnIdentifier_checkMark = @"checkMark";
 
 NSString *FSACheckMarkCharacter;
+NSImage *FSACheckMarkImage;
 
 static const char *FSACocoaFrameworks[] = {
@@ -46,7 +53,16 @@
 @implementation FSAAppList
 
-+ (void)load;
++ (void)initialize;
 {
     FSACheckMarkCharacter = [[NSString alloc] initWithCharacters: (const unichar *)"\x27\x13" length: 1];
+    FSACheckMarkImage = [NSImage imageNamed: @"NSMenuCheckmark"];
+    if (FSACheckMarkImage == nil) {
+        FSACheckMarkImage = [[NSImage alloc] initByReferencingFile: [[NSBundle mainBundle] pathForResource: @"Fallback checkmark" ofType: @"tiff"]];
+        if (FSACheckMarkImage != nil && ![FSACheckMarkImage isValid]) {
+            [FSACheckMarkImage release];
+            FSACheckMarkImage = nil;
+        }
+        FSALog(@"Falling back to checkmark image from bundle: %@", FSACheckMarkImage);
+    }
 }
 
@@ -60,4 +76,7 @@
     [[tableView tableColumnWithIdentifier: FSATableColumnIdentifier_appNameAndIcon]
         setDataCell: [NJRLabeledImageCell cell]];
+    if (FSACheckMarkImage != nil)
+        [[tableView tableColumnWithIdentifier: FSATableColumnIdentifier_checkMark]
+            setDataCell: [[[NSImageCell alloc] init] autorelease]];
     [[tableView window] setResizeIncrements: NSMakeSize(1, [tableView cellHeight])];
 
@@ -90,4 +109,29 @@
 }
 
+- (BOOL)appIsPEF:(DeVercruesseProcess *)app;
+{
+    NSString *bundleExecutableLoc = [app executableLoc];
+    const char *bundleExecutablePath;
+    int fd;
+    PEFContainerHeader pefHeader;
+
+    if (bundleExecutableLoc == NULL)
+        return NO;
+    
+    if ( (bundleExecutablePath = [bundleExecutableLoc fileSystemRepresentation]) == NULL)
+	return NO;
+
+    if ( (fd = open(bundleExecutablePath, O_RDONLY, 0)) == -1)
+        return NO;
+
+    if (read(fd, &pefHeader, sizeof(pefHeader)) != sizeof(pefHeader))
+	return NO;
+    
+    if (pefHeader.tag1 != kPEFTag1 || pefHeader.tag2 != kPEFTag2)
+	return NO;
+
+    return YES;
+}
+
 - (BOOL)appIsCocoa:(DeVercruesseProcess *)app;
 {
@@ -100,7 +144,43 @@
 - (void)addApp:(DeVercruesseProcess *)app;
 {
-    if ( ([app isCarbon] || [app isCocoa]) // XXX OS X 10.1.2 (and earlier?) bug, Cocoa reported as Carbon
-         && ![app isBackgroundOnly]
-         && [self appIsCocoa: app]) {
+    /* Try to determine if the application is a foreground Cocoa application.
+       In Jaguar, itÕs possible to mix Cocoa in a primarily Carbon application,
+       but we don't support such hybrids because the menu items we add depend
+       on Cocoa dispatch mechanisms.
+    
+       The CPS 'flavor' mechanism (isCarbon, isCocoa) is broken in Mac OS X
+       10.1.2 through 10.1.5 and possibly earlier, reporting that all Cocoa apps
+       are Carbon apps.  So we use some code extracted from otool to check
+       whether the application links to the Foundation, AppKit or Cocoa
+       frameworks.  This problem is fixed in Jaguar, except that certain CFM
+       Carbon apps are reported to be Cocoa apps (Drop Drawers is one example).
+       Conversely, the appIsCocoa: code works on _most_ applications, but
+       Jaguar always correctly identifies Cocoa apps as isCocoa.
+
+       So, our checks go like this:
+         Is the application background-only?
+         Is the application Cocoa or Carbon according to the CPS flavor?
+           If it's Cocoa, is it a CFM app?  If so, CPS is lying to us.
+           If it's "Carbon", does it link to AppKit, Foundation or Cocoa?
+             If so, it's really a Cocoa app.  If not, it's a Carbon app.
+    
+       Be careful not to call appIsCocoa: on a Classic application, you will
+       crash.
+    */
+
+    /*
+    if ([app isCocoa] || [app isCarbon]) {
+        NSLog(@"%@ |%@%@%@%@%@", [app name],
+              [app isBackgroundOnly] ? @" bgOnly" : @"",
+              [app isCocoa] ? @" isCocoa" : @"",
+              [app isCarbon] ? @" isCarbon" : @"",
+	      [self appIsPEF: app] ? @" appIsPEF" : @"",
+              [self appIsCocoa: app] ? @" appIsCocoa" : @"");
+    }
+    */
+          
+    if ( ![app isBackgroundOnly] &&
+	 ( ( [app isCocoa] && ![self appIsPEF: app]) ||
+	   ( [app isCarbon] && [self appIsCocoa: app]))) {
         [cocoaApps addObject: app];
     }
@@ -203,5 +283,9 @@
         return [(DeVercruesseProcess *)[cocoaApps objectAtIndex: rowIndex] name];
     } else if ([columnIdentifier isEqualToString: FSATableColumnIdentifier_checkMark]) {
-        return [patchedApps containsObject: [cocoaApps objectAtIndex: rowIndex]] ? FSACheckMarkCharacter : @"";
+        BOOL isPatched = [patchedApps containsObject: [cocoaApps objectAtIndex: rowIndex]];
+        if (FSACheckMarkImage == nil)
+            return isPatched ? FSACheckMarkCharacter : @"";
+        else
+            return isPatched ? FSACheckMarkImage : nil;
     }
     return nil;
Index: trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.h
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.h	(revision 16)
+++ trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.h	(revision 16)
@@ -0,0 +1,25 @@
+//
+//  FSAWindowManager.h
+//  F-Script Anywhere
+//
+//  Created by Nicholas Riley on Mon Sep 30 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import <AppKit/AppKit.h>
+
+@interface FSAWindowManager : NSObject {
+    NSMenu *menu;
+    NSMutableDictionary *records;
+    NSMenuItem *separator, *label;
+}
+
++ (FSAWindowManager *)sharedManager;
+
+- (void)setWindowMenu:(NSMenu *)windowMenu;
+
+- (void)registerWindow:(NSWindow *)window;
+- (void)registerSubordinateWindow:(NSWindow *)subWindow forWindow:(NSWindow *)window;
+- (BOOL)windowIsRegistered:(NSWindow *)window;
+
+@end
Index: trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.m
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.m	(revision 16)
+++ trunk/Cocoa/F-Script Anywhere/Source/FSAWindowManager.m	(revision 16)
@@ -0,0 +1,271 @@
+//
+//  FSAWindowManager.m
+//  F-Script Anywhere
+//
+//  Created by Nicholas Riley on Mon Sep 30 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import "FSAWindowManager.h"
+#import "FSAnywhere.h"
+
+@interface FSAWindowRecord:NSObject
+{
+    unsigned level;
+    NSWindow *window;
+    BOOL windowClosed;
+    FSAWindowRecord *parent;
+    NSMutableArray *subordinates;
+    NSMenuItem *menuItem;
+}
+- (id)initWithWindow:(NSWindow *)aWindow parent:(FSAWindowRecord *)aRecord;
+- (void)addSubordinate:(FSAWindowRecord *)aRecord;
+- (void)removeSubordinate:(FSAWindowRecord *)aRecord;
+- (BOOL)hasSubordinates;
+- (unsigned)level;
+- (NSString *)levelPaddedTitle;
+- (NSMenuItem *)menuItem;
+- (NSWindow *)window;
+@end
+
+@implementation FSAWindowRecord
+
+- (id)initWithWindow:(NSWindow *)aWindow parent:(FSAWindowRecord *)aRecord;
+{
+    if ( (self = [super init]) != nil) {
+        NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+        window = [aWindow retain];
+        [nc addObserver: self selector: @selector(windowWillClose:)
+                   name: NSWindowWillCloseNotification object: window];
+        [nc addObserver: self selector: @selector(windowDidBecomeKey:)
+                   name: NSWindowDidBecomeKeyNotification object: window];
+        [nc addObserver: self selector: @selector(windowDidResignKey:)
+                   name: NSWindowDidResignKeyNotification object: window];
+        if (aRecord == nil) {
+            level = 1;
+        } else {
+            parent = aRecord; // note: not retaining parent
+            [parent addSubordinate: self];
+            level = [parent level] + 1;
+        }
+        [self retain]; // manage own object lifetime, tie to window lifetime
+    }
+    return self;
+}
+
+- (void)dealloc;
+{
+    [[NSNotificationCenter defaultCenter] removeObserver: self];
+    [[menuItem menu] removeItem: menuItem];
+    [menuItem release]; menuItem = nil;
+    [window release]; window = nil;
+    parent = nil;
+    NSAssert1(![self hasSubordinates], @"Window still has subordinates at dealloc: %@", self);
+    [subordinates release]; subordinates = nil;
+    // XXX still get this from time to time, canÕt reproduce reliably... please let me know if you can!
+    NSAssert1(windowClosed, @"Window hasn't closed at dealloc: %@", self);
+    [super dealloc];
+}
+
+- (unsigned)level;
+{
+    return level;
+}
+
+- (NSWindow *)window;
+{
+    return window;
+}
+
+- (void)addSubordinate:(FSAWindowRecord *)aRecord;
+{
+    if (subordinates == nil)
+        subordinates = [[NSMutableArray alloc] init];
+    NSAssert(![subordinates containsObject: aRecord], @"subordinate already exists");
+    [subordinates addObject: aRecord];
+}
+
+- (BOOL)hasSubordinates;
+{
+    return (subordinates != nil && [subordinates count] > 0);
+}
+
+- (void)removeSubordinate:(FSAWindowRecord *)aRecord;
+{
+    NSAssert(subordinates != nil && [subordinates containsObject: aRecord], @"subordinate does not exist");
+    [subordinates removeObject: aRecord];
+    if ([subordinates count] == 0 && windowClosed)
+        [self release];
+}
+
+- (NSString *)levelPaddedTitle;
+{
+    NSString *windowTitle = [window title];
+    NSMutableString *paddedTitle = [[NSMutableString alloc] initWithCapacity: [windowTitle length] + 3 * level + 2 * windowClosed];
+    unsigned i;
+    for (i = 0 ; i < level ; i++) {
+        [paddedTitle appendString: @"   "];
+    }
+    if (windowClosed) [paddedTitle appendString: @"("];
+    [paddedTitle appendString: windowTitle];
+    if (windowClosed) [paddedTitle appendString: @")"];
+    return [paddedTitle autorelease];
+}
+
+- (NSMenuItem *)menuItem;
+{
+    if (menuItem == nil) {
+        menuItem = [[NSMenuItem alloc] initWithTitle: [self levelPaddedTitle]
+                                              action: @selector(makeKeyAndOrderFront:)
+                                       keyEquivalent: @""];
+        [menuItem setTarget: window];
+        [menuItem setRepresentedObject: window];
+        [menuItem setState: NSOnState];
+    }
+    return menuItem;
+}
+
+- (NSString *)description;
+{
+    return [NSString stringWithFormat: @"%@ [L%u] for %@%@ subs %u%@%@", [super description], level, window, windowClosed ? @" (closed)" : @"", [subordinates count], menuItem == nil ? @"" : [NSString stringWithFormat: @" item %@", menuItem], parent == nil ? @"" : [NSString stringWithFormat: @"\n  parent: %@", parent]];
+}
+
+@end
+
+@implementation FSAWindowRecord (NSWindowNotifications)
+
+- (void)windowWillClose:(NSNotification *)notification;
+{
+    windowClosed = YES;
+
+    [parent removeSubordinate: self];
+
+    FSALog(@"windowWillClose (rc %u): %@", [self retainCount], notification);
+    if ([self hasSubordinates]) {
+        [menuItem setTitle: [self levelPaddedTitle]];
+    } else {
+        [self release];
+    }
+}
+
+- (void)windowDidBecomeKey:(NSNotification *)notification;
+{
+    if (windowClosed) {
+        windowClosed = NO;
+        [menuItem setTitle: [self levelPaddedTitle]];
+        [parent addSubordinate: self];
+    }
+    [menuItem setState: NSOnState];
+}
+
+- (void)windowDidResignKey:(NSNotification *)notification;
+{
+    [menuItem setState: NSOffState];
+}
+
+@end
+
+static FSAWindowManager *FSASharedWindowManager;
+
+@implementation FSAWindowManager
+
++ (FSAWindowManager *)sharedManager;
+{
+    if (FSASharedWindowManager == nil) {
+        FSASharedWindowManager = [[self alloc] init];
+    }
+    return FSASharedWindowManager;
+}
+
+- (id)init;
+{
+    if ( (self = [super init]) != nil) {
+        if (FSASharedWindowManager != nil) {
+            [self release];
+            self = nil;
+        } else {
+            records = [[NSMutableDictionary alloc] init];
+        }
+    }
+    return self;
+}
+
+- (void)setWindowMenu:(NSMenu *)windowMenu;
+{
+    menu = [windowMenu retain];
+}
+
+- (FSAWindowRecord *)recordForWindow:(NSWindow *)window;
+{
+    FSAWindowRecord *record = [records objectForKey: [NSValue valueWithNonretainedObject: window]];
+    NSAssert1(record != nil, @"no record for window %@", window);
+    return record;
+}
+
+- (void)addRecord:(FSAWindowRecord *)aRecord;
+{
+    NSWindow *window = [aRecord window];
+    NSValue *wValue = [NSValue valueWithNonretainedObject: window];
+    [[NSNotificationCenter defaultCenter]
+        addObserver: self selector: @selector(windowWillClose:)
+               name: NSWindowWillCloseNotification object: window];
+    NSAssert1(![self windowIsRegistered: window], @"Window already registered: %@", window);
+    [records setObject: aRecord forKey: wValue];
+    if ([records count] == 1) {
+        separator = [NSMenuItem separatorItem];
+        [menu addItem: separator];
+        label = [menu addItemWithTitle: @"Windows" action: NULL keyEquivalent: @""];
+    }
+    FSALog(@"Registered:\n%@", aRecord);
+}
+
+- (void)registerWindow:(NSWindow *)window;
+{
+    FSAWindowRecord *record = [[FSAWindowRecord alloc] initWithWindow: window parent: nil];
+    [self addRecord: record];
+    [menu addItem: [record menuItem]];
+    [record release];
+}
+
+- (void)registerSubordinateWindow:(NSWindow *)subWindow forWindow:(NSWindow *)window;
+{
+    FSAWindowRecord *record = [[FSAWindowRecord alloc] initWithWindow: subWindow parent:
+        [self recordForWindow: window]];
+    int itemIndex = [menu indexOfItemWithRepresentedObject: window];
+
+    NSAssert1(itemIndex != -1, @"CanÕt get menu item for window %@", window);
+    [self addRecord: record];
+    [menu insertItem: [record menuItem] atIndex: itemIndex + 1];
+    [record release];
+}
+
+- (BOOL)windowIsRegistered:(NSWindow *)window;
+{
+    return [records objectForKey: [NSValue valueWithNonretainedObject: window]] != nil;
+}
+
+@end
+
+@interface FSAWindowManager (Private)
+- (FSAWindowRecord *)recordForWindow:(NSWindow *)window;
+@end
+
+@implementation FSAWindowManager (NSWindowNotifications)
+
+- (void)windowWillClose:(NSNotification *)notification;
+{
+    NSWindow *window = [notification object];
+    FSAWindowRecord *record = [self recordForWindow: window];
+
+    if ([record hasSubordinates]) return;
+    [records removeObjectForKey: [NSValue valueWithNonretainedObject: window]];
+    if ([records count] == 0) {
+        [menu removeItem: separator];
+        [menu removeItem: label];
+        separator = nil;
+    }
+    [[NSNotificationCenter defaultCenter]
+        removeObserver: self name: NSWindowWillCloseNotification object: window];
+}
+
+@end
Index: trunk/Cocoa/F-Script Anywhere/Source/Read Me
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/Read Me	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/Read Me	(revision 16)
@@ -1,3 +1,3 @@
-F-Script Anywhere 1.1.2 [18 July 2002]
+F-Script Anywhere 1.1.5 [1 October 2002]
 =======================
 
@@ -24,8 +24,8 @@
 directory, such as /Library/Frameworks or ~/Library/Frameworks.
 
-F-Script Anywhere 1.1.2 was tested with FScript.framework 1.2.2
-(20020604) and Mac OS X 10.1.5 (5S66).  It may or may not work with
-earlier or later versions, I don't know.  If you are using an earlier
-F-Script version, please upgrade.
+F-Script Anywhere 1.1.5 was tested with FScript.framework 1.2.2
+(20020604), Mac OS X 10.1.5 (5S66) and 10.2.1 (6D52).  It may or may
+not work with earlier or later versions, I don't know.  If you are
+using an earlier F-Script version, please upgrade.
 
 
@@ -65,12 +65,12 @@
 1. Install FScript.framework (see above).
 
-2. Install libPatch by Ed Wynne.
-
-   <http://www.phasic.com/~arwyn/libPatch-1.2.tgz>
+2. Install libPatch 1.2.1.
+
+   <http://web.sabi.net/nriley/software/libPatch-1.2.1.tgz>
 
    I'd suggest you do it this way:
 
    % cd /
-   % sudo gnutar --preserve-permissions -zxf libPatch-1.2.tgz
+   % sudo gnutar --preserve-permissions -zxf libPatch-1.2.1.tgz
    Password:
      (please don't use StuffIt Expander)
@@ -82,4 +82,8 @@
    Please note that the layout of the libPatch distribution has changed
    since libPatch 1.0; the above instructions will not work for 1.0.
+   
+   I did not write libPatch, but am distributing it for your convenience
+   because it may be unavailable from its original source.  libPatch is
+   unsupported; please do not contact libPatchÕs author for support.
 
 3. Check out the source of 'otool' from the Darwin CVS repository.
@@ -102,5 +106,5 @@
 4. Open 'F-Script Anywhere.pbproj' in Project Builder and build the
    Application target.  It depends on the Library target, so you don't
-   need to build it separately.  You shouldn't see any errors or
+   need to build it separately.  You shouldnÕt see any errors or
    warnings, and the F-Script Anywhere application (as well as the
    library, which you can ignore because it is also copied into the
@@ -163,5 +167,5 @@
 Q. ThatÕs too hard, especially all that scrolling.
 
-A. If you need to access a view (such as a button or text field) or
+A. If you need to access a view (such as a button or text field), menu or
    window, youÕre in luck.  Click in an F-Script workspace window, then
    choose ÒAssociate With InterfaceÓ from the ÒFSAÓ menu.
@@ -172,15 +176,25 @@
 Q. F-Script Anywhere fails miserably on Jaguar.
 
-A. So IÕve heard (I donÕt have access to Jaguar developer seeds).  This
-   is an issue with libPatch, and affects far more than F-Script Anywhere.
-   Default Folder X and UnsanityÕs haxies are similarly rendered useless.
-   A Jaguar-compatible replacement for libPatch is under development,
-   but it does not yet contain support for applications such as F-Script
-   Anywhere (which is unique in its use of libPatch).  IÕll fix this
-   as soon as it does.
-
-
-Q. I don't like F-ScriptÕs syntax.  I don't like the object browser.
-   I don't like you either.
+A. It shouldnÕt.  Apple re-added support for libPatch to Jaguar late
+   in the development process, with the result that F-Script Anywhere
+   works.  libPatch nevertheless needs to be replaced with a more
+   robust mechanism, and I am currently working on using the Application
+   Enhancer SDK <http://www.unsanity.com/haxies/ape/sdk/> for a future
+   version of F-Script Anywhere.
+
+
+Q. F-Script Anywhere fails to recognize Spring as a Cocoa application.
+
+A. Yes, I'm aware of the irony: I contributed code to Spring.  Spring
+   uses a unique application launching mechanism which makes it
+   difficult to determine what type of application it is.  The only
+   current workaround is to upgrade to Jaguar, where Spring will be
+   correctly identified.  This problem will be remedied with the move
+   to Application Enhancer, described above, in a future version of
+   F-Script Anywhere.
+
+
+Q. I donÕt like F-ScriptÕs syntax.  I don't like the object browser.
+   I donÕt like you either.
 
 A. I didnÕt write F-Script.  Please address your questions to
@@ -204,4 +218,16 @@
 ---------------
 
+1.1.5 - 1 October 2002  - better identify Cocoa vs. Carbon applications
+                          on Jaguar; added hierarchical window list to
+                          FSA menu; fixed startup crash on Puma with
+                          certain Carbon CFM applications
+1.1.4 - 25 August 2002  - fixed miscellaneous Jaguar issues; worked
+                          around broken application quit notifications;
+                          added unique interpreter/associate window titles
+1.1.3 - 24 July 2002    - added bullseye-menu targeting cursor; added menu
+                          association; work around bug by stopping capture
+                          on suspend; added delegate, data source, target,
+                          cell selection for views; window controller for
+                          windows
 1.1.2 - 18 July 2002    - fixed more startup issues with list management;
                           properly scale icons of apps which have no
Index: trunk/Cocoa/F-Script Anywhere/Source/VERSION
===================================================================
--- trunk/Cocoa/F-Script Anywhere/Source/VERSION	(revision 14)
+++ trunk/Cocoa/F-Script Anywhere/Source/VERSION	(revision 16)
@@ -1,1 +1,1 @@
-1.1.2
+1.1.5
