Skip to content

fix for 7.2 above #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified ACCodeSnippetRepository Tests/ACCodeSnippetGitDataStoreTests.m
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion ACCodeSnippetRepository Tests/ACCodeSnippetRepository Tests-Info.plist
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.acoomans.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
Expand Down
Empty file.
Empty file modified ACCodeSnippetRepository Tests/ACCodeSnippetSerializationTests.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository Tests/ACGitRepositoryTests.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository Tests/NSDictionary+MergeTests.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository Tests/en.lproj/InfoPlist.strings
100644 → 100755
Empty file.
29 changes: 27 additions & 2 deletions ACCodeSnippetRepository.xcodeproj/project.pbxproj
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@
name = "ACCodeSnippetRepository Tests";
productName = "ACCodeSnippetRepository Tests";
productReference = 5154068318AC4B500065CA33 /* ACCodeSnippetRepository Tests.octest */;
productType = "com.apple.product-type.bundle";
productType = "com.apple.product-type.bundle.ocunit-test";
};
518E699E18AC4A8900C57456 /* ACCodeSnippetRepository */ = {
isa = PBXNativeTarget;
Expand All @@ -328,6 +328,7 @@
518E699B18AC4A8900C57456 /* Sources */,
518E699C18AC4A8900C57456 /* Frameworks */,
518E699D18AC4A8900C57456 /* Resources */,
11AE833A1CAABCC800EA6FB6 /* ShellScript */,
);
buildRules = (
);
Expand All @@ -344,7 +345,8 @@
518E699718AC4A8900C57456 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
LastTestingUpgradeCheck = 0720;
LastUpgradeCheck = 0720;
ORGANIZATIONNAME = "Arnaud Coomans";
TargetAttributes = {
5154068218AC4B500065CA33 = {
Expand Down Expand Up @@ -393,6 +395,22 @@
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
11AE833A1CAABCC800EA6FB6 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 12;
files = (
);
inputPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "#!/bin/bash\n\n\n\n\nPLISTBUDDY=\"/usr/libexec/PlistBuddy\"\n\n\n\n\n#Get current Xcode DVTPlugInCompatibilityUUID\n\nUUID=$(defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID)\n\necho Xcode DVTPlugInCompatibilityUUID is $UUID\n\n\n\n\n#Traversal all plugins, and update UUID\n\nfor MyPlugin in ~/Library/Application\\ Support/Developer/Shared/Xcode/Plug-ins/ACCodeSnippetRepository.xcplugin/*\n \n do\n \n $PLISTBUDDY -c \"Add :DVTPlugInCompatibilityUUIDs: string $UUID\" \"$MyPlugin\"/Info.plist\n \n echo write DVTPlugInCompatibilityUUID to $MyPlugin succeed!\n \n done";
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
5154067F18AC4B500065CA33 /* Sources */ = {
isa = PBXSourcesBuildPhase;
Expand Down Expand Up @@ -463,6 +481,7 @@
5154069118AC4B500065CA33 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
Expand All @@ -474,6 +493,7 @@
"$(inherited)",
);
INFOPLIST_FILE = "ACCodeSnippetRepository Tests/ACCodeSnippetRepository Tests-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "com.acoomans.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = octest;
};
Expand All @@ -482,13 +502,15 @@
5154069218AC4B500065CA33 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ACCodeSnippetRepository Tests/ACCodeSnippetRepository Tests-Prefix.pch";
INFOPLIST_FILE = "ACCodeSnippetRepository Tests/ACCodeSnippetRepository Tests-Info.plist";
PRODUCT_BUNDLE_IDENTIFIER = "com.acoomans.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = octest;
};
Expand All @@ -510,6 +532,7 @@
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
Expand Down Expand Up @@ -573,6 +596,7 @@
INFOPLIST_FILE = "ACCodeSnippetRepository/ACCodeSnippetRepository-Info.plist";
INSTALL_PATH = "/Library/Application Support/Developer/Shared/Xcode/Plug-ins";
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.acoomans.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = xcplugin;
};
Expand All @@ -589,6 +613,7 @@
INFOPLIST_FILE = "ACCodeSnippetRepository/ACCodeSnippetRepository-Info.plist";
INSTALL_PATH = "/Library/Application Support/Developer/Shared/Xcode/Plug-ins";
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.acoomans.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = xcplugin;
};
Expand Down
Empty file.
14 changes: 3 additions & 11 deletions ACCodeSnippetRepository/ACCodeSnippetRepository-Info.plist
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.acoomans.${PRODUCT_NAME:rfc1034identifier}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
Expand All @@ -22,18 +22,10 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>DVTPlugInCompatibilityUUIDs</key>
<array>
<string>640F884E-CE55-4B40-87C0-8869546CAB7A</string>
<string>C4A681B0-4A26-480E-93EC-1218098B9AA0</string>
<string>37B30044-3B14-46BA-ABAA-F01000C27B63</string>
<string>A2E4D43F-41F4-4FB9-BB94-7177011C9AED</string>
<string>FEC992CC-CA4A-4CFD-8881-77300FCB848A</string>
<string>A16FF353-8441-459E-A50C-B071F53F51B7</string>
<string>9F75337B-21B4-4ADC-B558-F9CADF7073A7</string>
</array>
<key>NSPrincipalClass</key>
<string>ACCodeSnippetRepositoryPlugin</string>
<key>DVTPlugInCompatibilityUUIDs</key>
<array/>
<key>XC4Compatible</key>
<true/>
<key>XCGCReady</key>
Expand Down
Empty file modified ACCodeSnippetRepository/ACCodeSnippetRepository-Prefix.pch
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/ACCodeSnippetRepositoryPlugin.h
100644 → 100755
Empty file.
60 changes: 42 additions & 18 deletions ACCodeSnippetRepository/ACCodeSnippetRepositoryPlugin.m
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


