TextMate Wishlist

April 29, 2007     

The day I started using Rails I switched to TextMate. Up to that point I had used BBEdit faithfully for years. Other text editors came and went, but TextMate was the first one to challenge BBEdit. I consider BBEdit to be the vi of Mac text editors—it has a fully capable feature-set out of the box, but it’s a little arcane and difficult to extend. TextMate is more like emacs—it’s built to be customized. Of course neither has the maturity of emacs or vi, but having an OS X GUI goes a long way in my book.

TextMate is an amazing editor with a lot more potential than BBEdit, but I still fire up BBEdit once a week for several reasons. Here’s what I wish TextMate did:

  • Edit large files. A lot of TextMate’s potential comes from its custom text window code (everyone else uses NSTextView as far as I know), but it doesn’t do will when files start climbing over 100k. BBEdit on the other hand, competes with vi in this regard.
  • Exclude directories/file types from project search. edit: nevermind Often times there will be a directory in my project with generated files. Maybe several thousand of them. This can cause Find in Project... to slow to a crawl, and there’s no way to cancel! The same problem exists with large binary files that are pointlessly searched. Having a single Photoshop file can effectively disable project-wide search.
  • Saved Searches. The search box is one area BBEdit gets right. Search and replace pairs should be able to be saved and labeled. Independent histories for each one quickly become useless, especially when integrated with system wide search history. There have been improvements, but I’d like to see more.
  • Provide Non-Destructive Options for HTML Tidy. Okay, this could easily be fixed in a bundle, and it’s pretty specific. But this is one of the main reasons I still fire up BBEdit. I work with a lot of soupy legacy HTML. To make sense of it, I often need to fix the indentation. But HTML Tidy by default does things like encoding attributes and closing open tags. Since I’m always working with dynamic code, I need a tool that basically only touches whitespace. BBEdit does this well.
  • Duplicate File. Okay, I’m scraping the bottom of the barrel here. This is a tiny feature request. I’d like to be able to duplicate a file in project view instead of having to create a new file and copy the contents over manually.
  • Nested Snippets. TextMate’s snippets are the main reason I switched to TextMate. BBEdit can’t touch them, but that doesn’t mean they couldn’t be better. One tradeoff with snippets is whether to end the snippet inside a tag so other snippets can be used inside it, or whether to end the snippet outside the tag, so you can tab through and continue editing after the tag. If TextMate had the ability to maintain a ‘snippet stack’ you could have the best of both worlds.

Overall that’s not a very big list of complaints, but the ones near the top can be crippling. The beauty of TextMate is that almost any editing feature I want can be added myself. I would love to see TextMate’s optimization and maturity develop to the point where I can dump BBEdit for good.

Ned Baldessin says…
June 26, 2007 at 3:27PM

Exclude directories/file types from project search.

You can exclude a pattern using the Info button in the project drawer. It’s a pattern, so if your directory/file names aren’t unique, that’ll be a problem.

Also, for filetypes to exclude from search: right click on a file in the project drawer and choose “Treat files with .xxx extension as binary”.

Gabe da Silveira says…
June 26, 2007 at 3:35PM

Yeah, I think I discovered “Treat xxx as binary” the day after posting this. The project thing took me a little longer to figure out. Amazingly I never set up a project in TextMate until last month. Before that I just opened directories.