Revision: 14905
http://sourceforge.net/p/skim-app/code/14905
Author: hofman
Date: 2025-01-31 17:53:12 +0000 (Fri, 31 Jan 2025)
Log Message:
-----------
Implement range specifier workaround in script command subclasses rrather than
swizzle methods in parent class
Modified Paths:
--------------
trunk/NSScriptCommand_SKExtensions.m
trunk/SKJoinCommand.h
trunk/SKObtainCommand.h
trunk/SKSelectCommand.h
trunk/Skim.sdef
trunk/Skim.xcodeproj/project.pbxproj
Added Paths:
-----------
trunk/SKCreateCommand.h
trunk/SKCreateCommand.m
trunk/SKScriptCommand.h
trunk/SKScriptCommand.m
Modified: trunk/NSScriptCommand_SKExtensions.m
===================================================================
--- trunk/NSScriptCommand_SKExtensions.m 2025-01-31 16:23:40 UTC (rev
14904)
+++ trunk/NSScriptCommand_SKExtensions.m 2025-01-31 17:53:12 UTC (rev
14905)
@@ -37,62 +37,10 @@
*/
#import "NSScriptCommand_SKExtensions.h"
-#import "SKRuntime.h"
@implementation NSScriptCommand (SKExtensions)
-static void (*original_setReceiversSpecifier)(id, SEL, id) = NULL;
-static void (*original_setArguments)(id, SEL, id) = NULL;
-static void (*original_setDirectParameter)(id, SEL, id) = NULL;
-
-// Workaround for Cocoa Scripting and AppleScript bugs.
-// Cocoa Scripting does not accept range specifiers whose start/end specifier
have an absolute container specifier, but AppleScript does not accept range
specifiers with relative container specifiers, so we cannot return those from
PDFSelection
-static void fixRangeSpecifiers(id object) {
- if ([object isKindOfClass:[NSArray class]]) {
- for (id subobject in (NSArray *)object)
- fixRangeSpecifiers(subobject);
- } else if ([object isKindOfClass:[NSDictionary class]]) {
- for (id subobject in [object allValues])
- fixRangeSpecifiers(subobject);
- } else if ([object isKindOfClass:[NSScriptObjectSpecifier class]]) {
- fixRangeSpecifiers([(NSScriptObjectSpecifier *)object
containerSpecifier]);
- if ([object isKindOfClass:[NSRangeSpecifier class]]) {
- NSScriptObjectSpecifier *childSpec = [(NSRangeSpecifier *)object
startSpecifier];
- if ([childSpec containerSpecifier]) {
- [childSpec setContainerSpecifier:nil];
- [childSpec setContainerIsRangeContainerObject:YES];
- }
- childSpec = [(NSRangeSpecifier *)object endSpecifier];
- if ([childSpec containerSpecifier]) {
- [childSpec setContainerSpecifier:nil];
- [childSpec setContainerIsRangeContainerObject:YES];
- }
- }
- }
-}
-
-- (void)replacement_setReceiversSpecifier:(NSScriptObjectSpecifier
*)receiversSpec {
- fixRangeSpecifiers(receiversSpec);
- original_setReceiversSpecifier(self, _cmd, receiversSpec);
-}
-
-- (void)replacement_setArguments:(NSDictionary *)args {
- fixRangeSpecifiers(args);
- original_setArguments(self, _cmd, args);
-}
-
-- (void)replacement_setDirectParameter:(id)directParameter {
- fixRangeSpecifiers(directParameter);
- original_setDirectParameter(self, _cmd, directParameter);
-}
-
-+ (void)load {
- original_setReceiversSpecifier = (void (*)(id, SEL,
id))SKReplaceInstanceMethodImplementationFromSelector(self,
@selector(setReceiversSpecifier:),
@selector(replacement_setReceiversSpecifier:));
- original_setArguments = (void (*)(id, SEL,
id))SKReplaceInstanceMethodImplementationFromSelector(self,
@selector(setArguments:), @selector(replacement_setArguments:));
- original_setDirectParameter = (void (*)(id, SEL,
id))SKReplaceInstanceMethodImplementationFromSelector(self,
@selector(setDirectParameter:), @selector(replacement_setDirectParameter:));
-}
-
- (NSScriptObjectSpecifier *)subjectSpecifier {
return [NSScriptObjectSpecifier objectSpecifierWithDescriptor:[[self
appleEvent] attributeDescriptorForKeyword:'subj']];
}
Added: trunk/SKCreateCommand.h
===================================================================
--- trunk/SKCreateCommand.h (rev 0)
+++ trunk/SKCreateCommand.h 2025-01-31 17:53:12 UTC (rev 14905)
@@ -0,0 +1,47 @@
+//
+// SKCreateCommand.h
+// Skim
+//
+// Created by Christiaan Hofman on 31/01/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SKCreateCommand : NSCreateCommand
+
+@end
+
+NS_ASSUME_NONNULL_END
Added: trunk/SKCreateCommand.m
===================================================================
--- trunk/SKCreateCommand.m (rev 0)
+++ trunk/SKCreateCommand.m 2025-01-31 17:53:12 UTC (rev 14905)
@@ -0,0 +1,74 @@
+//
+// SKCreateCommand.m
+// Skim
+//
+// Created by Christiaan Hofman on 31/01/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SKCreateCommand.h"
+
+@implementation SKCreateCommand
+
+// Workaround for Cocoa Scripting and AppleScript bugs.
+// Cocoa Scripting does not accept range specifiers whose start/end specifier
have an absolute container specifier, but AppleScript does not accept range
specifiers with relative container specifiers, so we cannot return those from
PDFSelection
+static void fixRangeSpecifiers(id object) {
+ if ([object isKindOfClass:[NSArray class]]) {
+ for (id subobject in (NSArray *)object)
+ fixRangeSpecifiers(subobject);
+ } else if ([object isKindOfClass:[NSDictionary class]]) {
+ for (id subobject in [object allValues])
+ fixRangeSpecifiers(subobject);
+ } else if ([object isKindOfClass:[NSScriptObjectSpecifier class]]) {
+ fixRangeSpecifiers([(NSScriptObjectSpecifier *)object
containerSpecifier]);
+ if ([object isKindOfClass:[NSRangeSpecifier class]]) {
+ NSScriptObjectSpecifier *childSpec = [(NSRangeSpecifier *)object
startSpecifier];
+ if ([childSpec containerSpecifier]) {
+ [childSpec setContainerSpecifier:nil];
+ [childSpec setContainerIsRangeContainerObject:YES];
+ }
+ childSpec = [(NSRangeSpecifier *)object endSpecifier];
+ if ([childSpec containerSpecifier]) {
+ [childSpec setContainerSpecifier:nil];
+ [childSpec setContainerIsRangeContainerObject:YES];
+ }
+ }
+ }
+}
+
+- (void)setArguments:(NSDictionary *)args {
+ fixRangeSpecifiers(args);
+ [super setArguments:args];
+}
+
+@end
Modified: trunk/SKJoinCommand.h
===================================================================
--- trunk/SKJoinCommand.h 2025-01-31 16:23:40 UTC (rev 14904)
+++ trunk/SKJoinCommand.h 2025-01-31 17:53:12 UTC (rev 14905)
@@ -37,7 +37,8 @@
*/
#import <Cocoa/Cocoa.h>
+#import "SKScriptCommand.h"
-@interface SKJoinCommand : NSScriptCommand
+@interface SKJoinCommand : SKScriptCommand
@end
Modified: trunk/SKObtainCommand.h
===================================================================
--- trunk/SKObtainCommand.h 2025-01-31 16:23:40 UTC (rev 14904)
+++ trunk/SKObtainCommand.h 2025-01-31 17:53:12 UTC (rev 14905)
@@ -37,7 +37,8 @@
*/
#import <Cocoa/Cocoa.h>
+#import "SKScriptCommand.h"
-@interface SKObtainCommand : NSScriptCommand
+@interface SKObtainCommand : SKScriptCommand
@end
Added: trunk/SKScriptCommand.h
===================================================================
--- trunk/SKScriptCommand.h (rev 0)
+++ trunk/SKScriptCommand.h 2025-01-31 17:53:12 UTC (rev 14905)
@@ -0,0 +1,46 @@
+//
+// SKScriptCommand.h
+// Skim
+//
+// Created by Christiaan Hofman on 31/01/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SKScriptCommand : NSScriptCommand
+@end
+
+NS_ASSUME_NONNULL_END
Added: trunk/SKScriptCommand.m
===================================================================
--- trunk/SKScriptCommand.m (rev 0)
+++ trunk/SKScriptCommand.m 2025-01-31 17:53:12 UTC (rev 14905)
@@ -0,0 +1,81 @@
+//
+// SKScriptCommand.m
+// Skim
+//
+// Created by Christiaan Hofman on 31/01/2025.
+/*
+ This software is Copyright (c) 2025
+ Christiaan Hofman. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SKScriptCommand.h"
+
+@implementation SKScriptCommand
+
+// Workaround for Cocoa Scripting and AppleScript bugs.
+// Cocoa Scripting does not accept range specifiers whose start/end specifier
have an absolute container specifier, but AppleScript does not accept range
specifiers with relative container specifiers, so we cannot return those from
PDFSelection
+static void fixRangeSpecifiers(id object) {
+ if ([object isKindOfClass:[NSArray class]]) {
+ for (id subobject in (NSArray *)object)
+ fixRangeSpecifiers(subobject);
+ } else if ([object isKindOfClass:[NSScriptObjectSpecifier class]]) {
+ fixRangeSpecifiers([(NSScriptObjectSpecifier *)object
containerSpecifier]);
+ if ([object isKindOfClass:[NSRangeSpecifier class]]) {
+ NSScriptObjectSpecifier *childSpec = [(NSRangeSpecifier *)object
startSpecifier];
+ if ([childSpec containerSpecifier]) {
+ [childSpec setContainerSpecifier:nil];
+ [childSpec setContainerIsRangeContainerObject:YES];
+ }
+ childSpec = [(NSRangeSpecifier *)object endSpecifier];
+ if ([childSpec containerSpecifier]) {
+ [childSpec setContainerSpecifier:nil];
+ [childSpec setContainerIsRangeContainerObject:YES];
+ }
+ }
+ }
+}
+
+- (void)setReceiversSpecifier:(NSScriptObjectSpecifier *)receiversSpec {
+ fixRangeSpecifiers(receiversSpec);
+ [super setReceiversSpecifier:receiversSpec];
+}
+
+- (void)setArguments:(NSDictionary *)args {
+ fixRangeSpecifiers([args allValues]);
+ [super setArguments:args];
+}
+
+- (void)setDirectParameter:(id)directParameter {
+ fixRangeSpecifiers(directParameter);
+ [super setDirectParameter:directParameter];
+}
+
+@end
Modified: trunk/SKSelectCommand.h
===================================================================
--- trunk/SKSelectCommand.h 2025-01-31 16:23:40 UTC (rev 14904)
+++ trunk/SKSelectCommand.h 2025-01-31 17:53:12 UTC (rev 14905)
@@ -37,7 +37,8 @@
*/
#import <Cocoa/Cocoa.h>
+#import "SKScriptCommand.h"
-@interface SKSelectCommand : NSScriptCommand
+@interface SKSelectCommand : SKScriptCommand
@end
Modified: trunk/Skim.sdef
===================================================================
--- trunk/Skim.sdef 2025-01-31 16:23:40 UTC (rev 14904)
+++ trunk/Skim.sdef 2025-01-31 17:53:12 UTC (rev 14905)
@@ -140,7 +140,7 @@
</command>
<command name="make" code="corecrel" description="Create a new
object.">
- <cocoa class="NSCreateCommand"/>
+ <cocoa class="SKCreateCommand"/>
<parameter name="new" code="kocl" type="type"
description="The class of the new object.">
<cocoa key="ObjectClass"/>
</parameter>
@@ -376,6 +376,7 @@
<command name="go" code="SKIMGoTo"
description="Go to a location.">
+ <cocoa class="SKScriptCommand"/>
<direct-parameter
description="The document in which to scroll, or reading bar
to move.">
<type type="document"/>
@@ -435,6 +436,7 @@
<command name="find" code="SKIMFind"
description="Find text in a document.">
+ <cocoa class="SKScriptCommand"/>
<direct-parameter type="document"
description="The document in which to search."/>
<parameter name="text" code="ctxt" type="text"
Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj 2025-01-31 16:23:40 UTC (rev
14904)
+++ trunk/Skim.xcodeproj/project.pbxproj 2025-01-31 17:53:12 UTC (rev
14905)
@@ -241,6 +241,8 @@
CEC29533275A66A2000F2D4C /* SKNotePrefs.m in Sources */ = {isa
= PBXBuildFile; fileRef = CEC29532275A66A2000F2D4C /* SKNotePrefs.m */; };
CEC29536275A7D58000F2D4C /* SKPreferencesCommand.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CEC29535275A7D58000F2D4C /*
SKPreferencesCommand.m */; };
CEC3AD240E23EC0300F40B0B /* PDFAnnotationLink_SKExtensions.m in
Sources */ = {isa = PBXBuildFile; fileRef = CEC3AD230E23EC0300F40B0B /*
PDFAnnotationLink_SKExtensions.m */; };
+ CEC3F0842D4D43570025670C /* SKScriptCommand.m in Sources */ =
{isa = PBXBuildFile; fileRef = CEC3F0832D4D43570025670C /* SKScriptCommand.m
*/; };
+ CEC3F0A12D4D44280025670C /* SKCreateCommand.m in Sources */ =
{isa = PBXBuildFile; fileRef = CEC3F0A02D4D44280025670C /* SKCreateCommand.m
*/; };
CECB03D30DC7503A0000B16B /* SKGroupedSearchResult.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CECB03D20DC7503A0000B16B /*
SKGroupedSearchResult.m */; };
CECDC4FF0C5966A80026AAEC /* NSImage_SKExtensions.m in Sources
*/ = {isa = PBXBuildFile; fileRef = CECDC4FD0C5966A80026AAEC /*
NSImage_SKExtensions.m */; };
CECE6C3F2188AE9A00F6179D /* SKSelectionCommand.m in Sources */
= {isa = PBXBuildFile; fileRef = CECE6C3E2188AE9A00F6179D /*
SKSelectionCommand.m */; };
@@ -1162,6 +1164,10 @@
CEC29535275A7D58000F2D4C /* SKPreferencesCommand.m */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path =
SKPreferencesCommand.m; sourceTree = "<group>"; };
CEC3AD220E23EC0300F40B0B /* PDFAnnotationLink_SKExtensions.h */
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.c.h; path = PDFAnnotationLink_SKExtensions.h; sourceTree =
"<group>"; };
CEC3AD230E23EC0300F40B0B /* PDFAnnotationLink_SKExtensions.m */
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.c.objc; path = PDFAnnotationLink_SKExtensions.m; sourceTree =
"<group>"; };
+ CEC3F0822D4D43570025670C /* SKScriptCommand.h */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKScriptCommand.h;
sourceTree = "<group>"; };
+ CEC3F0832D4D43570025670C /* SKScriptCommand.m */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path =
SKScriptCommand.m; sourceTree = "<group>"; };
+ CEC3F09F2D4D44280025670C /* SKCreateCommand.h */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKCreateCommand.h;
sourceTree = "<group>"; };
+ CEC3F0A02D4D44280025670C /* SKCreateCommand.m */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path =
SKCreateCommand.m; sourceTree = "<group>"; };
CEC4C33F0CA90CA200299397 /* es */ = {isa = PBXFileReference;
lastKnownFileType = text.rtf; name = es; path = es.lproj/Credits.rtf;
sourceTree = "<group>"; };
CEC4C3420CA90CA200299397 /* es */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = es; path =
es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
CEC4C3450CA90CA200299397 /* es */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = es; path =
es.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -2025,6 +2031,10 @@
CE4643F10DF6BADC00CFD8D2 /* Commands */ = {
isa = PBXGroup;
children = (
+ CEC3F0822D4D43570025670C /* SKScriptCommand.h
*/,
+ CEC3F0832D4D43570025670C /* SKScriptCommand.m
*/,
+ CEC3F09F2D4D44280025670C /* SKCreateCommand.h
*/,
+ CEC3F0A02D4D44280025670C /* SKCreateCommand.m
*/,
CE4643CD0DF6B5A400CFD8D2 /* SKJoinCommand.h */,
CE4643CE0DF6B5A400CFD8D2 /* SKJoinCommand.m */,
CE56F2C6276BFBA7002B3717 /* SKObtainCommand.h
*/,
@@ -2854,6 +2864,7 @@
CE49728B0BDE8B2900D7F1D2 /* SKToolbarItem.m in
Sources */,
CE454B3E226DEB3C0034FD6B /*
SKNoteTableRowView.m in Sources */,
CE6C03F10BEDF759007BF0B5 /*
NSParagraphStyle_SKExtensions.m in Sources */,
+ CEC3F0842D4D43570025670C /* SKScriptCommand.m
in Sources */,
CEF8B1AE22B3DE80001062A1 /*
SKMainWindowController_FullScreen.m in Sources */,
CE31A6180C01FC45003612A9 /*
SKDocumentController.m in Sources */,
CE426FC9255EDBDE00465569 /*
SKViewSettingsController.m in Sources */,
@@ -2987,6 +2998,7 @@
CE10979A161320CF00C4FA18 /*
SKExportAccessoryController.m in Sources */,
CE5347141645DD3000737191 /*
SKAttachmentEmailer.m in Sources */,
CE40D6161677A9DC00573882 /* SKTextNoteEditor.m
in Sources */,
+ CEC3F0A12D4D44280025670C /* SKCreateCommand.m
in Sources */,
CE2083E416ADFFD600BC5AFB /* SKAlias.m in
Sources */,
CE26175F16CCFC4900BDCE7C /* SKSyncDot.m in
Sources */,
CEA5BAFE2424CAE100801B2E /* SKOverviewView.m in
Sources */,
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit