Is there any documentation for building Xcode 4 plugins?

Recently I’ve noticed a couple of projects on github that extend the functionality of Xcode 4 via plugins.

Two projects as examples by @olemoritz:

  • Code loses syntax color in Xcode 4
  • Upgrading to Mountain Lion and XCode 4 broke my “make”?
  • does an entry in Instruments “leaked block” during application running imply memory leak?
  • XCode 4:Insert Subversion revision number in Xcode
  • “bad codegen, pointer diff” linker error with Xcode 4
  • How to read RFID using iPhone SDK
    • MiniXcode changes the main toolbar.
    • ColorSense provides overlays to help pick colours.

    Both projects are installed into ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins and Xcode just picks them up.

    Are there any sources of documentation (officlal or user generated) on extending Xcode?

    Edit: ping @olemortiz 😉

    2 Solutions Collect From Internet About “Is there any documentation for building Xcode 4 plugins?”

    As I wrote those plugins you mentioned, here are some pointers:

    • There is no official documentation from Apple, so while Xcode does have a plugin infrastructure, it is entirely private API. (but hey, no one wants to submit Xcode plugins to the App Store, right? ;)) – The usual warnings apply: You should code very defensively, and it’s possible that Xcode updates break things. Any plugin can bring Xcode down entirely, so be careful.

    • There is a seemingly abandoned effort to document the plugin interface here.

    • There are some open source projects that allow you to see what’s needed to get a plugin loaded at all, e.g. mine and there’s CLITool-Infoplist (I think that’s where I got the basic structure from, but I can’t really remember, because I’ve been doing this without publishing anything for quite a while).

    • You can use class-dump to generate headers from Xcode’s private frameworks, e.g. IDEKit and IDEFoundation (in Reading those gives you quite a bit of information on how Xcode is structured internally. DVTKit and DVTFoundation (in can also be useful to class-dump.

    • You can observe all notifications that are sent in Xcode by registering an observer for nil. I initially just logged all those notifications to get an idea of where I might be able to hook into.

    Good luck!

    There is no formal API or documentation.

    Having said that nearly all community plugins are open sourced, use to discover new plugins, then follow their github source code to learn how people are implementing them.

    Here are some useful resources: