My apps…

Space Harvest Begin

All-Seeing Interactive is a tiny web design and software company based in London, UK.

Sunday 31 August 2008

BBEdit 9

Barebones have just released a new version of the venerable (17 years and counting!) Mac text editor, BBEdit.

For me, and I suspect most other people, the most important addition is the new Projects feature. Over the last few years, it seems like I've been experimenting with a different text editor every other week. It wasn't that I didn't like BBEdit (more on this in a bit), but that I couldn't help thinking that constantly switching to the finder to open files was sucking up an awful lot of time. So, having tried and failed to find another editor that I really liked, I now find that Barebones have finally got around to answering my prayers. The BBEdit implementation of projects is not without its problems, however.

Open, Slowly (⌘⇥)

For starters, there doesn't appear to be an 'Open Quickly' feature (as in Xcode or TextMate).

This is a curious omission. Since setting up a project implies you'll be working on several files at once, it's strange that opening a different file in the same project is still awkward. I should have thought this is the one area where users could get the biggest productivity boost from a project-orientated workflow, but no dice.

I do hope this feature will show up in 9.1.

Not got Git?

Michael Tsai highlights the lack of Git integration in his beautifully succinct roundup of the new release. I was thinking the same thing when I tried out the new version of Coda a few days ago - I know I said I wanted SVN support when you brought out 1.0, but, well, I...

Then I realised that I never actually use SCM integration features anyway. BBEdit has had SVN integration for a while, as has Xcode, and I still have a decent number of projects in SVN, but I guess I just don't see the point. A visual SCM tool needs to make some task that would be a pita to accomplish in the terminal straightforward. Github seems to pull this off nicely - the visual diffs are great, but I suppose I need this fairly infrequently anyway, so having it built-in to an editor isn't that important to me. For my workflow, something integrated into the file browser, like Tortoise SVN or SCPlugin would probably make the most sense. Adding new files to repository tends to be about the only thing with SCM that regularly takes any time at all, but I guess once you're used to the command line tools, it's hard to break the habit.

Actually, the projects feature doesn't really fit with the SCM stuff in BBEdit. You still specify your SCM servers in the preferences window, rather than attaching them to a project. In fact, projects don't really seem to have any settings at all - once you've made a project, and added files, you've pretty much reached the end of their capabilities. You can't specify SFTP servers, or remote/local URLS for testing. You can't even give a project a name, beyond the file name of the project file, and even this isn't exactly prominently displayed for ease of switching between open projects. I guess a lot of this comes down to the fact that BBEdit is intended to be a general purpose text editor, rather than an IDE for web development, but given the array of HTML tools it provides, I can't help wanting a little more.

A waste of space

Something I really dislike about BBEdit's projects implementation is the way it handles the list of open files. BBEdit added the open files drawer a few versions back, and I can't say I've ever really taken to it:

For starters, it's a drawer, but I won't go into why they suck so badly here. But look what happens to a project window in BBEdit 9:

That's right: by default, you lose screen real estate on BOTH sides of the edit window! The left side is the list of projects, the right side is the list of open files. Simple, you think, I'll just hide the open files list. Then, when I come to open another file in the same project - ARGH, it pops open again! Don't worry: BBEdit lets you turn off the drawer in the preferences window, so it won't keep popping out. But wait, this is a global preference! You'll have to turn it back on when you're not working on a project, unless you want to resort to switching the active file with the toolbar menu or the Window menu.

This is not an easy problem to solve. If you have files that haven't been saved yet, or are editing a file that isn't in the project, you can't just show them in the project's file list. So how do you get to them?(i)

TextMate uses the tabbed approach to handle this:

This is great for saving screen space, but this model soon breaks when you want to open more than 5 or 6 files at once:

Here is my (Coda-inspired) suggestion for what might have been been a better approach:

Basically, we show both the open files list and the list of files in a project in the same area, with tabs to switch between the two lists.

