Tag Archives: textmate

Three text editors

I love reading about the setup for other Mac users: what kind of desks, computers, and software they use. The full list of applications usually overlaps quite a bit with my own Dock, but every once in a while there is some new app that I am not using, but should be. And there are always the two killer apps that provide the most insight into how a user works: email and text.

Are they a long-time Mac user who can’t live without BBEdit? Do they use Mail.app but secretly wish that it was better?

“Dan starts off his post”:http://hivelogic.com/articles/2006/04/17/setup_part_ii with TextMate, which has quickly taken over the Mac Rails community. Despite a rocky 1.0, I gave TextMate a second try with 1.5 and have enjoyed using it. There is some very powerful stuff in it, some of which never clicked for me until I watched “this screencast of snippets in action”:http://macromates.com/screencast/scopes_and_comments.mov.

But I can’t use TextMate for everything. There are three text editors always running on my machine, and I don’t see that changing anytime soon:

  • TextMate: My new default for general-purpose editing, and Ruby on Rails projects.

  • Xcode: Needed for C++ and Objective-C because of the integration with the debugger.

  • BBEdit: Great for batch grep processing and multiple-file diff.

On a whim a few nights ago I tried to use TextMate for editing even C++ and Objective-C. It’s trivial enough to configure Xcode to use TextMate as its default editor (in Xcode, look under Preferences → File Types), and I was happily surprised that you can even run builds from within TextMate out of the box. If you have a TextMate project in the same directory as your Xcode project, the build will just work. If not, you can manually point TextMate to your Xcode project by clicking the “i” icon in the drawer when no files are selected, then add the shell variable TM_XCODE_PROJECT that points to a full path to your project.

Unfortunately I could only keep this setup for one night before I had to abandon it. Without breakpoint support or any integration with the debugger (impossible), it breaks the workflow cycle of testing and fixing bugs quickly.