BBEdit 8.5 Release Notes

BBEdit 8.5 is a major release. This page outlines all the new features and feature enhancements included in BBEdit 8.5, and provides details about all other changes and bug fixes.

For detailed information on using any of BBEdit’s features, please refer to the user manual (choose “User Manual” from BBEdit’s Help menu).

For information on changes made in previous versions of BBEdit, please see the release notes archive.

Requirements

BBEdit 8.5 requires Mac OS X 10.3.9 or later; Mac OS X 10.4 or later is necessary for Automator support.

This version is a Universal application: it runs natively on both Intel-based and PowerPC-based Macs.

Additions

  • There’s a new command on the Tidy submenu (of the Markup menu): “Check Accessibility”. This allows you to check the document’s compliance to various WCAG accessibility guidelines, at various levels of strictness.
  • There’s a new command on the Edit menu: “Document Options…”. This lets you adjust the document’s line breaks and text encodings as desired (and replaces the now-defunct Document Options popup that was in the tool bar).
  • There has been significant rework to the tool bar (formerly known as the status bar), the navigation bar, and the status bar (the area at the bottom of editing views), as follows:
  • The function popup has been removed from the tool bar, and now resides in the navigation bar. The current function display has been removed from the status bar, and has been combined with the function popup. (If you’ve seen Xcode at all, this will look familiar.)
  • Include files are no longer listed on the function popup; they’re in a new item on the right-hand end of the navigation bar, marked with a “#”.
  • The Markers popup has been removed from the tool bar and now resides toward the right-hand end of the navigation bar.
  • There’s a new item toward the right-hand end of the navigation bar: the Counterpart button. Clicking it opens the file’s counterpart, as though you had chosen “Open Counterpart” from the File menu.
  • The “Language” setting has been removed from the Window Options popup in the tool bar, and now resides in the status bar, immediately to the right of the cursor position display.
  • The File Options popup has been removed from the tool bar. The line-ending settings now reside in the status bar, so you can see the current line endings at a glance. The text encoding setting is likewise now in the status bar. A new command has been added to the Edit menu: “Document Options”. You can use this as a hook to hang a keyboard equivalent on.
  • The File Path popup has been removed from the tool bar. It’s been available in the standard location (command-click on the window title) for quite a long time now, so the old one was just redundant. “Copy Path” and friends have been moved to a new submenu on the Edit menu.
  • The Text Encoding status bar popup has an item at the end: “Other…”. This brings up a sheet listing all available encodings (even if they’ve been disabled in the preferences), and you can select whatever one your heart desires.
  • The “Apply Text Factory” commands on the Text menu will now apply the selected text factory to the selected range of text in the front document, using the same rules as for the line-oriented commands on the Text menu: if the selection range encompasses one or more lines; then only the selected text is processed; otherwise, the whole document will be processed.
  • Text Factory items can now have comments; click the “Comments” button to add or edit the comments for a particular item.
  • Tidy commands are now available from Text Factories: Clean, Reflow, Convert to XHTML, and Convert to XML.
  • The action menu in the documents drawer contains a “Save All” command (dynamic variant of save) which saves all the modified documents in this window only.
  • Support is now in place for “Check spelling as you type”. There’s a preference in the Spelling prefs to set the default, and it can be turned on and off for a given text view by using the corresponding command on the Text menu.
  • There’s a new command on the Window menu: “Save Default Window”. If enabled, choosing it saves the front window’s position and size in the preferences, and subsequent new windows will be created at that position with that size.

Note that the default position is saved separately for different types of windows: for example, file groups’ default window position is distinct from editing windows’. Also, the preference is keyed by your screen configuration, so if you frequently switch screen layouts (as when connecting an external display to a PowerBook), you can save distinct defaults which are applied for different screen configurations.

  • The “Find in Reference…” command (on the Search Menu) now supports language-specific templates for on-line references. The old default of the Apple Developer Connection is still the factory default; for PHP, “Find in Reference” will look up the selected symbol on php.net; for Unix Shell Script, it’ll open the appropriate Unix man page.

The URL templates are customizable in the Languages preferences; click the “Options” button to edit the URL template (along with other language-specific settings, such as the comment delimiters). Note that the URL can be any well-formed URL of any scheme supported by the OS or installed applications. (Witness the above x-man-page:// usage.) The string “SYMBOLNAME” (without the quotes) is replaced where it occurs in the template.

  • BBEdit accomplishes this by introducing two new URL schemes: “x-perldoc” and “x-pydoc”. In a fashion analogous to the “x-man-page” URL scheme, these new URL forms provide a shim to the “perldoc”, “pydoc”, and “ri” commands. At this writing, the only forms supported are for generic lookups:

x-perldoc://lookup/symbolname
x-pydoc://lookup/symbolname
x-rubydoc://lookup/symbolnamep

In future, it may be possible to substitute other words where “lookup” is to provide finer control over perldoc, pydoc, and ri.

When sent to BBEdit, these URL forms trigger documentation lookup and display (the results are in BBEdit itself).

If desired, other applications may register to handle these URL schemes; if so, it will serve everyone’s interest if the URL forms are mutually agreed upon, documented, and implemented.

  • There’s a new setting in “Text Files: Saving” preferences: “Save auto-recover info every…”. This setting controls whether, and at what frequency BBEdit saves auto-recovery information for unsaved open documents.

If auto-recovery information is stored (it’ll always be in ~/Library/Application Support/BBEdit/Auto-Save Recovery/), then at next launch, BBEdit will reopen and restore the contents of any documents for which recovery information exists.

The “interval” setting controls the frequency with which this information is written out; the shorter the interval, the smaller the window for data loss in the event of a system crash, but the more frequently your disk will be used (the latter being a consideration for laptop users running on battery). The factory default interval is ten minutes.

Auto-save recovery can ensure that all is not lost in the event of a disaster, but will not protect you against events that render your disk unreadable, nor is it a substitute for manually saving a document after making a very important change to it.

  • BBEdit recognizes a new variable in the Emacs-style variable block : “x-counterpart”. If desired, you can specify an x-counterpart value which will override BBEdit’s built-in rules for switching between counterpart files (Control-Tab). So, for example, if you had a file that contained a variable block like this…

-*- x-counterpart: ExampleStrings.R; -*-

…typing Control-Tab would look for the file “ExampleStrings.R”.

  • Added an “Increase Indentation” option to the Rewrap Quoted Text dialog; this allows you to inset lines inside of the quote marks in a single step.
  • PCRE 5.0 is now supported
  • BBEdit can open and save text files in gzip-compressed (.gz) files with ease.

Opening and browsing are the most useful; for example, you can now browse the archived logs in /var/log without having to decompress every one.

On initial save, or save as, BBEdit looks at the destination file’s extension to determine if the file should (still) be gzip compressed. (.gz and .gzip are recognized.)

  • If the “Emacs Local Variables” setting is turned on (in the Text Files: Opening prefs), and there’s an Emacs-style variable block , BBEdit will honor the “tab-width” variable when opening the file.
  • The “Menus” preferences panel now provides the means to show or hide individual commands, as well as entire menus. Note that some commands and menus cannot be hidden, as they are necessary for the program’s correct operation (“Quit” is an example of one such, though of course there are many others) or are fundamental to the program’s identity (such as the commands on the Find menu). In general, though, you have the flexibility to turn off any commands (or entire menus) that you never use in order to make menu navigation easier or conserve space in the menu bar.
  • BBEdit now supports “camel case” navigation: press Control-left-arrow or Control-right-arrow to jump to the next (or previous) transition from lower-case to upper-case characters (or a word boundary, whichever comes first).

Note that this use of Control-left-arrow and Control-right-arrow replaces the old behavior of using these key combinations to scroll horizontally. If you prefer the old behavior, you can do the following from the command line:

defaults write com.barebones.bbedit Editor:ControlArrowCamelCase -bool FALSE defaults write com.barebones.bbedit Editor:ControlArrowHScroll -bool TRUE

  • There’s a new collection of settings in the Editing: General preferences: “Soft wrapped line indentation”. These control how the soft-wrapped portions of a long line are indented: Flush Left (not at all); First Line (same as the first visual line of the wrapped line); and Reverse (one tab stop’s worth of hanging indent). The factory default is “First Line”, and changes to these preferences take effect immediately.
  • In the “Text Search” preferences pane, you can now drag items in the Grep Patterns list to reorder them.
  • Codeless language modues now do function scanning via PCRE. If a CLM plist contains a string with the key “Function Pattern”, that grep pattern is used. The pattern is expected to have named subpatterns<function_name> and<function> to identify the function’s name (which will be added to the function popup menu) and the function as a whole. You can omit<function> and the entire pattern match will used instead, but this would be a bad idea for the<function_name>; if it is missing the match doesn’t add anything to the menu.
  • The “Autocomplete Clipping” and “Insert Clipping” commands have been collapsed into one “Insert Clipping” command with a new user interface.

After invoking the command, type a filter term for the clipping you want to insert. The arrows keys cycle through the list, return (or double-click on a clipping name) will insert/apply the clipping.

You can press escape to dismiss the insert clipping panel.

  • You can now (using the Menus preferences) assign keyboard equivalents to open the menus that are attached to items in the Navigation Bar (the files, function, includes, and marker popups) and the Status Bar (language, text encoding, and line endings). So, for example, you can now navigate a document’s function list without removing your hands from the keyboard, if so desired.
  • Added a —reverse option to the bbdiff tool. This is useful when you don’t have direct control over the order of the arguments passed (such as when using bbdiff as a svn diff helper) but would like the argument reversed before being passed to BBEdit.)
  • Look Up in Dictionary now appears on the contextual menu when you right-click on a single word (selected or not) in a text view.
  • There is a now top level menu for Clippings. You can change the active clipping set, or insert a clipping from the active or universal sets.

Like other menus in BBEdit, and the system script menu:

  • choose a hier node to open it in the Finder
  • choose an item with the shift key held down to reveal it in the Finder
  • choose an item with the option key held down to edit it in BBEdit
  • The “Insert Clipping” command has been moved to the Clippings menu.
  • Added contextual menu items for working with manual folds, subject to the “Text Folding” preference being turned on in the Menu preferences.
  • BBEdit’s preferences are now searchable. With the Preferences window in front, choose Quick Search from the Search menu, or toggle the search drawer control, and a drawer will open with a search field. Type into the search field to locate all preference options containing that string.
  • If a file contains no cues to indicate its text encoding (for example, Emacs variables, HTML/XML character set declaration, saved state, BOM, etc), BBEdit will attempt to interpret it as UTF-8 (No BOM), before giving up and asking you what to do.
  • Four new operations are available to text factories:

Translate Text to HTML
Translate HTML to Text
Format Markup
Optimize Markup

These commands function similarly to their analogues on the Markup → Utilities menu.

  • There’s a new command on the Clippings menu: “Save Clipping”. This provides a simple way to create new clippings:
  1. Make a new document.
  • Type or paste stuff into it.
  • Choose “Save Clipping”.
  • Enter the name you want the clipping to have. Choose a clipping set name from the popup menu, or if you want to create a new clipping set and place the clipping in it, enter the new set name in the appropriate place.
  • Choose “Save”.
    There’s no more need to use “Save As” and navigate down into the Clippings folder, etc. (Observe, however, that the effect of “Save Clipping” is the same as doing a “Save As”, so subsequent edits to the clipping can simply be followed by a direct “Save” to store them on disk.)

