Friday, December 20, 2002

Now that the December Developer Tools has apparently shipped, I can finally talk about the cool hack I mentioned a few weeks ago.

As Project Builder has evolved, it has become more and more modular. In particular, Apple has clearly been expending a huge amount of effort into making it possible to plug in just about any language, development model, or toolset into the PBX environment.

This new release adds several new plug-ins that are of a magnitude that the addition of templates were in the July release. Not all of the modularity is visible yet, but it is there.

In particular, the July release adds support for several dozen different types of files. The support comes in the form of a file type editor that allows one to choose various behaviors that should occur when double-clicking a file (including the ability to edit the file with an external editor). First class emacs support is built in, though slightly incomplete, and PBX now has elisp expressions buried in it if you look really hard.

Want to use BBEdit? No problem.

With this release, PBX now has the ability to perform syntax highlighting and formatting of many scripting languages.

Unfortunately, Python is not one of them.

Until now.

The entire syntax highlighting and formatting support in PBX is totally modular and can be extended by simply dropping the right files into the right places. So, I created a language specification and file type specification for Python. Simply drop the files into ~/Developer/ProjectBuilder Extras/Specifications/ and PBX will have the ability to perform syntax highlighting on Python files.

This will also allow you to use emacs as your external editor for Python files, if you desire.

If you turn off the insertion of tabs and set the tab width to 4 spaces, Project Builder is actually a very pleasant Python editor. Indent and dedent are but a short command sequence away. The only thing that is missing of importance is scope based selection by triple-clicking. That may be easy to add.

The Python specification files and a [restructured text / docutils based] README are available for download.

Next up?

I'm thinking a compiler spec could be done using PyChecker to enable some fairly advanced and very useful Python syntax checking and integrity analysis from within PBX. It would also be useful to have a bit more intelligent parser/lexer than the default class.

In any case, a huge note of congratulations and a hearty Thank You to the Project Builder / Dev Tools team at Apple. This stuff kicks major ass! There is certainly room for growth and improvement, but it is one hell of a foundation!
1:00:10 AM  pontificate