Espresso: Piping Hot?

About a month ago, MacRabbit launched their new web editing tool, Espresso, a full-featured text editor, configurable and customizable to all sorts of languages, plus the wonderful Live Preview feature of their fantastic CSSEdit. Espresso also purports a fully functional FTP client and some pretty robust tools for keeping local and remote copies in sync.

Lucky for me, Espresso was included in the MacHeist bundle, so I have a full copy! Here's my run-down of how it stacks up against the other two giants of the Mac text-editing world, Coda and TextMate (both of which I use a lot).

Editing Text

Espresso's Navigator
The Espresso Navigator

As a pure text editor, Espresso excels. It's at least the equal of TextMate for many languages (especially HTML). It's easily extensible to additional languages with plugins called "sugars," and there's a wide array of them available already, if not better. It's clear that navigating through complex HTML structures was a key challenge MacRabbit aimed to solve, and their Navigator gives you a foldable view of the whole file tree really elegantly. The CSS Navigator is identical to the one in CSSEdit (no surprise there); sadly, the navigator rapidly becomes useless in other languages, failing even to identify Javascript functions. It does identify comments, so as long as you comment your documents intelligently you'll still get something out of it.

Espresso's also very good about intelligent code completion; unlike TextMate (and like Coda), Espresso is very forward about prompting you for your code. I'm particularly appreciative of it's tag closing—Coda handles this by automatically adding the close tag when you finish the open tag, which is annoying. TextMate relegates it to a contorted shortcut. In Espresso, when you type '</', it closes the last open tag. Clean and elegant.

Espresso's support for regex, though, really blew me away. Espresso gives you live search results as you type, highlighting everything in your document that matches the search, so you can see, live, as you change your regex how that effects your results, making it super easy to see if you're picking up the things you want to. Brilliant execution here.

Espresso Regex
Regex searching in Espresso

There are two things that annoy me about Espresso as a text editor. First, that it doesn't automate tab stops, even a little. If you start typing a function, it won't bother to indent the next line. Annoyingly, I think this is a limitation of the application itself, as it doesn't even automate tabbing in the (third-party) Python sugar. (It will, at least, preserve tabs from the previous line.)

Second, somewhat surprisingly, its CSS has a major bug. It auto-fills properties (e.g. "display"), but not values (e.g. "inline"), because when you autofill the property it adds a semicolon to end the line automatically, which frustrates the second part of the autofill. (Delete the semicolon and the autofill menu pops right up.)

In all, Espresso may have become my favorite text editor, though there are still a number of things TextMate has on it (for example, in-program validation, code-tidying, and much better support for Ruby).

Live Preview

Unfortunately, past the text editor, Espresso falls apart very quickly. The vaunted Live Preview (brilliant in CSSEdit) is virtually worthless here. You've got no tools to search deep into your CSS files based on elements you're looking at -- you've got no way to explore your DOM at all, actually, as it lacks anything like CSSEdit's X-Ray feature or Firebug's "inspect."

Moreover, it also lacks a Javascript debugger, and since Espresso, unlike Coda, doesn't know where to find your files in a browser, it can't refresh its preview whenever you write the file. If you are working with a database-driven app or anything that involves server-side coding, you'll have to reload every time you save, for anything but overridden CSS.

Remote Issues

Espresso also includes an FTP client and features for keeping local and remote copies of your file in sync. However, lacking any form of version control, it often fails to catch when files have changed. You can edit files directly on the server, but this functionality is hidden a bit. You have to enter "browse" mode in the connection palette and open the file from there, and then it'll pop into your workspace with a little cloud next to it.

You can also use the "quick publish" feature, which writes local files to the server whenever you save them. This is fantastic -- but you can't make it the default behavior. You have to set it individually for each file you're working on. Even more annoying, it doesn't remember your quick publish setting if you close the file and open it again. I end up setting and re-setting this a lot.

Espresso's FTP also lacks Coda's ability to open files in other programs. You can't, for example, open a remote file in CSSEdit or TextMate or Photoshop and have it write it to the server whenever it's saved. You could, of course, use Transmit, but that sort of defeats the point of one-app editing.

Final Thoughts

In general, I think Espresso is a great start. The places where they've put their design muscle into it shine, beautifully. The text editor is excellent and nearly as fully featured as TextMate, and even better for core languages of the web (HTML, Javascript, CSS). But as soon as you try to go beyond that, you run into the limits of what the folks at MacRabbit have created.

I have high hopes for version 2, but in the meantime, Espresso's just not quite ready to replace the more mature products out there already.