This way, we always have a list of open files on the left hand side, even if we aren't working in a project, but we can swap it for the list of the files in a project when we are. The project files list SHOULD also show which files are open (I've put them in bold, like TextMate): again, this small feature seems like a no-brainer for 9.1.

Relatedly, those project-orientated toolbar buttons that appear above the files list are more or less useless. I don't need an add or remove button, and I ought be able to rename project items by clicking on their names and waiting.

The complete package

BBEdit 9 also introduces auto-complete, as in the good kind that finishes words for you, rather than the bad kind that starts pairing up your HTML tags and function curly braces. It doesn't seem to work perfectly yet (it failed to autocomplete a couple of standard PHP functions I tried), but I think this is a welcome, albeit long overdue, addition. It even allows you to tab between the various arguments for a function (I still haven't figured out how to do this in Xcode!).

I find you very unfamiliar

The find and replace functionality has had an overhaul in BBEdit 9. The find dialog is now non-modal, and multi-file find has been split into a separate dialog. I could write about how much better this new arrangement is, but I must have spent so much time looking at the old dialog, I think it's going to take me a while to adjust.

Still broken

There are a few of things that still bug me about BBEdit:

  1. Preferences window

    It's still ugly. It's still really hard to find what you want(ii). The text is still too small. I still don't really think that stuff like FTP sites or SCM repos belong in global preferences.
  2. No colour themes

    It's a small thing, but I really like being able to try out different colour themes easily (as in Terminal or TextMate). BBEdit lets you change all the text colours, but offers no theme support. I really don't want to waste my time trying to find a black background set of colours that work for me. Someone else has done this before, and they probably have better taste than me. Why not give me a range of presets, and the ability to customise and share new versions?
  3. No CSS validation

    Yeah, it's easier to pickup CSS problems than HTML problems, especially since Firefox gets so shouty about them in the Error Console, but this would be a helpful timesaver.

Still golden

There are a few things about BBEdit that I really love. Every time I experiment with another code environment, these are the things that I find myself unable to do without:

  1. Speed

    I don't think I've ever found a faster editor that I actually wanted to use. It appears to handle big files with ease, multi-file find is lightning fast, and you very rarely see it trying to catch up with syntax colouring. I suppose this isn't really a feature - I'm just reminded of it whenever I play with TextMate, an otherwise great piece of software that fails so MISERABLY speed-wise.
  2. It doesn't attempt to guess what I'm trying to do.

    Picture of Power Pup It won't try to close my tags for me. No doubt you can turn this feature off in many editors, but first impressions are important - just because I can turn off Power Pup, doesn't mean he should be there in the first place. I find this stuff really off-putting in TextMate.
  3. Information I want frequently is always visible

    The charset and line ending format for the current document is always shown at the bottom of the window, and I can convert between charsets and line endings with a single click. This is not rocket science. Why doesn't everyone else do it?
  4. Really nice HTML tools

    HTML / XHTML validation. HTML Tidy. Tag editor for when I can't remember the obscure attribute name. TextMate gets some of this right, and while technically using the W3C Validator tool may give you the most correct results, it doesn't make it super easy to see and fix problems in your document. It just presents the problems in a mini browser window, you need to find the line number, then switch back to the editor window to find the issue in your code.
  5. Really useful text tools

    Zap Gremlins and Find Differences stand out for me, as I seem to find myself using them all the time, but there are so many wonderful text tools in BBEdit. Some of these you might only ever use rarely (e.g. Sort Lines, Normalize Line Endings etc), but it saves writing a script to do this stuff for you.

In short, BBEdit remains the king of Mac text editors in my book. Hopefully some of the niggles mentioned earlier will disappear in the next couple of point releases, and Projects will in time grow into an implementation that software this wonderful deserves.

  1. You use Open Quickly, of course. Oh wait...
  2. You can use the preferences sidebar and search for the feature you want. But this looks to me like an admission that the prefs window is unwieldy, rather than a real solution to the problem.

Posted by Ben @ 8:53 PM