2013-12-04 3 views
2

Я создаю плагин для Xcode. Который загрузил фрагменты кода из удаленного места и переместился в папку с фрагментами пользователей Xcode. которыйЗагрузить фрагменты Xcode с перезапуском Xcode

~/Library/Developer/Xcode/UserData/CodeSnippets 

Каждая вещь работает отлично, за исключением, что мне нужно перезапустить Xcode каждый раз, когда я загрузить код snippets.I хотите загрузить новые добавленные фрагменты кода без перезагрузки Xcode.

Любые предложения?

ответ

1

Недавно я написал аналогичный плагин для синхронизации фрагментов с репозиторием git. Вы можете проверить исходный код здесь: https://github.com/acoomans/ACCodeSnippetRepositoryPlugin.

Наличие обновления библиотеки фрагментов при изменении фрагментов (в обе стороны) не является тривиальным и обязательным swizzling Внутренние классы XCode.

У Xcode есть класс IDECodeSnippetRepository, ответственный за сохранение фрагментов на диске при создании или редактировании и удаление их при удалении.

ACCodeSnippetRepositoryPlugin имеет IDECodeSnippetRepositorySwizzler класс, который Swizzle в saveUserCodeSnippetToDisk: и removeCodeSnippet: методы с пользовательскими реализациями самостоятельно, синхронизируя сниппет с мерзавца репо.

enter image description here

На самом деле, чтобы быть действительно точным, мой IDECodeSnippetRepositorySwizzler может иметь несколько фрагмент кода хранилищ данных, присоединенные и будем называть addCodeSnippet: и removeCodeSnippet: методы по каждому из них при создании/происходят события редактирования/удаления.

ACCodeSnippetRepositoryPlugin предназначался для управления несколькими источниками фрагментов (например, git, gist и т. Д.), Но я не закончил его реализацию. Я даю эту точность, потому что, я не знаю, с чем вы хотите синхронизировать свои фрагменты, но я могу иметь смысл добавить вашу функциональность в ACCodeSnippetRepositoryPlugin.

Смежные вопросы