Yet another text editor – TextMate


TextMate logoI’m writing this review, ironically, on the very product that I’m reviewing. I’m testing out its spell check and whatnot. If you didn’t know already, this is TextMate, yet another text editor for Mac OS X.

I’ll skip the usual stuff, since we all know how a typical text editor works. We also know that some have special features, like auto-complete, that make our typing a lot easier in small ways. Text editors on Mac OS X have been able to use the standard features that Apple has created – like spellcheck – and it all adds up to it “feel” like a real Mac app.

TextMate is more unique than I first assumed. I’m branching it – in my brain – as a cross between the features of BBEdit, with a taste of Dreamweaver and XCode mixed in. It does have the auto-complete, like Dreamweaver, for use with typing various things. However, that autocomplete is focused on different things than Dreamweaver. some elements, like quotes, are completed, and you can just type in the text in between the quotes. I kind of wish that TextMate would treat HTML as Dreamweaver does – the closing tags are added when you add the slash in the tag. We programmers are collectively lazy… we need all the help we can get. Edit: On further inspection, it’s in the “Automation” menu. Why isn’t there at least an option for this feature… it’s there for parenthesis and quotes… why not tags?

TextMate, like BBEdit, lets you create a new document from a template. You can pick from way too many different possible programming languages. I tried out the HTML templates, which are good. There is also one template for an Objective-C object… just a single NSObject subclass, with two files – a .h file and a .mm file. I’m not sure how useful the Objective-C stuff is, since it’s not nearly as convienient as XCode. And XCode is free, so for this particular purpose, I don’t see much need for TextMate.

The HTML tools are where TextMate could very well be taking down BBEdit. It’s not as bloated and clunky as BBEdit, and can basically do everything that I’ve needed to do with HTML and Javascript. I do a bit of web design stuff. It’s pretty useful, and adds all the basic declaration tags for anything between HTML 4.01 to XHTML 1.1. Nifty!
In addition, the complexity of HTML (with all of those nested tags and trees of crazy confusing code) is all answered with these little arrow things that appear on the left grey strip on the side of the text editing window. If you click on them, they collapse and turn into one. The block of code that’s represented by those arrows becomes quite a bit smaller. This feature also works on my Cocoa code that I’ve tried, but it’s most useful on HTML because of the scripting language’s nesting structure.

TextMate's unique status bar

If you have some very specific needs for the text editor templates you use, TextMate allows you to create new templates. You can also edit other language-handling portions of the program with a “bundle editor” in the program. It might take you a second to understand how this thing works, but it’s pretty cool. It needs a redesign at some point to make it more clear on what to do for new users.
If you’re an Objective-C programmer, but want an editor that’s better than XCode, you might find BBEdit more useful. But try TextMate first, and see if it does what you want it to with the templates. Both BBEdit and TextMate use very custom views, thus getting around the bugs associated with NSTextView.

TextMate is a very clear competitor to BBEdit (and starts to cover the features of Dreamweaver), and is actually much cheaper at 39 euros ($47 US). If you’re focusing on HTML, or have very custom template needs, this program could be very useful. If you’re a poor student, SubEthaEdit will serve your needs fairly well, but without the automation. There is a TextMate demo that you can try out by downloading it from their web site at

Update: After playing with it a bit more, I’ve realized it has this annoying habit that’s driving me up the wall… it seems as though, every time I load it, it has to download yet another update! What the heck for?! I won’t get too down on this subject, but I hope they make these updates less frequent, or put some noticable features in. These are all bugfixes… more and more bugfixes! That doesn’t bode well for them. I’ve got a huge HTML-based project coming up, so I’ll try TextMate on that, and see how it goes.



Ummm…what a shallow review. Do you actually use a text editor professionally? I think if you used TextMate on a daily basis, for your bread and butter work, you might come to understand what it brings to the table. You clearly have not at all comprehended the wild and wide range of automation and auto-completion capabilities that it offers to someone who learns how to use it.

To be sure, the documentation could use a great deal of improvement, but the software is itself improving so rapidly that writing documentation is nearly impossible right now. I think that in a year, it will become clear just how flexible and amazing this software is. But, if you apply yourself, you can take advantage of it today, and be the more productive for it.


I suspect TextMate will continue to grow on you as you use it. Its outstanding strength, in my opinion, is the way it flexibly and expandably works with so many different languages. I use six or eight of its different modes regularly. The features are compartmentalized (so you’re not staring at a lot of HTML options or accidentally invoking HTML snippets when you’re editing Python, for example) but discoverable (so that while writing PHP code you can see that there’s a command to look up the current function in the online manual).


Oops, in the above it should be just type “describe [tab]”, and this works because I defined “describe” in the macros to run the shell script.


I’ve been using TM more or less since it came out after using BBEdit for 5 or 6 years — I would never go back to BB (sorry Barebones, who are great guys also!)… TM just rocks. The macros and grep are to me much easier to set up and more powerful. The way it can run shell scripts is fab — e.g. I have a “trigger” to run the following to display a MySQL table:
echo; /usr/local/mysql/bin/mysql database-name -e "DESCRIBE table-name". I just type “describe ” and fill in the names and it runs my query. (Hard to describe but incredibly useful in practice :)

Anyway I highly recommend it, and it’s priced very reasonably. There’s a great user community and blog and the updates come very regularly.

Allan Odgaard

Thanks for the review!

The updates are not (just) bug fixes, they do introduce new stuff (see the release notes which open after each update). You can disable it in Preferences → Software Update (or switch from “Cutting-Edge” to “Minor Updates”). Many users do however enjoy the frequent updates.

As for using it for Cocoa/Objective-C, the snippets should give you a tremendous productivity boost (see e.g. this movie) and the project management (with ⌘T to quickly switch to any file you want) should also help you move around your sources much faster than what Xcode has (and moving between sources is a frequent action with larger projects).

Comments are closed.