Archive for August 30, 2004

Monday, August 30, 2004

BBEdit 8

BBEdit 8 is now shipping, and there are copious release notes, far too many to discuss. If I don’t mention one of the new features, it doesn’t mean that I dislike it (or that like it), just that I didn’t have anything in particular to say about it.

BBEdit’s interface, long derided as behind the times, has been re-done using Nib files, and it uses sheets and drawers—where they make sense—as well as the font panel. The spelling checker is now non-modal. Although under the hood the changes were likely major, on the surface the differences are minor. Overall, BBEdit 8 still feels like BBEdit, only better.

There is one major interface change, though: BBEdit can now open more than one document in the same window. This is similar to how Xcode and tabbed browsers work, and I’ve never really been a fan of this kind of interface. I think that’s because I’ve never seen it done right. BBEdit 8 gets it almost right, though, and as a result this feature has been growing on me. I often have many different documents open in BBEdit, from different projects, and grouping them into a few windows makes them easier to manage. There’s less overhead than in using BBEdit’s File Groups, and as a result I am using the Documents drawer more often. The main problem is that the resulting window arrangements are too ephemeral. They should be saveable, along with the palette positions, in Workspaces, or else someone should write an AppleScript that saves and restores window states. Also, I can’t tab into the Documents drawer; I have to click in it, which almost defeats the purpose of type-selecting.

Codeless Language Modules are here at last. There is already a module for Apache Configuration Files. BBEdit still uses its code-based language modules for most of the built-in languages, and so it kind of offers the best of both worlds: speed and accuracy for the common and difficult-to-parse languages, and easy extensibility for languages with standard tokenization. However, we’re not quite there yet, because the codeless language modules are a little under-powered. They don’t support regular expressions so, for example, the Apache module can’t color the pseudo HTML tags. Only one set of keywords is supported per language. And there is no way to take advantage of BBEdit’s existing language modules, e.g. to embed your new language (or one of the built-ins) into HTML. Language modules are still limited to coloring and the function pop-up; there is no language-sensitive indentation or navigation assistance, as in Emacs.

Other notes:

cvs2svn

The move to Subversion was pretty smooth (though I haven’t yet switched to Trac), and I am in general very happy with it. I was finally able to do some folder and file restructuring, which I had been putting off because of CVS.

One of my favorite features of Subversion is that it stores checksums of each revision of each file in the repository. It can actually verify the contents of the repository, and I’ve written a little shell script to do this regularly. Sounds pretty basic, but I’ve had problems with parts of CVS repositories going bad, and not noticing until months afterwards.

In order to speed up network operations, Subversion keeps pristine copies of the checked-out files in its .svn/text-base folder. When you commit a file, it sends the database the differences between the pristine file and the one that you’re checking in. It seems like this could lead to repository corruption if the pristine copy gets damaged, but Subversion protects against this by not letting you check in a file if its pristine copy has the wrong checksum.

The one snag I ran into is that the default settings of cvs2svn corrupted some of my Localizable.strings files and that I was later unable to check in changes to these files. When committing, I would get this error message:

Transmitting file data .svn: Commit failed (details follow):

only Subversion wouldn’t print any further details. The problem was that, by default, cvs2svn sets the svn:eol-style property on text files, and that it thought my UTF-16 .strings files were text. From now on, when I use cvs2svn, I will invoke it with these options:

cvs2svn --no-default-eol --keywords-off --cvs-revnums

Wikipedia Defense

Morbus Iff:

There are just as many sites out there that don’t have disclaimers on them, yet are used for reference far more often than not.…I’d much rather be able to correct an error right now then to contact a supposedly or admittedly authoritative site, inform them of an error, and receive no response, lackluster hubris, or worse yet, blanket acceptance

SpamSieve 2.2

SpamSieve Icon SpamSieve 2.2, released last week, includes many improvements.