2006-11-06

My month with TextMate

Back in September I mentioned how I was doing a quick tour of modern editors on OS X. A bunch of people suggested TextMate, and there was one suggestion for BBEdit.

So I decided to download TextMate and give it a try for 30 days. I read the entire manual, started a cheat sheet of keyboard shortcuts, and used it for all of my code editing (including reST) until the free trial ended. In other words I gave it a fair shake.

Let's start with the GUI in general. The app itself is a nice Mac app. The GUI is simple overall and slick, keeping everything that is not directly needed away in a menu option. It basically doesn't get in your way graphically which is good.

But the big thing for TextMate (and pretty much any editor) is its customization. TextMate has this idea of language bundles. A bundle specifies the syntax of a language (which leads to highlighting), auto-formatting, snippets (mix of boilerplate with tab stops and shell replacements), and commands. A pretty good range of abilities.

But the first problem is that it uses the shell to do all of this. Now I personally don't like shell programming. Luckily you can, though, use a shebang to use any executable you want to do things. The problem with that is stuff in TextMate tends to be geared towards Ruby (if it has a specific language leaning). But I can look past this in general since you can pipe stuff to Python.

But then you have the issue of the default Python bundle being a mish-mash of stuff that does not quite follow Python coding guidelines and best practices. For instance, the function snippet does not include a docstring. Another is that the syntax definition finally got 'with' added, but it was not put into the stuff needed to lead to proper indentation. And the automatic unit test runner assumes the file ends in 'Tests' (Python's unit test framework has files start with 'test_'). Or how about the script to run Python code and get a pretty HTML output requires the MacOS module even though it is never used (which sucks for people like me who prefer to work off of a vanilla UNIX build)?

Yes, it is relatively easy to fix all of these issues. But it is still annoying that I have to fix these little things when they seem rather basic to me. I expected a basic, unified feel the what it provided for Python and to have simple stuff just work. But that was not the case for me and that is disappointing. I feel like that in order for me to like TextMate I would have invest a ton of time revamping its Python support to make me happy. Problem is that I don't have to do that with Vim because the defaults are good and I have already put the time in to get the rest going.

In other words TextMate is nice, but it doesn't feel overly superior to Vim which I already have some vested time in. Plus Vim is free. =) But if you are not connected to an existing editor like Vim or Emacs I would definitely give TextMate a try.

I am going to give BBEdit a try after Thanksgiving. But I think after that if BBEdit doesn't win me over or if I don't start missing TextMate I will be back to Vim come the new year.