Hunch

1

Extending Xcode

May 4, 2008 by Rasmus, tagged cocoa, objective-c, osx, plugin, programming and xcode, filed under software

xcode-icon-256A lot of software enables the user to extend it in order to enhance productivity and customize her work environment. An excellent example of this kind of software is TextMate. But I’m not going to talk about TextMate today, but instead another very popular development tool for the Mac OS – Apple Xcode.

Xcode have had plug-in support during most of it’s life time so far, but the means for creating new plugins has been (and is still in many ways) something only Apple has. Documentation is extremely sparse and most of that which is available is outdated. If you bring up the “New project…” (CMD+SHIFT+N) you will find “AppleScript Xcode Plug-in” inside the “Standard Apple Plug-ins” category. However great this might sound, it restricts you to only fiddle with AppleScript, which in my point of view is just a pain in the ass. (AppleScript, that is. One might call it a necessary evil)

Writing a “real” plugin (using Cocoa, AppKit aso.) should be as easy as writing a normal Application, since a xcplugin is just a simple bundle like any other OS X bundle. What is different though, is that you probably want to fiddle with Xcode itself. (i.e. change the color of some text based on some rules, which for instance a language extension would do) Doing so requires knowledge (i.e. headers) about how to poke around. Unfortunately Apple does not expose these interfaces. Damien Bobillot maintains a (somewhat outdated) document called Xcode’s Plugin Interface in which he provides a package of private headers one must have, in order to use the DevToolCore framework.

Continue reading...

D and TextMate

April 30, 2008 by Rasmus, tagged d, osx, plugin, programming and textmate, filed under software

Example of the syntax highlighterIn combination with the Tango OS X package release I created a D bundle for TextMate. There is already a D bundle available from Macromates bundle repository, but it is extremely simple. I started out pretty simple too, but based the language parser on the Java parser.

However, I’ve been home reading Learn to Tango with D and after a while it started itching in my coding fingers – I re-wrote much of the TextMate bundle and it now has extensive support for all parts of the D language as well “knowledge” about all (non-private) exceptions, classes, structs and interfaces in the lastest version of Tango (0.99.6). What also might be considered a major improvement is the relatively vast number of helpers (snippets, command, templates). Click here for a list of the helpers. (as at the time of writing this) Integration with DSSS is supported through graphical build, run and clean commands. Inline documentation is handled as Javadoc thus writing comments in D makes use of all helpers exposed by the Javadoc bundle. This should probably be revisited in the future to comply with the exact specs of D’s version of inline documentation.

The D bundle for TextMate is now it’s own project. Download and install it directly:

svn co http://svn.hunch.se/rasmus/textmate/D.tmbundle/
open -a TextMate D.tmbundle

(Checking it out from the repository and importing it with TextMate)

If you like the color scheme in the screenshot above, why not grap a copy of it?!

svn co http://svn.hunch.se/rasmus/textmate/themes/ hunch-themes
open -a TextMate hunch-themes/Hunch-Dark.tmTheme