TextMate — the missing editor for Mac OS X

Mads Hartmann Jensen has written a bundle which takes advantage of a new injection feature of language grammars to highlight what can be considered improper whitespace. Highlighting both trailing whitespace and mixed tab/space indentation it can also be limited to just one or the other.

TextMate 2 isn't just about adding a ton of killer new features. It's also about throwing out what just plain didn't work. That means you can kiss the old project files goodbye.

Of course, you throw out bad ideas so you can replace them with good ideas.

Project files serve a couple of purposes in TextMate 1. One was to give you access to folders you commonly work with. That's now handled through TextMate 2's File Browser and we're going to talk a lot more about that in the future. Another purpose though was to support project level configuration. Configuration is a great idea, but the old interface was awkward and inflexible.

TextMate 2's new .tm_properties files address this need, similar to .git configuration files.

One of the new features in 2.0 is the ability to install new bundles directly from the app. You can see the list of available bundles by opening preferences and going to the Bundles tab. Bundles installed from here will be kept up-to-date automatically. In addition if you try to open a filetype without having the currect bundle TextMate will offer to install it if available.

Also listed are a variety of theme bundles, you can filter list by clicking 'Themes' in the top bar. The Themes bundle is installed by default and includes a collection of themes from 1.x.

For the duration of the alpha we have kept the support files separated so both versions can be run without affecting the other. This means you will have to manually move over your personal bundles and any bundles not available in the installer.

To create a new file you can use the shortcut ⌥⌘N to create a new tab, when you save this tab it will default to the current or selected directory in the sidebar. Update: When providing the file name (in the save dialog) you can use brace expansion to create multiple files, e.g.: MyView.{mm,h}.

The current release will submit non-anonymous crash reports so we can pinpoint problem areas in the alpha. This can be disabled in preferences if needed but it is a great help if you can leave it on.

Around the Web

Ernie Miller give a good overview of how to use rmate to edit files on a remote server.

David Lanham shows a detailed shot of the new icon he designed for us. Update: David has posted a comment about the process of coming up with the icon.

The excitement for a new version has been tremendous and today we’re finally able to repay the much appreciated loyalty and moral support from the community by releasing the first public alpha: TextMate 2.0 alpha.

It’s important to stress though that being an alpha release; it is not complete. It has reached a point where it may suit some early adopters and provide some relief to those who have been questioning TextMate’s future. For the time being, the alpha builds are only for people who already have a TextMate license and an Intel Mac.

There are also many things that didn’t make it to this alpha, far too many to mention all of them, but a few deserves to be mentioned as they are likely to come up a lot in the coming days:

Split views: Yes, I actually had this on the alpha milestone, I’m not overly excited about this feature myself, but I know it’s a very common request, so eventually it should find its way into the application.

Full screen mode: This is mainly because we are hesitant to go Lion-only so we are holding back with “lionizing” TextMate till we feel confident we can fully drop backwards compatibility.

Performance: Overall performance is fine, but there are still edge-cases that we haven’t looked into, for example the long lines issue which also exists in 1.x or opening files that exhaust TextMate’s memory space.

Bundle editor: While a proof-of-concept bundle editor is included, it is provisional, has some flaws, and not how we envision the final bundle editor to be.

Settings: Not everything in the Preferences window has an effect at the moment and several menu settings are not sticky, some even revert when switching tabs. Those can be set via .tm_properties — more about this in an upcoming post.

There has been a lot of speculation and trepidation about the future of TextMate recently, mostly about whether there will be another major release. Work on 2.0 began and while we wish it could have been completed faster we are very pleased with how it is turning out. Development has reached a point finally where we can make an announcement:

There will be a public alpha release this year, before Christmas, for registered users.

With Lion getting let loose around the world we have posted a list of the known issues to the wiki and will be keeping it updated if any more are found. We will release an update to correct the issues where possible once we believe that all of them have been found.

In a recent release of TextMate we moved away from our old tab switching shortcut to one more commonly used. After releasing this update however we discovered that not all TextMate users are using the US keymap ☺ so we decided to look closer at shortcuts supported in a variety of applications.

Apple has hardcoded the Finder to open files without extension in Terminal when they are executable and otherwise TextEdit.

Starting with Snow Leopard you can however use Michel Fortin’s Magic Launch ($14) to alter the behavior. It can also be configured to open the same file type with different applications based on location, content, or similar.

Prior to r1509 TextMate had a very neat feature: you could run (⌘R) a piece of C, Ruby, Python, Shell Script, etc. and if the code (directly or indirectly) read from its standard input then a dialog would be shown prompting the user for input.

Presently two exist which have workarounds described on that page. I will release a new build shortly (that means, I planned to have it out by now ;) ) which incorporate these workarounds.

There are (or may be) issues with some of the bundle commands written in ruby (as Snow Leopard ships with ruby 1.8.7, which isn’t 100% backwards compatible). We will address these as we see them over the next weeks/months and updated versions should appear in the Subversion repository.

Before you Upgrade

If you do a clean install of Snow Leopard, make sure you have your TextMate license key handy! It can be requested from this page. If you have changed your email address since you bought the program then you can copy/paste the license key from the application by using the “Change License…” button in the dialog which appears when you select the TextMate → Registration… menu item.

In an earlier post I wrote that “I am trying to slowly turn this boat” referring to the lack of posts to this blog, and that “I have enlisted a technical writer to help bring this blog back to life”. Well, almost two months later, and no real sign of change, and plenty of comments on the post calling me out on that.

A couple of important announcements went out over the TextMate mailing list related to revision control, affecting any users keeping up with the “bleeding edge” of bundle development.

Subversion Relocation

The URL of the main Subversion repository has been changed from the forgettable untypeable http://macromates.com/svn/Bundles/ to a much nicer http://svn.textmate.org/. We made this change a while ago, but we didn’t put in a redirect before because we weren’t sure the new server could handle the load (there were some problems with the first one). We are putting in the redirect now.

Subversion doesn’t handle this change gracefully (it will just report an error and fail), so anyone using svn to keep up with bundle development needs to manually update the checkout to the new location. Here are the steps required to relocate your checkout.

Over the past two years, posts on this blog have slowed to just a trickle, and a number of TextMate users have asked about TextMate’s status, or publicly worried about its future. This blog post, the first I’ve written here in a long time, is an attempt to assuage those concerns and answer some of the most frequent questions.

In short, TextMate development is going strong: TextMate 2 isn’t done yet, but progress is steady, it is starting to take shape, and the end is in sight. The rewrite has been a slow and careful process, but the ideas behind it are exciting. I hope to publicly describe some new abstractions in the coming weeks and months. Moreover, the community continues to churn out new bundles and features for TextMate 1.5, and I’ve been building up a backlog of posts describing them. While I am not writing to announce a release date for TextMate 2, I do hope that this post will be the first in a series showing a bit more transparency.