Note that if you’re authoring a large clipping set, you’ll probably find it easier to use some other means to generate clippings: “Save Clipping” is most useful for creating a clipping “on the fly” as you determine the need for them.

  • The clippings and other folder floaters (scripts, #! scripts/filters, stationery, text factories) now have a contextual menu for the list which includes the action command as well as Edit and Reveal in Finder.
  • When viewing differences, sub-line differences are highlighted in the selected range.
  • Added a new entry point for language modules: kBBLMMatchKeywordWithCFStringMessage. This is just like kBBLMMatchKeywordMessage, but the parameter block contains a CFStringRef to the token to be looked up.
  • There’s now a gutter available on the left-hand side of editing windows. This gutter displays automatically generated fold ranges, as determined by individual language modules.

The display of this gutter is controlled globally in the “Text Status Display” preferences, and can be set in the “Status Display” options on a per-language basis.

  • The marketing department can now add SQL to the list of built-in languages. Five variants are supported: “standard” generic SQL, Microsoft Transact-SQL, MySQL, Oracle PL/SQL, and PostgreSQL.
  • Codeless Language Modules that do function scanning now do auto-fold range generation automatically. The ‘kBBLMFunctionScannerDoesFoldsToo’ feature flag is turned on if ‘BBLMScansFunctions’ is present in the plist. (This applies to applies to old-style (pre-grep) CLMs, too.)
  • The kBBLMAlwaysGuessLanguage flag is now hooked up. If a language module specifies this flag and kBBLMCanGuessLanguage, then the module will get called after an explicit suffix-mapping match, so that it can fine-tune the language match, as desired.
  • There’s now a drawer actuator widget in the Preferences window for opening and closing the search drawer. “Quick Search” remains available so that there’s something on which to hang a keyboard equivalent.
  • Open Selection" and “Open File by Name” can now accept a Unix-style character offset specification (in addition to the line, which has been supported for a long time), as in:

foo.cp:398:43

  • Option clicking a disclosure triangle in the gutter will expand or collapse all nested folds.
  • Added “Save Selection as Clipping” to the Clippings menu; when you have a selection range, this command is enabled and will copy the selection range to a clippings file (using the same UI as “Save as Clipping”) without affecting the name or location of the front document.
  • Text Folding. The following menu commands have been added to the View menu:

Balance&Fold
Fold Selection
Unfold Selection
Expand All Folds

  • There is now a “Tool Bar” grouping in the Menus preferences. Right now it contains the commands for the Text Options popup menu. Some day it will contain more.
  • It is now possible to configure language specific options for the “(none)” language, in the Languages preferences. So, for example, if you wanted soft-wrapping on for all of your “(none)” files, but off for everything else, you can do that now by setting the default to not soft wrap, and then turning it on in the language-specific settings for “(none)”.
  • The language options sheet for JavaScript now contains a control for whether you want anonymous functions to be listed in the function popup.
  • The —wait flag is now supported when using the command line tool to open ftp or sftp URLs.
  • The window control flags (i.e. —new-window) are now supported when using the command line tool to open ftp or sftp URLs.
  • Added a built-in language for Perforce specifications.
  • Added support for Ruby’s “ri” to “Find in Reference”
  • Added “first class” support for Ruby as a #! language. This gets you check syntax, run in debugger, error parsing, reference lookup and runtime support for local(relative) include/require files (-Ipath).
  • The bbedit command line tool knows how to parse “bbedit file.c:10” into “open and goto line”. Character offsets (bbedit file.c:10:2) are currently ignored, but the line portion is honored.
  • The “Balance” and “Balance&Fold” commands will now work on tags when working with an HTML/XML document as long as the selection range isn’t in some embedded language (like CSS, javascript, etc.)
  • If there is a partial word to the immediate left of the insertion point, the “Insert Clipping…” command will attempt to autocomplete that word based clipping names in the current and universal set (using a BEGINSWITH style match.)
  • If there is a single match, the partial word is replaced with the clipping.
  • If there are multiple matches, the clipping panel will appear, pre-filtered using the partial word string. (If you insert a clipping, the partial word is replaced with the clipping of your choice.)
  • If there is no partial word to the immediate left of the insertion point, the clipping panel works as it did in previous builds. Type to filter the list, return to insert/apply the clipping.
  • There is no preference UI to control the autocomplete behavior, but it can be disabled with the command line:

defaults write com.barebones.bbedit Clippings:CompletionEnabled -bool YES

  • When the anchor tool is pointing at a directory, the internal anchor list will show the anchors for the default file.
  • “utf8” is now accepted as a synonym to “utf-8” by the command line tool and scripting interfaces.
  • The JavaScript language module has been improved, with support for anonymous functions and folding.
  • When inserting text into an empty document whose language is “(none)”, BBEdit will auto-guess the language and adjust accordingly. The intended usefulness of this addition is for setting the document’s language correctly when pasting or dragging a chunk of guessable text into an empty document; it won’t be quite so useful when you’re just typing. :-)
  • Added and/or updated and/or expanded glossaries for HTML and CSS.
  • Look Up in Dictionary from the context menu will use the dictionary panel when appropriate.
  • If Xcode is running, Open Selection and Open File by Name will ask it for a path to the file name; if something useful comes back, BBEdit will open it.

Some tricks:

This behavior can be turned off if desired:

defaults write com.barebones.bbedit Services:AskXcodeForOpenFileByName -bool NO

To override the built-in implementation, write a script of the following form, and save it as a compiled AppleScript named “AskXcodeForFilePath.scpt” in ~/Library/Application Support/BBEdit/ :