static ACCodeSnippetRepositoryPlugin *sharedPlugin;
static NSString * const pluginMenuTitle = @"Plug-ins";
static NSString * const pluginMenuTitle = @"Source Control";

@interface ACCodeSnippetRepositoryPlugin()
@property (nonatomic, strong) NSBundle *bundle;
Expand All @@ -34,12 +34,21 @@ + (void)pluginDidLoad:(NSBundle *)plugin {
}
}



- (id)initWithBundle:(NSBundle *)plugin {
if (self = [super init]) {

// reference to plugin's bundle, for resource acccess
self.bundle = plugin;


[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didApplicationFinishLaunchingNotification:)
name:NSApplicationDidFinishLaunchingNotification
object:nil];


// add data stores to Xcode's snippet repository
ACCodeSnippetGitDataStore *gitDataStore = [[ACCodeSnippetGitDataStore alloc] init];
[gitDataStore addObserver:self forKeyPath:@"mainQueue.operationCount" options:0 context:NULL];
Expand All @@ -58,29 +67,44 @@ - (id)initWithBundle:(NSBundle *)plugin {
[self startTimer];
}


}
return self;
}
- (void)didApplicationFinishLaunchingNotification:(NSNotification*)noti
{
//removeObserver
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSApplicationDidFinishLaunchingNotification object:nil];

// Create menu items, initialize UI, etc.
NSMenu *pluginMenu = [self pluginMenu];
pluginMenu.autoenablesItems = NO;
// Sample Menu Item:
// Create menu items, initialize UI, etc.
NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Source Control"];
if (menuItem) {
[[menuItem submenu] addItem:[NSMenuItem separatorItem]];
NSMenuItem *actionMenuItem = nil;

if (pluginMenu) {

NSMenuItem *actionMenuItem = nil;

self.updateMenuItem = actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Update snippets" action:@selector(updateAction:) keyEquivalent:@""];
actionMenuItem.target = self;
[pluginMenu addItem:actionMenuItem];

actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Configure snippets repository" action:@selector(configureAction:) keyEquivalent:@""];
actionMenuItem.target = self;
[pluginMenu addItem:actionMenuItem];

//[pluginMenu addItem:[NSMenuItem separatorItem]];
}
self.updateMenuItem = actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Update snippets" action:@selector(updateAction:) keyEquivalent:@""];
[actionMenuItem setTarget:self];
[[menuItem submenu] addItem:actionMenuItem];

actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Configure snippets repository" action:@selector(configureAction:) keyEquivalent:@""];
[actionMenuItem setTarget:self];
[[menuItem submenu] addItem:actionMenuItem];
}
return self;

}


