Note: This post is out of date. Espresso is still a great editor, but I am currently using Chocolat.
When people ask me what code editor I use, I always tell them Espresso by MacRabbit. And often, they ask me why. This post will attempt to explain some of the reasons I prefer it over alternatives such as Coda (<3 Panic) or TextMate. ~However, I’m confident some of the reasons are ambient, and are therefore hard to write down (similar to some of the reasons that make a Mac better then a PC. ;)
Reason #1: It’s beautiful
Espresso is beautiful, elegant, simple, delightful, charming, graceful, and many other words that connote the general aesthetics of the app.
When you open the app, you’re greeted with this wonderful illustration of a coffee cup with different inspirational words intertwined with code elements. Every time I open the app, it makes me want to develop something awesome.
Beyond that, the icons are charming, the UI elements are well thought out, and the editor looks stunning.
Reason #2: The Editor is awesome
The editor is simple, yet powerful. It allows me to do everything I need, without being bogged down by extra fluff.
Similar to Coda, you have a code navigator, which gives you a birds-eye view of the code, and easily shows you if you’re missing a closing tag somewhere. You also have the ability to publish your files individually, or in groups, allowing for easy syncing between your Mac and server (more on this later).
However, Espresso has full support for the TextMate snippet syntax, which allows you to have multiple input points, mirroring, and even console access. (Coda only has support for one input point.)
That’s only scratching the surface of the Espresso editor. It also has easy third party expandability to allow not only different syntax highlighting/suggestions/tab-completions, but also allows developers to use first-class Objective-C code to add additional functionality. (I’m not exactly sure how this works, but I’ve spent enough time on the ##Espresso IRC to know it’s there)
Reason #3: The workspace works
I don’t know why someone didn’t implement it sooner, having your “tabs” stored in a vertical fashion makes perfect sense, and it’s executed very well in Espresso.
There’s almost never a time I have more files open then can fit in my workspace, yet when I used Coda or TextMate, I was constantly having to press the “More” button, looking for the tab I wanted. A tab takes up more space horizontally then vertically, so it makes sense to store them in the most space efficient way.
And, when I do have that random day where I’m editing every file on my site, the list scrolls effortlessly with the hover of a mouse. No more hunting and pecking just because I have more then 7-8 files open at a time.
Reason #4: The built in FTP client is really powerful
Espresso’s built in FTP client is more powerful than many (if not all) standalone FTP clients on OS X. In addition to that, it’s integrated with the rest of the app so flawlessly that it’s simple to keep the server code in-sync with your local copy.
Like many other web developers, I have my own local Apache server installed for testing and development. Then, when I want to test it online, I have to selectively “push” the files to a web server. That part isn’t that hard, just select a few files in Finder, drag them over to Transmit and they’re there. The tricky part comes in when you try to keep them in sync.
You now have 2 copies of the same code, one on your local machine, one on the server. How do you keep track of what you edit? How do you know which one is the version with the changes? That’s where Espresso’s Update, Merge, and Mirror functions come in.
You’ve probably already guessed what update does, it takes anything that’s changed on your local machine, and pushes it to your web server, without taking into account any changes on the web. It will also remove anything on the remote server that’s been deleted in your local project.
Merge is where most of the power is in my opinion. It will look at the modification date of files on your machine as well as the server, and make an intelligent decision to update the server with new content, as well as update your local copy with new content. This makes it painstakingly easy to get your most recent work automagically transferred.
Mirror essentially works as the initial upload of your site. It checks the local folder structure and uploads any and all documents that don’t already exist on the server, mirroring the local directory structure.
Another thing I haven’t mentioned about the FTP client in Espresso, is that it doesn’t perform any of these changes immediately. Instead, it displays pertinent information so you know exactly what is going to be done to both the local and remote folders. Oh, and it’s one of the fastest FTP clients I’ve ever used.
Reason #5: It’s supported
Not to point any fingers, but the world of Mac text editors has been surprisingly void of any major updates, except Espresso.
Espresso was released less then a year ago and they’ve already released a major 1.1 update which adds many features such as Find in Project, a nice new Project Manager, Smart Paste, and much more. If you’re going to invest your time in learning the ins and outs of any text editor, you should make sure the developer isn’t going to jump ship.
MacRabbit has been around since 2004, and CSSEdit won an Apple Design Award, I don’t think they’re going anywhere soon.
There you have 5 reasons I think Espresso is the best web-editor on Mac OS X. I still find myself jumping into TextMate once in a while to work on some Ruby or Python, but I’m confident that the existing Ruby, Rails, and Python “Sugars” will grow to rival TextMate.
To be clear, I was not paid or reimbursed in any way for writing this (favorable) post of Espresso. I purchased, and sequentially fell in love with the app before writing about it.
If you have any thoughts, questions, gripes or additions to what I’ve written, please send me a quick @reply.