on askXcodeForFilePath(fileName) tell application “Xcode” tell active project document (full path of every file reference whose name is fileName) end tell end tell end askXcodeForFilePathp. The “askXcodeForFilePath” entry point takes a single parameter (the name of the file we’re looking for), and should return a list of strings, each element of which is the full path to a file matching that name. (The script will not get called if wildcard-matching is turned on, so you don’t need to support filename globbing or the like.)

  • “Save Selection as Clipping” now appears on the contextual menu when there’s a selection.
  • The JavaScript language module features the following enhancements:

1. Truly “anonymous” function detecting is optional, and can be controlled by the “Show Anonymous Functions” setting in the JavaScript language options (Languages preferences);

2. Functions that were previously undetected completely are now shown as regular functions. That is, functions which are assigned to variable or object properties, like this:

var foo = function() { … }; foo.bar = function() { … }; var bar = { bat: function() { … } };p. In the above examples, foo(), bar() and bat() would all be listed in the function popup.

3. Nested functions are supported, and are listed properly in the function popup.

function a() { var b = function() { … } b(); }p. 4. ‘$’ is recognized as a legal character in identifiers.

5. The keyword list is updated and expanded.

6. Regular expressions are detected and colored separately from strings.

  • Open Selection and Open File by Name will now also search in the PrivateFrameworks folders, and therein, now also search within the PrivateHeaders directories.

Changes

  • Modernized the “Backup Options” dialog. It’s a sheet now, and there’s more room for those super-sized Unix file paths.
  • HTML Web Site prefs dialogs now run as sheets.
  • Fixed cosmetics in the HTML Preview prefs; adjusted the file dialogs for “Add” and “Change” buttons to run as sheets. “Remove” is now “Forget” to match the text in the alert.
  • Source control config dialogs run as sheets now.
  • Dialogs in the FTP preferences (add/remove bookmark) now run as sheets.
  • File Search prefs get sheets.
  • Most of the file and folder dialogs invoked directly from the Prefs dialog now run as sheets.
  • The comment options dialog (in the Languages preferences) now runs as a sheet.
  • New disk browser layout: the list of files is now down the left-hand side of the window, which opens up more vertical space for the text view.
  • Changed the format of the time stamp used for naming backup files (when “Make Backup Before Saving” is turned on). The new format includes the time the backup was made, and sorts better in “by name” listings.
  • Adjusted control names and prompts in the Preferences dialogs to match modern conventions (sentence case instead of title case).
  • Removed the settings for translucent drags from the Application preferences. If you previously changed the setting from its factory default, the change is still honored. If you want to change it, you can do so from the command line:

defaults write com.barebones.ProductName Services:TranslucentDrags -bool NO

Note: Change “NO” to “YES” to enable translucency in drags.

  • The prefs UI bits for QuickTime translation and playback have been consigned to the dustbin of history. If you previously changed these settings from their factory defaults, the changes will be honored. Also, the factory default for QuickTime playback is now off, so BBEdit and TextWrangler will no longer try to interpret .m3u and .smi files as movies (which was technically possible but not really useful).

If desired, these settings can be changed from the command line:

defaults write com.barebones.ProductName Services:QuickTimeImages -bool NO defaults write com.barebones.ProductName Services:QuickTimeMovies -bool NO defaults write com.barebones.ProductName Services:DontTranslatePDFs -bool YES

  • Modernized alerts for plug-in installation and “Open File by Name” searching confirmation (presented when none of the search paths work out).
  • Modernized the “Can’t Undo” alert for plug-ins.
  • Modernized the confirmation dialog for Revert. (You won’t ordinarily see this unless the revert is done from the scripting interface with an explicit “ask”.)
  • Modernized the various alerts related to Set Menu Keys and friends.
  • Updated the “Delete Now” alert (which doesn’t come up much in nature; it’ll occur when an internal “Move to Trash” fails).
  • Modernized the document-unlock confirmation alerts
  • Shell Worksheets now use the default shell for your account. The “Default Unix Shell” setting (Tools prefs) is no longer visible; the controls to change it have been removed. Likewise, the “New Shell Worksheet…” command (which let you choose which shell to use) has been removed. If you previously set or changed the default shell setting, this will persist; if desired, you can change the default shell from the command line:

defaults write com.barebones.bbedit Services:DefaultUnixShell /path/to/shell

  • The “Browser Display” preferences UI has been consigned to the dustbin of history. if you previously changed these settings from the factory defaults, the changes will be honored. If you wish to change them further:

defaults write com.barebones.bbedit BrowserWindows:ShowIcons -bool NO
defaults write com.barebones.bbedit BrowserWindows:HierarchicalResults -bool NO
defaults write com.barebones.bbedit BrowserWindows:NodesExpanded -bool NO

  • The “Show Icons” preference for multi-file Find Differences results windows has, well, you get the idea. If you changed the setting from its factory default, the change will be honored. Otherwise:

defaults write com.barebones.bbedit DifferencesResults:ShowIcons -bool NO

  • Used to be, there were two “Find in Reference” commands; one on the Search menu, and one on the #! (Shebang) menu. These have been consolidated, and “Find in Reference” on the Search menu now does the appropriate documentation lookups for Perl and Python.
  • The “Open from FTP Server” command no longer brings up the modal dialog. Instead, it will open an FTP/SFTP browser window if none is open; otherwise it will bring the frontmost FTP/SFTP browser all the way to the front, ready for entry.
  • FTP/SFTP browser windows get rounded pushbuttons
  • Rearranged the View menu by adding a new “Text Display” submenu. This menu contains the following commands:
  • Show/Hide Fonts (moved here from the Text menu)
  • Soft Wrap Text
  • Show/Hide Page Guide
  • Show/Hide Tab Stops
  • Show/Hide Line Numbers
  • Show/Hide Invisibles
  • Show/Hide Spaces
  • You’ve always been able to use Control-Tab to switch between counterpart files (source to header and vice versa), and beginning with 8.0 you could even change the keyboard equivalent. However, now that you can explicitly specify a counterpart file (not just rely on C/C++ style header/source mapping), “Open Counterpart” has now been promoted to the File menu rather than being invisible.
  • The “Insert File Path” and “Insert Folder Path” commands (Edit menu, Insert submenu) have been coalesced into “Insert File/Folder Paths”. You can choose any number of files and folders.
  • Insert Folder Listing" now allows you to choose multiple folders.
  • Insert File Contents", “Insert File/Folder Paths”, and “Insert Folder Listing” now run as sheets in the editing window rather than as app-modal dialogs.
  • The “Insert” pop-up menu in text view tool bars has been consigned to the dustbin of history, since it duplicates what’s on the “Insert” submenu of the Edit menu.
  • The Document Path popup has been removed from the tool bar, since it is largely redundant to the popup menu that you get when you command-click on a window’s title. The “Copy Path” command and friends have been moved to a new “Copy Path” submenu on the Edit menu.
  • Disk browser windows get the rounded push buttons
  • Perforce submission form windows get the rounded push buttons
  • The ASCII Table palette gets round pushbuttons.
  • Modernized the CVS Remove confirmation alert
  • Normalized nomenclature for line-break types in the UI:

“Mac (CR)”
“Unix (LF)”
“Windows (CRLF)

  • The commands on Markup → Tidy are now factored and recordable. Where appropriate, the dialogs run as window-modal sheets.
  • The separate preferences for “BBEdit plug-ins”, “Script menu”, and “Text Factories menu” have been removed from the Application preferences. If you want to hide those menus, you can now do so in the Menus preferences.
  • The “Script Editor” setting in the Tools preferences has been consigned to the dustbin of history. BBEdit/TextWrangler will use whatever application that the OS claims is capable of opening script files.

If you wish to override this, you may do so from the command line with a “defaults write” command to change the “Services:ScriptEditorBundleID” preference; for example, to set the script editor to Script Debugger:

defaults write com.barebones.bbedit Services:ScriptEditorBundleID com.latenightsw.ScriptDebugger

  • The “Tools” preferences pane has been consigned to the dustbin of history. The “Install Command Line Tools” button has been moved to the “Application” preferences.
  • The “Startup” preferences pane has been consigned to the dustbin of history. The startup settings are now in the “Application” preferences.
  • Since the “Open from FTP/SFTP Server” and “New FTP/SFTP Browser” are practically synonymous, the latter has been removed as a startup option.
  • Set Menu Keys" has been removed from the application menu. There is now a “Menus” preferences panel, which contains the list of commands and the means to adjust their keyboard equivalents.
  • Set Key…" for glossaries and certain other palettes (Scripts, Stationery, Text Factories) gets the new Set Key sheet.
  • The Plug-In Tools floater now uses the new Set Key sheet.
  • The “Allow menu key equivalents to autorepeat” preference has been moved from Applications to Menus.
  • The switches in the Contextual Menu preferences have been moved to Menus; the Context Menu preferences pane is no more.
  • The “Glossary is language sensitive” preference has been moved to Languages.
  • The Glossary preferences panel has been consigned to the dustbin of history. The old “ignore trailing CR” preference can be adjusted from the command line should it ever be necessary (which, as far as I can tell, it hardly ever has been):

defaults write com.barebones.bbedit Glossary:IgnoreTrailingReturns -bool YES

  • The “HTML Palette” and “HTML Colors” preferences have been consolidated into “HTML Palettes”.
  • The “Documents” and “Documents Drawer” preferences have been consolidated into “Documents&Drawer”.
  • The text encoding settings, formerly in Text Files: Opening and Text Files: Saving, have been relocated to the Text Encoding preferences, as has the “Link file’s encoding to HTML/XML character set” setting.
  • The “Text Files: Opening” and “Text Files: Saving” preferences panes have been (re)combined into a single “Text Files” preferences pane.
  • The “Warn when opening a malformed UTF-8” preference control has been removed. If you wish you may adjust this preference from the command line:

defaults write com.barebones.bbedit Filing:WarnMalformedUTF8 -bool YES

  • The “Differences” prefs pane has been consigned to the dustbin of history. If you use the “Arrange…” command with a differences window open, its settings will be remembered across invocations of the application (and will take effect the next time you do a Find Differences).

If you want to adjust the Hide Palettes or Keep Windows Arranged options, you can do so thusly:

defaults write com.barebones.bbedit DifferencesResults:HidePalettes -bool TRUE defaults write com.barebones.bbedit DifferencesResults:KeepWindowsArranged -bool TRUE

  • CVS directories (that is, directories containing CVS administrative data such as root and repository information) are now considered invisible. This affects Find Differences when comparing folders, and the behavior of multi-file search and replace. If for some reason you need the old behavior:

defaults write com.barebones.bbedit Misc:CVSDirsAreInvisible -bool NO

  • The antiquated notion of “shielded” folders (designating folders to be ignored by wrapping their names in parentheses) has been consigned to the dustbin of history. This change affects the folder scanners used by:
  • Open file by name
  • Text factories
  • Multi-file search&replace
  • Check/Update Site
  • Revised the “bbdiff” tool to take out mention of the “—skipShieldedFolders” option.
  • The “Zoom Windows To:” setting in the Windows preferences has been consigned to the dustbin of history. The application will always zoom a window to the screen with which it has the largest intersection (which was the factory default from previous versions, and the consistent behavior of the OS).
  • If a File Search directory is unavailable, it is so indicated in the list.
  • The “Only Search<…>Folder” option in the Open File By Name dialog was an anachronism whose time has passed.
  • Normalized the UI nomenclature to “Tool Bar” for the tool bar and “Status Bar” for the (new) status area.
  • Coalesced the Software Update settings into the Application preferences.
  • The “Always zoom windows” preference (Windows prefs) has been consigned to the dustbin of history. To always open a document window at its default position and size, rather than any such which may have been saved with the document, turn off the “Window position” setting in the “Text Files” preferences.
  • The “Move as little as possible” control for window zooming has been removed from the Windows preferences. If you want to change this value:

defaults write com.barebones.bbedit Windows:ZoomInPlace -bool NO

  • The “Maximum width” setting in the Windows preferences has been consigned to the dustbin of history. The application now figures out how wide to zoom your windows based on other (and generally more useful) criteria.
  • The “Unix Scripting” preferences pane is gone:
  • “Use UTF-8 for Unix script I/O” has been moved to the Text Encoding preferences
  • “Warn about non-Unix line breaks before running” can now be adjusted from the command line if necessary:defaults write com.barebones.bbedit “#!ScriptTask:WarnAboutNonUnixLineBreaksBeforeRunning” -bool NO
  • “Use Affrus for Perl debugging” can now be adjusted from the command line if necessary:defaults write com.barebones.bbedit “#!RunScriptPrefs:UseAffrusForPerlDebugging” -bool NO
  • Perforce, CVS, and Subversion support no longer depend on preferences whose UI no longer exists; if the appropriate command-line tools are installed, the corresponding BBEdit services are enabled.
  • Removed the legacy Cumulus image support from the HTML tools’ “Image” dialog.
  • The layout of items in the Preferences window has been adjusted to match current HIG recommendations for placement and spacing.
  • Rebranded the Glossary feature as “Clippings”. If you have an existing “Glossary” folder, it will be renamed to “Clippings” and an alias named “Glossary” will be created to preserve backward compatibility.
  • The “Glossary is language sensitive” setting in the Languages preferences has been retitled to “Change clipping set to match document’s language”.
  • In the Sort and Duplicates sheets, renamed the radio button “Entire Search Pattern” to “Entire Match” to be more precise about what is going to match.
  • Find Differences results windows now use the standard push button, to work around the bug in the standard bevel button.
  • File Group windows now use the standard push button, to work around the bug in the standard bevel button
  • The floating palettes now use the standard push button, to work around the bug in the standard bevel button
  • The “Plug-In Info” window now uses the standard push button, to work around the bug in the standard bevel button.
  • The “Quick Search” window now uses the standard push button, to work around the bug in the standard bevel button.
  • The Spelling preferences have been consigned to the dustbin of history. The highlight color setting can now be found in Text Colors, and the “Check spelling as you type” setting is now in Editor Defaults.
  • Check spelling as you type" is now settable on a per-language basis.
  • The “File Type” popup, used in disk browsers and the Open dialog, has been shortened and simplified. The “PICT Files” setting is gone, and the word “QuickTime” has been removed; instead, there’s a single “Images” setting and a single “Movies” setting. (Note that options may be hidden if QuickTime image translation or movie playback have been turned off.)
  • Updated all appropriate floating palettes to use the “glass” rectangular buttons.
  • Pushed around layout in the Find Differences dialog to make more room for file paths and open up the spacing a bit.
  • The factory default encoding for writing files is now UTF-8 (No BOM).
  • Shell Worksheet documents now only show the cursor position, command status, and selected language (in that order).
  • Retitled the Find Differences results window buttons.
  • Double-clicking on a language in the Languages prefs list now brings up the Text Options sheet for that language, rather than the Options sheet.
  • Since the separate Word Services setting is gone from the Spelling preferences, if you want to use Excalibur for spell checking (which is useful if you spend a lot of time in LaTeX, I’m told), you can enable it from the command line:

defaults write com.barebones.bbedit Spelling:UseExcalibur -bool YES

  • The language module interface has been enhanced so that coded modules can indicate whether they filter language runs for spell checking. This gives modules greater control over which runs of text are eligible for spell checking.
  • If the application couldn’t guess a file’s encoding, the appropriate preference is honored (unless the preference indicates a UTF-8 encoding, because we would have figured that out beforehand). If unmappable characters occur while reading the file using the preferred encoding, the application will drop a sheet asking you to choose another encoding.

There’s a new hidden preference that can be used to bypass the default encoding:

defaults write com.barebones.bbedit Filing:Filing:AskForUnguessableFileEncoding -bool YESp. If this preference is set, then the application will ignore the preference and always drop the sheet asking you to choose an encoding.

  • Language modules are now required to report, via the feature flags, whether they implement custom keyword lookups via the kBBLMMatchKeywordMessage and/or kBBLMMatchKeywordWithCFStringMessage. Bundled language modules do this with the “BBLMSupportsOneByteKeywordLookups” or the “BBLMSupportsCFStringKeywordLookups” keys. (Note that if “BBLMSupportsCFStringKeywordLookups” is present and TRUE, then “BBLMSupportsOneByteKeywordLookups” will be ignored.
  • The little “keychain” icon has been retired from the FTP/SFTP dialogs and browser.
  • The FTP/SFTP browser no longer uses separator lines between buttons with extra space.
  • Layout cleanups in FTP/SFTP browsers.
  • The toolbar icons have been updated and modernized. NB: this also affects the drawer icon in the Find dialog.
  • When doing “Find in Reference” on an empty selection in a document, you now get a sheet instead of an app-modal dialog, and the sheet is prefilled with what a “Find in Reference” from the contextual menu would have looked for.
  • Changed the name of “Save Clipping” to “Save as Clipping”, so that it’s a little clearer that you’re performing a Save As operation in the process.
  • The HTML updater and clipping placeholder processor now use the unicode aware date/time formatters to generate date and time strings. (This means we are no longer subject to the warning "This region can only be used by Unicode applications. WorldScript applications will use the last compatible region.)
  • The “Enter Serial Number” dialog will warn you if you try to enter a serial number from a previous version.
  • The “Enter Serial Number” dialog now has a “Lost Number” button.
  • Added default keyboard equivalents as follows:

Navigation Bar → Open Files Menu (Ctrl-Opt-F)
Navigation Bar → Open Function Menu (Ctrl-Opt-N)
Navigation Bar → Open Includes Menu (Ctrl-Opt-F)
Navigation Bar → Open Marker Menu (Ctrl-Opt-M)

  • Folders whose names begin with a period (.) are now considered invisible. This affects Find Differences, and folder comparisons.
  • Changed the default page guide setting to 100 characters (previously 80).
  • When you click the “Find All” button in the “HTML Preview” preferences, BBEdit will look not only for browsers on its built-in list, but also for any application that claims it can handle http:// URLs. In this way, you can easily update the list of browsers for previewing after installing a new browser.
  • If the document’s language does not support function scanning, the function popup and includes popup are removed from the navigation bar.
  • Modernized various Perforce confirmation dialogs
  • The app-modal Hex Dump File dialog now uses a sheet when choosing a file.
  • Modernized the “Open File by Name” dialog.
  • Changed the behavior of the Clippings palette so that the language default no longer overrides a manual choice when “Change clipping set to match document’s language” is turned on.
  • The “Quick Search” command is now disabled unless the front window has a text view in it or otherwise responds to the Quick Search command (as in the Preferences window).

Fixes

The following problems have been corrected in BBEdit 8.5:

  • Fixed a bug where save as on a text file didn’t change the file creator back to BBEdit.
  • Fixed a bug where twiddle was incorrectly resurrecting a deleted character from the gap in certain situations.
  • Removed a stray placeholder from the format string for reporting AppleScript errors.
  • Worked around ssh not sending a useful password prompt to the SSH_ASKPASS helper in some situations.
  • Plugged a hole that would cause a crash if you did a “Paste Column” nto a freshly created document.
  • Adjusted the scripting interface and internals to represent FTP/SFTP port numbers as 32-bit quantities (rather than 16), which fixes a cosmetic problem when using large port numbers in the FTP bookmarks preferences.
  • Fixed a bug where if an exception were raised while running a plug-in (for example, if it was mal-formed) the menubar would be left in an state where most commands were disabled.
  • Fixed a bug where the “Open Documents in BBEdit” action wouldn’t always open documents in BBEdit if the input was from “Get Selected Finder Items”.
  • Fixed a bug in the “Get Document Contents” action where ignored the value of the source popup.
  • Fixed a byte order bug in the ASCII table which resulted in incorrect Code and Escape values when running on Intel.
  • Fixed bug in which the “Passive FTP” switch setting in FTP browsers wasn’t honored when opening files, which was a problem when the setting differed from the global preference.
  • Fixed a bug in which “Count Words” didn’t correctly take apostrophes (right curly single quote) into effect.
  • Detached state storage now tracks documents which are moved/renamed (within a single volume) if that volume supports persistent file ids.
  • The screen positioning options in the Arrange dialog for differences are now disabled when the system you’re running on has only one screen.
  • The multi-screen options in the Arrange dialog are disabled if the system you’re running on has only one screen.
  • Fixed a bug where editing a CSS ruleset would insert extra whitespace after the selector if the tag was ruleset was auto indented.
  • Fixed bug in which markers whose names began with a hyphen were turned into separators on the Marker menu.
  • Fixed a bug in the C++ function scanner in which the first #pragma mark after the opening brace of a namespace was ignored.
  • Fixed a -50 error when doing a CVS file commit when you aren’t using the bbedit tool as the commit message editor.
  • Fixed a bug where the Paste command appeared disabled in navigation services dialogs.
  • Fixed bug in which keystroke modifier information for outboard items (glossary, scripts, etc) was lost when moving preferences from a PowerPC machine to an Intel machine. Note that if you previously re-configured your keyboard equivalents after moving to the Intel machine, you’ll have to configure them again one more time; sorry for the inconvenience.
  • The horizontal scrollbar scope is computed using the same logic as the page guide when wrapped to a character limit. This avoids the problem where the scrollbar range is much larger than it needs to be because a font reported an overly large value for widMax.
  • Fixed a bug where if you did ‘bbedit -w filename’ for a file that didn’t exist more than once, any invocation after the first one would return immediately.
  • The SystemVersionCheck stub now launches the sub-process under Rosetta when appropriate.
  • Fixed a bug in the PHP function scanner where it incorrectly treated “class” and function as “case” sensitive.
  • Fixed bug in which ‘aete’ (scripting terminology) resources were not loaded for bundled plug-ins.
  • Fixed bug in which the “Why is this menu empty?” command was visible even when it shouldn’t have been.
  • Fixed a bug in the format string for reporting environment errors from BBIncludes which invoke #! scripts.
  • Reworked STDIN handling in ShellCommand to avoid a potential hang and correct a pathological performance problem when using a #! script in a text factory.
  • Fixed a bug in which the Editor Defaults settings wouldn’t correctly load the preferred font setting for certain fonts.
  • Fixed a bug where the HTML includes processor didn’t accept #bbincludeoptions# when it included the surrounding # marks as spelled out in the documentation.
  • Detached state storage now tracks documents which are moved/renamed (within a single volume) if that volume supports persistent file ids.
  • The screen positioning options in the Arrange dialog for differences are now disabled when the system you’re running on has only one screen.
  • The multi-screen options in the Arrange dialog are disabled if the system you’re running on has only one screen.
  • Fixed a bug where editing a CSS ruleset would insert extra whitespace after the selector if the tag was ruleset was auto indented.
  • Fixed bug in which markers whose names began with a hyphen were turned into separators on the Marker menu.
  • Fixed a bug in the C++ function scanner in which the first #pragma mark after the opening brace of a namespace was ignored.
  • Fixed a -50 error when doing a CVS file commit when you aren’t using the bbedit tool as the commit message editor.
  • Fixed a bug where the Paste command appeared disabled in navigation services dialogs.
  • Fixed bug in which keystroke modifier information for outboard items (glossary, scripts, etc) was lost when moving preferences from a PowerPC machine to an Intel machine. Note that if you previously re-configured your keyboard equivalents after moving to the Intel machine, you’ll have to configure them again one more time; sorry for the inconvenience.
  • The horizontal scrollbar scope is computed using the same logic as the page guide when wrapped to a character limit. This avoids the problem where the scrollbar range is much larger than it needs to be because a font reported an overly large value for widMax.
  • Fixed a bug where if you did ‘bbedit -w filename’ for a file that didn’t exist more than once, any invocation after the first one would return immediately.
  • The SystemVersionCheck stub now launches the sub-process under Rosetta when appropriate.
  • Fixed a bug in the PHP function scanner where it incorrectly treated “class” and function as “case” sensitive.
  • Fixed bug in which ‘aete’ (scripting terminology) resources were not loaded for bundled plug-ins.
  • Fixed bug in which the “Why is this menu empty?” command was visible even when it shouldn’t have been.
  • Fixed a bug in the format string for reporting environment errors from BBIncludes which invoke #! scripts.
  • Window titles and status bar paths now update even when only the file name’s case has changed.
  • Deleting or cutting or pasting an extremely large (vertically) rectangular selection should now be handled much more quickly.
  • Added “edit” (for TextWrangler) and “mailx” to the Unix shell script keyword list.
  • Fixed bug in which the results browser context line for a search match on line 2 of a file would be blank if line 1 of the file consisted solely of a carriage return.
  • The HTML syntax checker now accepts the optional ;param at the end of a content-type.
  • Fixed the behavior of Process Duplicates and Sort Lines when using grep patterns.
  • /private/var/tmp/ is now considered a “temp” directory for purposes of not remembering recent files opened from /tmp.
  • The numbers in the Get Info window now display with proper thousands separators.
  • Fixed bug in which the BBXFDoesNotModifyEditWindow and BBXFRequiresModifiableWindow keys in plug-in plists worked at cross purposes. The application will now prefer the newer (BBXFRequiresModifiableWindow) if both are present, as it should.
  • The comment string used for multi-file search progress windows is now properly escaped for appearance in the Window menu.
  • Fixed a bug in which the “string not found” sheet would fail to appear in the search status window in situations when it should have (so the status window would just quietly go away, instead of reporting “[search string] not found”.
  • In the “Not found” sheet for multi-file searches, the search string is now escaped properly for display.
  • Updated the built-in list of known browsers for “Preview”.
  • Install a low-level Carbon Event handler so we can do window proxy drags from the background like the Finder and Cocoa apps.
  • Added STDIN, STDOUT, and STDERR to the PHP keyword list
  • Fixed an edge condition where the tag editors would edit an existing tag pair instead of creating a new one when the insertion point was just before the tag pair.
  • Skip “invisible” (e.g. “.svn”) directories when scanning the clippings folder.
  • Fixed a path error in the default worksheet stationery.
  • In HTML, the trailling ; on an entity is optional. The entity decoder now behaves consistently with the entity encoder and syntax checker in that it DOES NOT process/decode entities which lack the trailing ;.
  • Fixed bug in which user customizations to date/time formats were ignored (and the wrong formatting was generated). [57880, 58342]
  • When doing p4 Compare Revisions, sequence the temp file name (if necessary).
  • Corrected an error in the headerdoc for bbxtGetSelection() and bbxtSetSelection().
  • Fixed bug in the Hex Dump tool in which the “Blank line every…” setting was not properly reloaded if the check box had been turned off, leading to a crash (unless you noticed the missing setting and reset the radio buttons).
  • Fixed broken Rendez^H^H^H^H^H^HBonjour server lookups when running on Intel.
  • “Find all Misspelled Words” no longer limits the range of spell checking to the first 64K of the document.
  • Fixed bug in which PHP functions-returning-reference didn’t appear in the function menu if whitespace existed between the “&” and the function name.
  • Fixed an edge case in the PHP scanner in which an empty function body (consisting of two braces with nothing between them) or other empty brace construct would result in subsequent functions being lost.
  • Un/Comment Selection does nothing when there’s no selection, so in that case it is now disabled.
  • Changed the “triple-click” behavior for hard-wrapped text and for soft-wrapped but hard-line-numbered text (this also applies to “single-click line selection”). It is now consistent with the behavior of triple-clicking soft-wrapped and soft-line-numbered text. Specifically, the line/paragraph initially clicked on will always stay selected, whether you drag the selection up or down.
  • Fixed a bug in the tab auto-expansion code.
  • If a file looks like an “mbox”-format file, BBEdit will no longer let the HTML guesser at it, just in case the file contains HTML messages that might cause things like text-encoding miscues and misguided attempts to interpret the file as HTML.
  • Fixed bug in which dropping bundled plug-ins (or language modules) on the application would cause them to open in a disk browser, rather than being offered for installation.