diff --git a/src/MacVim/English.lproj/MainMenu.nib/classes.nib b/src/MacVim/English.lproj/MainMenu.nib/classes.nib
index 09e79c993f..1dbd06362c 100644
--- a/src/MacVim/English.lproj/MainMenu.nib/classes.nib
+++ b/src/MacVim/English.lproj/MainMenu.nib/classes.nib
@@ -1,31 +1,62 @@
-{
- IBClasses = (
- {
- ACTIONS = {newVimWindow = id; };
- CLASS = AppController;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {addNewTab = id; };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {
- fileOpen = id;
- fontSizeDown = id;
- fontSizeUp = id;
- newWindow = id;
- orderFrontPreferencePanel = id;
- selectNextWindow = id;
- selectPreviousWindow = id;
- };
- CLASS = MMAppController;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- }
- );
- IBVersion = 1;
-}
\ No newline at end of file
+
+
+
+
+ IBClasses
+
+
+ ACTIONS
+
+ fileOpen
+ id
+ fontSizeDown
+ id
+ fontSizeUp
+ id
+ newWindow
+ id
+ orderFrontPreferencePanel
+ id
+ selectNextWindow
+ id
+ selectPreviousWindow
+ id
+
+ CLASS
+ MMAppController
+ LANGUAGE
+ ObjC
+ SUPERCLASS
+ NSObject
+
+
+ ACTIONS
+
+ addNewTab
+ id
+
+ CLASS
+ FirstResponder
+ LANGUAGE
+ ObjC
+ SUPERCLASS
+ NSObject
+
+
+ ACTIONS
+
+ checkForUpdates
+ id
+
+ CLASS
+ SUUpdater
+ LANGUAGE
+ ObjC
+ SUPERCLASS
+ NSObject
+
+
+ IBVersion
+ 1
+
+
diff --git a/src/MacVim/English.lproj/MainMenu.nib/info.nib b/src/MacVim/English.lproj/MainMenu.nib/info.nib
index 0384cf233e..0fe119084e 100644
--- a/src/MacVim/English.lproj/MainMenu.nib/info.nib
+++ b/src/MacVim/English.lproj/MainMenu.nib/info.nib
@@ -1,21 +1,20 @@
-
+
- IBDocumentLocation
- 68 69 356 240 0 0 1024 746
- IBEditorPositions
-
- 29
- 130 475 458 44 0 0 1024 746
-
IBFramework Version
- 489.0
+ 629
+ IBLastKnownRelativeProjectPath
+ ../../MacVim.xcodeproj
+ IBOldestOS
+ 5
IBOpenObjects
- 29
+ 57
IBSystem Version
- 8S165
+ 9B18
+ targetFramework
+ IBCocoaFramework
diff --git a/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib b/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib
index 66cb631209..f58db777c0 100644
Binary files a/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib and b/src/MacVim/English.lproj/MainMenu.nib/keyedobjects.nib differ
diff --git a/src/MacVim/Info.plist b/src/MacVim/Info.plist
index 1d24daeb97..d9a0d3d9c6 100644
--- a/src/MacVim/Info.plist
+++ b/src/MacVim/Info.plist
@@ -538,10 +538,12 @@
${PRODUCT_NAME}
CFBundlePackageType
APPL
+ CFBundleShortVersionString
+ 7.1
CFBundleSignature
VIMM
CFBundleVersion
- (first snapshot)
+ 20
NSMainNibFile
MainMenu
NSPrincipalClass
@@ -598,5 +600,9 @@
Window
+ New item
+
+ SUFeedURL
+ http://bjorn.winckler.googlepages.com/macvim_latest.xml
diff --git a/src/MacVim/MacVim.xcodeproj/project.pbxproj b/src/MacVim/MacVim.xcodeproj/project.pbxproj
index 5903ce881b..8222cd6d70 100644
--- a/src/MacVim/MacVim.xcodeproj/project.pbxproj
+++ b/src/MacVim/MacVim.xcodeproj/project.pbxproj
@@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
+ 031AD5D40D4DE1F60026C5D7 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 031AD5D30D4DE1F60026C5D7 /* Sparkle.framework */; };
+ 031AD5EE0D4DE2490026C5D7 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 031AD5D30D4DE1F60026C5D7 /* Sparkle.framework */; };
1D09AB420C6A4D520045497E /* MMTypesetter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D09AB400C6A4D520045497E /* MMTypesetter.m */; };
1D0E051C0BA5F83800B6049E /* Colors.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1D0E051B0BA5F83800B6049E /* Colors.plist */; };
1D1474980C56703C0038FA2B /* MacVim.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D1474960C56703C0038FA2B /* MacVim.m */; };
@@ -97,6 +99,16 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
+ 031AD5ED0D4DE2360026C5D7 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 031AD5EE0D4DE2490026C5D7 /* Sparkle.framework in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
1D0DCAD80BA3604D00B6CCFA /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -135,6 +147,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 031AD5D30D4DE1F60026C5D7 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; };
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; };
@@ -230,6 +243,7 @@
1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */,
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
1D80FBE40CBBD6F200102A1C /* Carbon.framework in Frameworks */,
+ 031AD5D40D4DE1F60026C5D7 /* Sparkle.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -274,6 +288,7 @@
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
+ 031AD5D30D4DE1F60026C5D7 /* Sparkle.framework */,
1D80FBE30CBBD6F200102A1C /* Carbon.framework */,
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
);
@@ -429,6 +444,7 @@
1D0DCAD80BA3604D00B6CCFA /* CopyFiles */,
1D9EB2840C366D7B0074B739 /* CopyFiles */,
1DE608B80C58807F0055263D /* CopyFiles */,
+ 031AD5ED0D4DE2360026C5D7 /* CopyFiles */,
);
buildRules = (
);
@@ -600,8 +616,10 @@
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_3)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",
+ "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
);
FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";
+ FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\"";
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
@@ -627,7 +645,9 @@
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_3)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",
+ "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",
);
+ FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)\"";
FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";
GCC_DYNAMIC_NO_PIC = YES;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
diff --git a/src/MacVim/Sparkle.framework/Headers b/src/MacVim/Sparkle.framework/Headers
new file mode 120000
index 0000000000..a177d2a6b9
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Resources b/src/MacVim/Sparkle.framework/Resources
new file mode 120000
index 0000000000..953ee36f3b
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Sparkle b/src/MacVim/Sparkle.framework/Sparkle
new file mode 120000
index 0000000000..b2c52731ea
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Sparkle
@@ -0,0 +1 @@
+Versions/Current/Sparkle
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/NSApplication+AppCopies.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSApplication+AppCopies.h
new file mode 100644
index 0000000000..ee901e6854
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSApplication+AppCopies.h
@@ -0,0 +1,13 @@
+//
+// NSApplication+AppCopies.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+@interface NSApplication (SUAppCopies)
+- (int)copiesRunning;
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Authentication.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Authentication.h
new file mode 100644
index 0000000000..c995911ca4
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Authentication.h
@@ -0,0 +1,11 @@
+//
+// NSFileManager+Authentication.m
+// Sparkle
+//
+// Created by Andy Matuschak on 3/9/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+@interface NSFileManager (SUAuthenticationAdditions)
+- (BOOL)movePathWithAuthentication:(NSString *)src toPath:(NSString *)dst;
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Verification.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Verification.h
new file mode 100644
index 0000000000..f0ce7c20c0
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSFileManager+Verification.h
@@ -0,0 +1,15 @@
+//
+// NSFileManager+Verification.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+// For the paranoid folks!
+@interface NSFileManager (SUVerification)
+- (BOOL)validatePath:(NSString *)path withMD5Hash:(NSString *)hash;
+- (BOOL)validatePath:(NSString *)path withEncodedDSASignature:(NSString *)encodedSignature;
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/NSString+extras.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSString+extras.h
new file mode 100755
index 0000000000..498e4d01c9
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/NSString+extras.h
@@ -0,0 +1,61 @@
+/*
+
+BSD License
+
+Copyright (c) 2002, Brent Simmons
+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 ranchero.com or Brent Simmons nor the names of its
+ 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.
+
+
+*/
+
+
+/*
+ NSString+extras.h
+ NetNewsWire
+
+ Created by Brent Simmons on Fri Jun 14 2002.
+ Copyright (c) 2002 Brent Simmons. All rights reserved.
+*/
+
+
+#import
+#import
+
+
+@interface NSString (extras)
+
+- (NSString *)stringWithSubstitute:(NSString *)subs forCharactersFromSet:(NSCharacterSet *)set;
+
+- (NSString *) trimWhiteSpace;
+
+- (NSString *) stripHTML;
+
+- (NSString *) ellipsizeAfterNWords: (int) n;
+
++ (BOOL) stringIsEmpty: (NSString *) s;
+
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/RSS.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/RSS.h
new file mode 100755
index 0000000000..82da04a443
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/RSS.h
@@ -0,0 +1,98 @@
+/*
+
+BSD License
+
+Copyright (c) 2002, Brent Simmons
+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 ranchero.com or Brent Simmons nor the names of its
+ 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.
+
+
+*/
+
+/*
+ RSS.h
+ A class for reading RSS feeds.
+
+ Created by Brent Simmons on Wed Apr 17 2002.
+ Copyright (c) 2002 Brent Simmons. All rights reserved.
+*/
+
+
+#import
+#import
+#import "NSString+extras.h"
+
+
+@interface RSS : NSObject {
+
+ NSDictionary *headerItems;
+ NSMutableArray *newsItems;
+ NSString *version;
+
+ BOOL flRdf;
+ BOOL normalize;
+ }
+
+
+/*Public*/
+
+- (RSS *) initWithTitle: (NSString *) title andDescription: (NSString *) description;
+
+- (RSS *) initWithData: (NSData *) rssData normalize: (BOOL) fl;
+
+- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl;
+- (RSS *) initWithURL: (NSURL *) url normalize: (BOOL) fl userAgent:(NSString *)userAgent;
+
+- (NSDictionary *) headerItems;
+
+- (NSMutableArray *) newsItems;
+
+- (NSString *) version;
+
+// AMM's extensions for Sparkle
+- (NSDictionary *)newestItem;
+
+
+/*Private*/
+
+- (void) createheaderdictionary: (CFXMLTreeRef) tree;
+
+- (void) createitemsarray: (CFXMLTreeRef) tree;
+
+- (void) setversionstring: (CFXMLTreeRef) tree;
+
+- (void) flattenimagechildren: (CFXMLTreeRef) tree into: (NSMutableDictionary *) dictionary;
+
+- (void) flattensourceattributes: (CFXMLNodeRef) node into: (NSMutableDictionary *) dictionary;
+
+- (CFXMLTreeRef) getchanneltree: (CFXMLTreeRef) tree;
+
+- (CFXMLTreeRef) getnamedtree: (CFXMLTreeRef) currentTree name: (NSString *) name;
+
+- (void) normalizeRSSItem: (NSMutableDictionary *) rssItem;
+
+- (NSString *) getelementvalue: (CFXMLTreeRef) tree;
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcast.h
new file mode 100644
index 0000000000..209fe20614
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcast.h
@@ -0,0 +1,27 @@
+//
+// SUAppcast.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/12/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+@class RSS, SUAppcastItem;
+@interface SUAppcast : NSObject {
+ NSArray *items;
+ id delegate;
+}
+
+- (void)fetchAppcastFromURL:(NSURL *)url;
+- (void)setDelegate:delegate;
+
+- (SUAppcastItem *)newestItem;
+- (NSArray *)items;
+
+@end
+
+@interface NSObject (SUAppcastDelegate)
+- appcastDidFinishLoading:(SUAppcast *)appcast;
+@end
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
new file mode 100644
index 0000000000..c0202e3d9e
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
@@ -0,0 +1,57 @@
+//
+// SUAppcastItem.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/12/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+
+@interface SUAppcastItem : NSObject {
+ NSString *title;
+ NSDate *date;
+ NSString *description;
+
+ NSURL *releaseNotesURL;
+
+ NSString *DSASignature;
+ NSString *MD5Sum;
+
+ NSURL *fileURL;
+ NSString *fileVersion;
+ NSString *versionString;
+}
+
+// Initializes with data from a dictionary provided by the RSS class.
+- initWithDictionary:(NSDictionary *)dict;
+
+- (NSString *)title;
+- (void)setTitle:(NSString *)aTitle;
+
+- (NSDate *)date;
+- (void)setDate:(NSDate *)aDate;
+
+- (NSString *)description;
+- (void)setDescription:(NSString *)aDescription;
+
+- (NSURL *)releaseNotesURL;
+- (void)setReleaseNotesURL:(NSURL *)aReleaseNotesURL;
+
+- (NSString *)DSASignature;
+- (void)setDSASignature:(NSString *)aDSASignature;
+
+- (NSString *)MD5Sum;
+- (void)setMD5Sum:(NSString *)aMd5Sum;
+
+- (NSURL *)fileURL;
+- (void)setFileURL:(NSURL *)aFileURL;
+
+- (NSString *)fileVersion;
+- (void)setFileVersion:(NSString *)aFileVersion;
+
+- (NSString *)versionString;
+- (void)setVersionString:(NSString *)versionString;
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAutomaticUpdateAlert.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAutomaticUpdateAlert.h
new file mode 100644
index 0000000000..fc0ac9fd06
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUAutomaticUpdateAlert.h
@@ -0,0 +1,21 @@
+//
+// SUAutomaticUpdateAlert.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/18/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+@class SUAppcastItem;
+@interface SUAutomaticUpdateAlert : NSWindowController {
+ SUAppcastItem *updateItem;
+}
+
+- initWithAppcastItem:(SUAppcastItem *)item;
+
+- (IBAction)relaunchNow:sender;
+- (IBAction)relaunchLater:sender;
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUConstants.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUConstants.h
new file mode 100644
index 0000000000..bfbe625bb3
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUConstants.h
@@ -0,0 +1,20 @@
+//
+// SUConstants.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+extern NSString *SUUpdaterWillRestartNotification;
+
+extern NSString *SUCheckAtStartupKey;
+extern NSString *SUFeedURLKey;
+extern NSString *SUShowReleaseNotesKey;
+extern NSString *SUSkippedVersionKey;
+extern NSString *SUScheduledCheckIntervalKey;
+extern NSString *SULastCheckTimeKey;
+extern NSString *SUExpectsDSASignatureKey;
+extern NSString *SUPublicDSAKeyKey;
+extern NSString *SUAutomaticallyUpdateKey;
+extern NSString *SUAllowsAutomaticUpdatesKey;
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusChecker.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusChecker.h
new file mode 100644
index 0000000000..e83d15206e
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusChecker.h
@@ -0,0 +1,26 @@
+//
+// SUStatusChecker.h
+// Sparkle
+//
+// Created by Evan Schoenberg on 7/6/06.
+//
+
+#import
+#import
+
+@class SUStatusChecker;
+
+@protocol SUStatusCheckerDelegate
+//versionString will be nil and isNewVersion will be NO if version checking fails.
+- (void)statusChecker:(SUStatusChecker *)statusChecker foundVersion:(NSString *)versionString isNewVersion:(BOOL)isNewVersion;
+@end
+
+@interface SUStatusChecker : SUUpdater {
+ id scDelegate;
+}
+
+// Create a status checker which will notifiy delegate once the appcast version is determined.
+// Notification occurs via the method defined in the SUStatusCheckerDelegate informal protocol.
++ (SUStatusChecker *)statusCheckerForDelegate:(id)delegate;
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusController.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusController.h
new file mode 100644
index 0000000000..19a3f89ecf
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUStatusController.h
@@ -0,0 +1,33 @@
+//
+// SUStatusController.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/14/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+
+@interface SUStatusController : NSWindowController {
+ double progressValue, maxProgressValue;
+ NSString *title, *statusText, *buttonTitle;
+ IBOutlet NSButton *actionButton;
+}
+
+// Pass 0 for the max progress value to get an indeterminate progress bar.
+// Pass nil for the status text to not show it.
+- (void)beginActionWithTitle:(NSString *)title maxProgressValue:(double)maxProgressValue statusText:(NSString *)statusText;
+
+// If isDefault is YES, the button's key equivalent will be \r.
+- (void)setButtonTitle:(NSString *)buttonTitle target:target action:(SEL)action isDefault:(BOOL)isDefault;
+- (void)setButtonEnabled:(BOOL)enabled;
+
+- (double)progressValue;
+- (void)setProgressValue:(double)value;
+- (double)maxProgressValue;
+- (void)setMaxProgressValue:(double)value;
+
+- (void)setStatusText:(NSString *)statusText;
+
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUnarchiver.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUnarchiver.h
new file mode 100644
index 0000000000..da111c1580
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUnarchiver.h
@@ -0,0 +1,25 @@
+//
+// SUUnarchiver.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+
+@interface SUUnarchiver : NSObject {
+ id delegate;
+}
+
+- (void)unarchivePath:(NSString *)path;
+- (void)setDelegate:delegate;
+
+@end
+
+@interface NSObject (SUUnarchiverDelegate)
+- (void)unarchiver:(SUUnarchiver *)unarchiver extractedLength:(long)length;
+- (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver;
+- (void)unarchiverDidFail:(SUUnarchiver *)unarchiver;
+@end
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdateAlert.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdateAlert.h
new file mode 100644
index 0000000000..69c2817498
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdateAlert.h
@@ -0,0 +1,40 @@
+//
+// SUUpdateAlert.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/12/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+typedef enum
+{
+ SUInstallUpdateChoice,
+ SURemindMeLaterChoice,
+ SUSkipThisVersionChoice
+} SUUpdateAlertChoice;
+
+@class WebView, SUAppcastItem;
+@interface SUUpdateAlert : NSWindowController {
+ SUAppcastItem *updateItem;
+ id delegate;
+
+ IBOutlet WebView *releaseNotesView;
+ IBOutlet NSTextField *description;
+ NSProgressIndicator *releaseNotesSpinner;
+ BOOL webViewFinishedLoading;
+}
+
+- initWithAppcastItem:(SUAppcastItem *)item;
+- (void)setDelegate:delegate;
+
+- (IBAction)installUpdate:sender;
+- (IBAction)skipThisVersion:sender;
+- (IBAction)remindMeLater:sender;
+
+@end
+
+@interface NSObject (SUUpdateAlertDelegate)
+- (void)updateAlert:(SUUpdateAlert *)updateAlert finishedWithChoice:(SUUpdateAlertChoice)updateChoice;
+@end
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdater.h
new file mode 100644
index 0000000000..5f82914bc1
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUpdater.h
@@ -0,0 +1,55 @@
+//
+// SUUpdater.h
+// Sparkle
+//
+// Created by Andy Matuschak on 1/4/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+// Before you use Sparkle in your app, you must set SUFeedURL in Info.plist to the
+// address of the appcast on your webserver. If you don't already have an
+// appcast, please see the Sparkle documentation to learn about how to set one up.
+
+// .zip, .dmg, .tar, .tbz, .tgz archives are supported at this time.
+
+// By default, Sparkle offers to show the user the release notes of the build they'll be
+// getting, which it assumes are in the description (or body) field of the relevant RSS item.
+// Set SUShowReleaseNotes to in Info.plist to hide the button.
+
+@class SUAppcastItem, SUUpdateAlert, SUStatusController;
+@interface SUUpdater : NSObject {
+ SUAppcastItem *updateItem;
+
+ SUStatusController *statusController;
+ SUUpdateAlert *updateAlert;
+
+ NSURLDownload *downloader;
+ NSString *downloadPath;
+
+ NSTimer *checkTimer;
+ NSTimeInterval checkInterval;
+
+ BOOL verbose;
+ BOOL updateInProgress;
+}
+
+// This IBAction is meant for a main menu item. Hook up any menu item to this action,
+// and Sparkle will check for updates and report back its findings verbosely.
+- (IBAction)checkForUpdates:sender;
+
+// This method is similar to the above, but it's intended for updates initiated by
+// the computer instead of by the user. It does not alert the user when he is up to date,
+// and it remains silent about network errors in fetching the feed. This is what you
+// want to call to update programmatically; only use checkForUpdates: with buttons and menu items.
+- (void)checkForUpdatesInBackground;
+
+// This method allows you to schedule a check to run every time interval. You can
+// pass 0 to this method to cancel a previously scheduled timer. You probably don't want
+// to call this directly: if you set a SUScheduledCheckInterval key in Info.plist or
+// the user defaults, Sparkle will set this up for you automatically on startup. You might
+// just want to call this every time the user changes the setting in the preferences.
+- (void)scheduleCheckWithInterval:(NSTimeInterval)interval;
+
+@end
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUtilities.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUtilities.h
new file mode 100644
index 0000000000..5af355083b
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/SUUtilities.h
@@ -0,0 +1,20 @@
+//
+// SUUtilities.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/12/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import
+
+id SUInfoValueForKey(NSString *key);
+NSString *SUHostAppName();
+NSString *SUHostAppDisplayName();
+NSString *SUHostAppVersion();
+NSString *SUHostAppVersionString();
+
+NSComparisonResult SUStandardVersionComparison(NSString * versionA, NSString * versionB);
+
+// If running make localizable-strings for genstrings, ignore the error on this line.
+NSString *SULocalizedString(NSString *key, NSString *comment);
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Headers/Sparkle.h b/src/MacVim/Sparkle.framework/Versions/A/Headers/Sparkle.h
new file mode 100644
index 0000000000..13e9b2156f
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Headers/Sparkle.h
@@ -0,0 +1,22 @@
+//
+// Sparkle.h
+// Sparkle
+//
+// Created by Andy Matuschak on 3/16/06.
+// Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import "SUUpdater.h"
+#import "SUUtilities.h"
+#import "SUConstants.h"
+#import "SUAppcast.h"
+#import "SUAppcastItem.h"
+#import "SUUpdateAlert.h"
+#import "SUAutomaticUpdateAlert.h"
+#import "SUStatusController.h"
+#import "SUUnarchiver.h"
+#import "SUStatusChecker.h"
+
+#import "NSApplication+AppCopies.h"
+#import "NSFileManager+Authentication.h"
+#import "NSFileManager+Verification.h"
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/Info.plist b/src/MacVim/Sparkle.framework/Versions/A/Resources/Info.plist
new file mode 100644
index 0000000000..c154cb61e1
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ Sparkle
+ CFBundleIdentifier
+ org.andymatuschak.Sparkle
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Sparkle
+ CFBundlePackageType
+ FMWK
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.1
+
+
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib
new file mode 100644
index 0000000000..ff40c9ddf7
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib
@@ -0,0 +1,12 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ CLASS = SUStatusController;
+ LANGUAGE = ObjC;
+ OUTLETS = {actionButton = id; };
+ SUPERCLASS = NSWindowController;
+ }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib
new file mode 100644
index 0000000000..99183444cb
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib
@@ -0,0 +1,16 @@
+
+
+
+
+ IBDocumentLocation
+ 69 10 356 240 0 0 1280 832
+ IBFramework Version
+ 443.0
+ IBOpenObjects
+
+ 5
+
+ IBSystem Version
+ 8H14
+
+
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib
new file mode 100644
index 0000000000..378b22f2a6
Binary files /dev/null and b/src/MacVim/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib differ
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib
new file mode 100644
index 0000000000..3e65b1ff50
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib
@@ -0,0 +1,12 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {
+ ACTIONS = {relaunchLater = id; relaunchNow = id; };
+ CLASS = SUAutomaticUpdateAlert;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSWindowController;
+ }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib
new file mode 100644
index 0000000000..2f65f2f491
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib
@@ -0,0 +1,16 @@
+
+
+
+
+ IBDocumentLocation
+ 188 142 356 240 0 0 1280 1002
+ IBFramework Version
+ 443.0
+ IBOpenObjects
+
+ 5
+
+ IBSystem Version
+ 8H14
+
+
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
new file mode 100644
index 0000000000..c4201cf26a
Binary files /dev/null and b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib differ
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib
new file mode 100644
index 0000000000..0071ac0776
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib
@@ -0,0 +1,21 @@
+{
+ IBClasses = (
+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
+ {CLASS = NSObject; LANGUAGE = ObjC; },
+ {
+ ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; };
+ CLASS = SUUpdateAlert;
+ LANGUAGE = ObjC;
+ OUTLETS = {description = NSTextField; releaseNotesView = WebView; };
+ SUPERCLASS = NSWindowController;
+ },
+ {
+ ACTIONS = {installUpdate = id; remindMeLater = id; skipThisVersion = id; };
+ CLASS = SUUpdateAlertController;
+ LANGUAGE = ObjC;
+ OUTLETS = {releaseNotesView = id; };
+ SUPERCLASS = NSWindowController;
+ }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib
new file mode 100644
index 0000000000..2b25ad033c
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib
@@ -0,0 +1,16 @@
+
+
+
+
+ IBDocumentLocation
+ 425 40 356 240 0 0 1280 832
+ IBFramework Version
+ 446.1
+ IBOpenObjects
+
+ 5
+
+ IBSystem Version
+ 8I127
+
+
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib
new file mode 100644
index 0000000000..be3dbd9069
Binary files /dev/null and b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib differ
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
new file mode 100644
index 0000000000..6bf42f79b0
Binary files /dev/null and b/src/MacVim/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings differ
diff --git a/src/MacVim/Sparkle.framework/Versions/A/Sparkle b/src/MacVim/Sparkle.framework/Versions/A/Sparkle
new file mode 100755
index 0000000000..9dbf9e7fa1
Binary files /dev/null and b/src/MacVim/Sparkle.framework/Versions/A/Sparkle differ
diff --git a/src/MacVim/Sparkle.framework/Versions/Current b/src/MacVim/Sparkle.framework/Versions/Current
new file mode 120000
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/src/MacVim/Sparkle.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file