// Sample Action, for menu item:
- (void)doMenuAction
{
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Hello, World"];
[alert runModal];
}


- (id)init {
return [self initWithBundle:nil];
}
Expand Down
Empty file modified ACCodeSnippetRepository/Categories/NSDictionary+Merge.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Categories/NSDictionary+Merge.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Categories/NSString+Path.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Categories/NSString+Path.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Categories/NSTask+Extras.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Categories/NSTask+Extras.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Classes/ACGitRepository.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/Classes/ACGitRepository.m
100644 → 100755
Empty file.
Empty file.
Empty file.
2 changes: 1 addition & 1 deletion ACCodeSnippetRepository/Classes/DataStores/ACCodeSnippetGitDataStore.m
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ - (NSString*)pathForSnippetDirectory {
}

- (NSString*)localRepositoryPath {
return [NSString pathWithComponents:@[self.pathForSnippetDirectory, @"git"]];
return [self pathForSnippetDirectory];
}

- (BOOL)isSnippetFileAtPath:(NSString*)path {
Expand Down
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Headers/IDE.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Headers/IDECodeSnippet.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Headers/IDECodeSnippetLibrary.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Headers/IDECodeSnippetRepository.h
100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Swizzle/Swizzler.h
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/Swizzle/Swizzler.m
100644 → 100755
Empty file.
Empty file modified ACCodeSnippetRepository/IDE/classdump.txt
100644 → 100755
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ACCodeSnippetRepository/Resources/Images/GitHub-Mark-32px.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ACCodeSnippetRepository/Resources/Images/GitHub-Mark-64px.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified ACCodeSnippetRepository/en.lproj/InfoPlist.strings
100644 → 100755
Empty file.
Empty file modified Documentation/architecture.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt10@2x-92.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt1@2x-83.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt2@2x-84.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt3@2x-85.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt4@2x-86.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt5@2x-87.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt6@2x-88.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt7@2x-89.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt8@2x-90.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/mt9@2x-91.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Data/st0-332.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/Index.zip
100644 → 100755
Empty file.
Empty file.
Empty file modified Documentation/architecture.key/Metadata/DocumentIdentifier
100644 → 100755
Empty file.
Empty file modified Documentation/architecture.key/Metadata/Properties.plist
100644 → 100755
Empty file.
Empty file modified Documentation/architecture.key/preview-micro.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/preview-web.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Documentation/architecture.key/preview.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified LICENSE
100644 → 100755
Empty file.
140 changes: 37 additions & 103 deletions README.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,106 +1,40 @@
# ACCodeSnippetRepositoryPlugin

ACCodeSnippetRepositoryPlugin is a Xcode plugin for seemless synchronization of snippets with a git repository.

The snippets are synchronized as human-readable text (and not an obscure _.codesnippet_ plist).
# ACCodeSnippetRepositoryPlugin_Fixed

[![Build Status](https://api.travis-ci.org/acoomans/ACCodeSnippetRepositoryPlugin.png)](https://api.travis-ci.org/acoomans/ACCodeSnippetRepositoryPlugin.png)

If you want to know more about snippets in Xcode, I recommend reading [Xcode Snippets on NSHipster](http://nshipster.com/xcode-snippets/).

Want to try the plugin with an existing public repository? Try [acoomans](https://github.com/acoomans/xcode-snippets) or [mattt](https://github.com/mattt/Xcode-Snippets.git)'s snippets.


## Install

1. Build the project to install the plugin. The plugin is installed in `/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ACCodeSnippetRepository.xcplugin`.

2. Restart Xcode for the plugin to be activated.

Alternatively, install through [Alcatraz](https://github.com/supermarin/Alcatraz) plugin manager.


## Configuration

There should be a `Plug-ins` item in the xcode menu:

![screenshots](Screenshots/screenshot01.png)

First configure the plugin by forking a remote repository:

![screenshots](Screenshots/screenshot02.png)

When you fork, all snippets from the repository (with the right format, see below _Format_) will be imported in Xcode. Your existing snippets, that do not belong to any repository yet, will not be affected.

After forking, you will given the choice to import (user) snippets from Xcode to the repository.

Also, you can remove the system snippets if you don't use them.

In case of any problem (see below, _Bugs and limitations_), you can go to the user snippets folder and backup your user snippets. Note that user snippets are automatically backed up before any fork.


## Usage

Use snippets like you always do in Xcode. Snippets are automatically added/edited/removed and pushed to the git repository.

![screenshots](Screenshots/screenshot03.png)

### Format

The snippets are text files with a _.m_ file extension, in the following format:

* a header, containing:
* the title
* description
* various Xcode-related information in a _Key: Value_ format (keys ordered alphabetically)
* the code

If your snippet does not contain any header, the header will be added, committed and pushed when imported.

**Note**: do not remove the Xcode-related information as they are needed for synchronization.

**Note**: if you manually create a snippet by copying an existing one, change or remove the _IDECodeSnippetIdentifier_ as Xcode does not like having two snippets with the same identifier (will crash).

![screenshots](Screenshots/screenshot04.png)

### Synchronization

Every change in a snippet is commited and pushed independently.

Snippets are synchronized (pulled) with the remote repository is done every 10 minutes (if the option is enabled) or when the `Update snippets` item was chosen in the menu.

In case of conflict during the merge, the remote repository has priority.


## Bugs and limitations

Probably a lot.

Backup your snippets and your git repository. Expect bugs, crashes, synchronization issues, data and hair loss.


## Contributing

### Architecture

First a quick word on the architecture:

The plugin does some swizzling with the _IDECodeSnippetRepository_ class from _IDECodeSnippetLibrary.ideplugin_ (_/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin_).

_IDECodeSnippetRepository_ is modified so to make it possible to attach data stores (_ACCodeSnippetDataStoreProtocol_).

Here's a colourful schematic to make you even more confused:

![screenshots](Documentation/architecture.jpg)

### Pull requests

If you want to contribute, send me a pull request.

### Improvements

Ideas of improvements:

- synchronize _.codesnippet_ plists
- multiple data stores (in progress but need to be careful when synchronizing)
- github's gist support
This is a fixed edition for ACCodeSnippetRepositoryPlugin for support Xcode 7.2 and above.


## 1.Fix issues:

1. Fix MenuItems (I move the menuItems to 'Source Control' menu from 'Plugins' to avoid plugin conflicts);

2. Fix Snippets Path (Because Xcode 7.2 no longer recognize snippets in subfolders,
and I change the path to ../CodeSnippets/ ).

### 2.ReactiveCocoa and PromiseKit codesnippets from myself:

* [ReactiveCocoa][ADCodeSnippet]

### 3.Follows the [acoomans][acoomans]'s guide, and noticing my fix issues above.

* [ACCodeSnippetRepositoryPlugin][ACCodeSnippetRepositoryPlugin]


### 4.Thanks to

* [Xcode-Plugin-Template][Xcode-Plugin-Template]

* [UpdateXcodePluginsUUID][updateXcodePluginsUUID]


![screenshots](Screenshots/screenshot02.png)


[acoomans]: https://github.com/acoomans/ "Title"
[ACCodeSnippetRepositoryPlugin]: https://github.com/acoomans/ACCodeSnippetRepositoryPlugin/ "Title"
[Xcode-Plugin-Template]: https://github.com/kattrali/Xcode-Plugin-Template/ "Title"
[updateXcodePluginsUUID]: https://github.com/homtang/updateXcodePluginsUUID/ "Title"
[ADCodeSnippet]: https://github.com/ForrestAlfred/ADCodeSnippet/ "Title"


Empty file modified Screenshots/screenshot01.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Screenshots/screenshot02.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Screenshots/screenshot03.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified Screenshots/screenshot04.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.