Joe Maller.com

Switching to TextMate

I’ve been watching TextMate since late 2004. My first reaction was similar to Michael Tsai’s observations around the same time; “not quite right.”

That’s all changed.

I love BBEdit. I bought my first copy at MacWorld Boston in 1994 or 1995, from Rich Siegel’s own hands. I still have the “BBEdit: It Doesn’t Suck” t-shirt that came with it. Having used that tool day in and day out for over a decade, it holds a very real personal attachment.

The latest thing that got me to try TextMate again (at least the fourth time I’ve done so), was Giles Turnbull’s MacDevCenter post. Nothing specific, just a reminder that it was still there, still being actively improved and that I was still lusting after section folding. Giles summed it up well:

BBEdit, which I’ve been using for the same task for some years now, has done nothing to annoy or frustrate me. There’s nothing about it that I particularly dislike.

But TextMate offers everything I like in BBEdit and plenty more.

One key thing BBEdit offered was a simple interface for mapping languages. I created a “codeless language module” for FXScript which has been working well for the past year. While on vacation, under the guise of intentionally avoiding work related stuff, I started fussing with and deconstructing TextMate’s language bundles. After about an hour, I had the guts of an FXScript Bundle working. The depth of what’s possible with TextMate is astonishing. Not only was I able to map FXScript completely, I could also do silly things like color-code class syntax for RGB color variables, ie someColor.r. Functions mapped correctly without hacks, even when smashed onto one line, and they fold! (I’m going to test the FXScript bundle out for a bit before making it public)

Creating bundles in TextMate had a steep initial learning curve, despite my being pretty good with regular expressions (I learned regexes because of BBEdit). The most damning thing however was figuring out how to save them. Bundles don’t offer a save dialog or any sort of modified indicator, and they seem to only write out changes when TextMate quits. I learned the hard way to quit and restart the application frequently, bad language rules would cause crashes and I’d lose whatever I had gotten working since the last application launch.

What TextMate appears to lack in AppleScript support it more than makes up for with internal macros and shell commands. I’ve been moving the Joe’s Filters documentation from semi-static PHP files into WordPress. Manually, each page took 10-15 minutes. Using AppleScript and BBedit, that was down to 2-3 minutes, most of which was cursoring around. However with a few macros in TextMate and one dozen-line AppleScript, I was able to convert 30+ files in less than 30 minutes.

I still have a few custom AppleScripts I need to translate from BBEdit to TextMate, but seeing as how those are mostly wrappered shell commands, it shouldn’t be too difficult.


  • cj

    Any idea when we’ll see this? Loving Textmate as well.

  • Joe

    Right now I’m pushing to have another new beta out before NAB with some new stuff and improvements to existing stuff. After NAB I’ll put together the bundle and upload it.

  • cj

    Sounds good. Thanks.