Over the past several years, Bare Bones Software's BBEdit has matured from an essentials-only programmer's text editor to a terrific, mature product. BBEdit 4.02 stands out as a highly useful tool, especially for programmers and HTML enthusiasts, as well as for those creating long documents that don't require many page layout features.
Speaks Softly -- With its 1 MB RAM allocation and 1.7 MB disk footprint, BBEdit doesn't require nearly the system resources of a modern word processor. According to Bare Bones, BBEdit runs on a Mac Plus or better and requires System 7.0 or later, though Bare Bones recommends System 7.5 or newer. The disk footprint may expand, however, if you install freely from the BBEdit CD-ROM - my complete installation of templates, extensions, dictionaries, and more consumes about 8 MB of space.
BBEdit lists for $119, with a cross-grade coming in at $79 and upgrades from a previous commercial version setting you back $39.
One of BBEdit's hallmarks is packing a ton of great features in an easily-navigated interface. For instance, an optional info bar tops each document window and shows useful data about the document: the last saved date, if the file has been modified since its last save, and the file's disk location. Additionally, pop-up menus on the status bar lead to often-used functions. Keyboard navigation works well, since there are Command-key shortcuts for most options. One quirk I appreciate is when a document window is created or opened: BBEdit sets a temporary keyboard shortcut (Command-1 through Command-0) that activates the window.
Soft-wrapping, a feature that was key to transforming BBEdit from a programmer's editor into a general purpose text editor, has been supported since version 3.1. Text wraps automatically at the end of a user-specified distance, much as it does in any standard Macintosh word processor, without modifying the string of characters. Most people take this feature for granted until they experience a program that doesn't wrap text. In such a program, the text of a long paragraph extends past the right edge of the document window instead of wrapping down to the next line.
BBEdit also supports many Apple technologies and Internet trends. For instance, BBEdit's Balloon Help explains just about every item in the program, and the BBEdit Guide simplifies looking up terms and can help users through complicated tasks. BBEdit isn't recordable, but can be scripted using any OSA scripting language, including AppleScript and Userland Frontier's UserTalk. Savvy scripters can add custom functions to BBEdit by storing frequently-used scripts as commands in BBEdit's Scripts menu.
Although BBEdit features a vast array of user-configurable preferences, it's not the most flexible text editor available. I'd give that award to emacs or Alpha (a shareware text editor by Pete Keleher). In contrast to Alpha's ability to bind just about any key combination to any function, the only key-customization BBEdit users can do is assign Command-key shortcuts to items in the Extensions menu.
However, BBEdit takes typical text editor features a step further. For instance, the Find command supports GREP, which enables searching based on complex patterns and regular expressions instead of just words or phrases. The BBEdit manual and online help do an excellent job documenting the complex syntax involved, making it easy to use a search string like "[A-Za-z]+" to search for occurrences of single words enclosed in quotes. In addition, BBEdit includes some common GREP patterns used by programmers, and users can store their own frequently-used GREP expressions.
Extending the Feature Set -- BBEdit comes with extensions, but they are not extensions like Open Transport and RAM Doubler that load when your Mac starts up. Instead, they work more like macros or wizards. For instance, the Convert to ASCII extension automatically converts text containing 8-bit characters into 7-bit text, intelligently changing special characters like smart quotes, bullets, and copyright symbols to 7-bit equivalents that can be sent via email or viewed as text under a different operating system. There's also an extension called Cut Lines Containing, which, when activated, prompts for a search string. The extension then searches the document for lines containing the string, cuts them out, and adds them to the clipboard. Additionally, BBEdit ships with a set of well-designed HTML extensions, which I discuss in a bit.
Further, BBEdit comes with a full set of instructions, examples, and source code which allow C and C++ programmers to create their own extensions. A number of these extensions are available from the Info-Mac archives as well as Bare Bones Software's FTP site.
Carries a Big Stick -- BBEdit 4.0 finally implements syntax coloring for most commonly used programming languages and even some obscure ones. Syntax coloring means, for instance, that in source code files, comments, language keywords, and string constants are all colored to make them stand out better from the rest of the code. Syntax coloring also works with HTML and makes BBEdit all the more attractive as a Web authoring tool.
BBEdit has another neat feature called Groups, which enables you to assign a set of files - say, all of the files for a Web site - to a group. Once you've grouped files, it's easy to open them all at once, or to run the Find command on the entire group. This feature is a favorite among webmasters who use BBEdit to make global changes: rather than open and change an element (say, a renamed file or broken link) in each file on a Web site, it's easy to perform a search-and-replace for all files in a group.
BBEdit's well-designed spelling checker checks words against a primary U.S. English dictionary and a user dictionary. You can add any of a number of optional dictionaries to that set, and included dictionaries span subjects ranging from Biblical and British English to Legal Secretary and Science. The checker ignores HTML tags, making it possible to check an HTML document without tripping over the tags.
I'm a fan of the Compare feature. In addition to comparing the contents of two files so you can figure out how they differ (similar to the diff command in Unix), BBEdit also compares entire folders and Symantec C++ and CodeWarrior project files, and the program displays Compare results in a special Browser window that helps you cycle through the list of differences.
The Internet Club -- BBEdit uses Internet Config to populate its Internet menu with your preferred Internet client programs, which you can switch to by choosing them from the menu. You can also open (or "resolve") a URL simply by selecting it in BBEdit and choosing Resolve URL from the menu.
Perhaps the coolest feature of BBEdit for people uploading to remote file servers (such as people doing HTML markup and CGI programming) is BBEdit's built-in FTP client. This feature allows you to maintain your Web site without leaving BBEdit. The Open from FTP Server command transparently downloads the file to your hard disk, and - when you save your changes - BBEdit transparently uploads the file to the server.
Sticking up for Developers -- When used as an editor for programming, BBEdit can interface with Integrated Development Environments (IDEs) such as Metrowerks CodeWarrior and Symantec C++. The interface goes two ways. On one hand, a user can access BBEdit from CodeWarrior; on the other hand, a user can access IDE features from BBEdit.
Thanks to external editor support in CodeWarrior versions CW10 or later, CodeWarrior users can type source code into BBEdit and make that code part of a CodeWarrior project. Then, files opened from a CodeWarrior project appear in BBEdit.
BBEdit uses a Compiler menu to interface to an IDE/compiler, providing quick access to commands like Compile, Set Breakpoint, Add, and Run. One of the extra niceties provided is the Command-Tab keyboard shortcut for switching between C or C++ implementation source files and their corresponding header (declaration) files.
Finally, BBEdit's features good integration with the Mac scripting environment UserLand Frontier, which is included on the BBEdit CD-ROM. BBEdit supports Frontier's menu sharing protocol, so when Frontier is running, a customizable Scripts menu appears in BBEdit's menubar. (Initially, this menu features Web site management and HTML authoring functions.) BBEdit can also serve as an HTML editor for Frontier, enhancing Frontier's Web site management capabilities.
Programmers have long had great editors, however. Unix users have had emacs; Macintosh users have had the CodeWarrior IDE, the Symantec IDE, as well as Alpha. The explosion of the Web, however, has brought about a huge demand for HTML editors.
Branching into HTML -- Many HTML extensions have been written for BBEdit, and they all endeavor to eliminate tedious memorization and typing, or the brain-straining visualization necessary to code for things like tables and forms. Lindsay Davies's HTML Tools, version 2.1.1, ships with BBEdit and includes extensions for much of HTML 3.2, including tables and forms. In addition to being accessible like other BBEdit extensions (from the menu bar and Command-keys) the HTML Tools can be activated from a floating tool palette. For instance, to format text with a <STRONG> tag, you highlight the text and choose Strong Emphasis from a menu that pops out of the Style button on the palette. The HTML Tools also automate more complex tasks such as creating tables. When it comes to a table, BBEdit prompts for what sort of element to add, such as a row or a cell, and gives you an opportunity to set attributes for the element.
In addition to tools for inserting HTML tags, BBEdit also provides administrative functions. A particularly necessary feature, Check HTML, verifies the syntax of HTML documents and displays its results in a split window with errors on top and the HTML below. As you scroll the list of errors, BBEdit highlights the appropriate text in the lower pane. I won't argue with Check HTML's utility, but I've found it a bit strict, especially considering the changing nature of the HTML standard. A good improvement for the future would be ability to customize the errors Check HTML identifies.
BBEdit has a custom HTML macro feature that allows you to enter your own HTML functions in a relatively simple pattern-matching format. It takes time to get the hang of the syntax, but by looking at some examples, it is not difficult to pick up rudimentary technique. For instance, the following expression selects a word and frames it with the font size tags: !SW<FONTSIZE +2>\s</FONTSIZE +2>. Thus, it converts "thistext" to <FONTSIZE +2>thistext</FONTSIZE +2>.
Room For Improvement? BBEdit strikes me as nearly a perfect text editor, and I base that statement on having used many text editors in the past, including vi, emacs, Alpha, Plaintext, BBEdit Lite, Tex-Edit Plus, the CodeWarrior IDE, and the Symantec C++ IDE. My uses have ranged from programming C++, Perl, or Java, to writing articles, marking up text in HTML, or simply viewing text downloaded from the Internet.
A feature I would like to see associated with BBEdit is a Revision or Version Control System (RCS/VCS). A Revision Control System enables you to better manage document versions, and would extend the functionality already in the Compare command. Consider the following situation: you create a document, be it HTML, a text file, or C++ source code. A few days later, you edit it and make significant changes. A few more days later, you realize you deleted something from the first version that you wanted after all. A Revision Control System helps you save and track all these existing versions by archiving the previous versions and allowing you to compare the current document to previous versions. Although there are a few third-party revision control system products available (such as Rev, reviewed in TidBITS-362), even the free GNU XEmacs for Unix has an excellent RCS feature built in.
BBEdit has few noticeable bugs. The main one I've encountered is a minor conflict between BBEdit 4.0.x and Apple's LaserWriter 8.4.1 driver, where the last character of a BBEdit document will not print. Bare Bones anticipates fixing this problem in BBEdit 4.0.3, which should be available shortly. Also, BBEdit's FTP tool doesn't correctly handle MacBinary file transfers - extraneous information can appear when a file is opened, and file information is lost when a file is saved. This problem should be corrected in BBEdit 4.0.3, and an interim fix is available from Bare Bones.
Bottom Line -- Anyone who works frequently with HTML files, source code, or plain text documents can benefit from BBEdit. You can give BBEdit a trial run by downloading the demo from Bare Bones Software's Web site.
Bare Bones also produces a freeware version of BBEdit, called BBEdit Lite. BBEdit Lite contains all of the editing niceties of BBEdit, but lacks many of the tools, including integration with compilers, OSA support, the HTML floating palette, Internet Config support, a spelling checker, and FTP features.
DealBITS -- Cyberian Outpost is offering BBEdit to TidBITS readers for $94.95 ($5 off) through this URL: