web-dev-qa-db-fra.com

Développement de plugin Xcode 4

J'ai cherché partout mais je ne trouve rien. Est-ce que quelqu'un sait comment créer un plugin Xcode 4?

46
rid

Pour autant que je sache il n'y a aucun moyen officiel de créer des plugins Xcode 4 (tout comme il n'y en avait pas pour la v3.x).

Voici un openradar sur le manque de prise en charge des plugins par Xcode:

Veuillez prendre en charge la possibilité pour des tiers d'étendre Xcode via une API de plugin publique. Aperture, Visual Studio, Eclipse, TextMate et d'autres applications bénéficient de cette capacité. J'aimerais voir des refactorings plus avancés, l'analyse de code (pensez Resharper par Jetbrains) et la modélisation.

Fournir une API de plugin pour Xcode 4 (rdar: // 8622025)

Veuillez duper ceci si vous voulez des plugins !


Edit: Je suis juste tombé sur ceci:

Cédric Luthi: " Xcode 4 prend en charge les plugins définis par l'utilisateur , voir CLITool-InfoPlist pour un exemple de plugin Xcode 4. fonctionnel. Il vous suffit d'ajouter XC4Compatible (true) dans Info.plist. "

https://github.com/0xced/CLITool-InfoPlist


Cela étant dit, ces dépôts GitHub pourraient également être utiles:


De plus mogenerator le plugin Xmod pourrait être un bon point de départ.
(n'était pas encore compatible avec Xcode-4, la dernière fois que j'ai vérifié, cependant)

53
Regexident

La meilleure façon d'apprendre est de regarder le code du plugin github (voir la longue liste ci-dessous):

  • Fondamentalement, c'est un bundle de plugins.
  • Pas de main.m Pas de MainMenu.xib
  • Première classe chargée en définissant NSPrincipalClass dans info.plist
  • dans son init: vous vous inscrivez aux notifications AppKit
  • Voir les exemples de code
  • certains vérifient l'ID de l'application mainBundle pour s'assurer qu'il s'agit bien de XCode
  • La classe de fenêtre de l'éditeur XCode est DVTSourceTextView
  • C'est une sous-classe de DVTSourceTextView: NSTextView: NSText
  • vous pouvez donc vous inscrire pour écouter ses notifications pour NSTextView ou NSText
  • tels que NSTextViewWillChangeNotifyingTextViewNotification

Parce que ce n'est pas une norme officielle, j'ai remarqué que chaque échantillon se charge de différentes manières.

ÉCHANTILLONS DE PLUGIN XCODE

compilé soit en recherchant github/web pour

'DVTSourceTextView'

Il s'agit du nom de classe de la fenêtre de l'éditeur Xcode

ou

Touche de liste d'informations

'XC4Compatible'


https://github.com/omz/ColorSense-for-Xcode

https://github.com/ciaran/xcode-bracket-matcher
- uses a Ruby parser run as pipe!

https://github.com/joshaber/WTFXcode
https://github.com/0xced/NoLastUpgradeCheck
http://code.google.com/p/google-toolbox-for-mac/downloads/list
    see GTMXcode4Plugin
https://github.com/DeepIT/XcodeColors
https://github.com/0xced/CLITool-InfoPlist
https://github.com/sap-production/xcode-ide-maven-integration
https://github.com/ciaran/xcode-bracket-matcher

POUR ACCÉDER AU NSTextView qui est la console

https://github.com/sap-production/xcode-ide-maven-integration

- (NSTextView *)findConsoleAndActivate {
    Class consoleTextViewClass = objc_getClass("IDEConsoleTextView");
    NSTextView *console = (NSTextView *)[self findView:consoleTextViewClass inView:NSApplication.sharedApplication.mainWindow.contentView];

    if (console) {
        NSWindow *window = NSApplication.sharedApplication.keyWindow;
        if ([window isKindOfClass:objc_getClass("IDEWorkspaceWindow")]) {
            if ([window.windowController isKindOfClass:NSClassFromString(@"IDEWorkspaceWindowController")]) {
                id editorArea = [window.windowController valueForKey:@"editorArea"];
                [editorArea performSelector:@selector(activateConsole:) withObject:self];
            }
        }
    }

    return console;
}
7
brian.clear

Jetez un œil à ce nouveau plugin: https://github.com/sap-production/xcode-ide-maven-integration . Vous pouvez peut-être dériver quelques concepts pour votre plugin.

4
Alexander

Hier ColorSense pour Xcode 4 est sorti sur Github. Étant donné que le code est vraiment compact réparti sur seulement 3 classes, je pense que vous devriez jeter un œil là-bas.

3
Jens Kohl

Xcode n'a pas d'API de plug-in publique.

C'était le cas avec les versions antérieures, et c'est aussi le cas avec Xcode 4.

2
Chris Hanson

Jetez un œil à cet article: Xcode 4: Interface Builder Plugins

0
zelegolas