BBEdit 8.7.1 Release Notes
This page documents all feature enhancements and bug fixes included in the BBEdit 8.7.1 update.
For information on changes made in previous versions of BBEdit, please see the release notes archive.
For detailed information on using any of BBEdit’s features, please refer to the user manual (choose “User Manual” from BBEdit’s Help menu).
Requirements
BBEdit 8.7.1 requires Mac OS X 10.4 or later. If you’re still using Mac OS X 10.3.9, BBEdit 8.5.2 is the most recent version you will be able to run.
This version is a Universal application: it runs natively on both Intel-based and PowerPC-based Macs.
Additions
- Added a pair of new commands to the Insert submenu on the Edit menu: “Short Time Stamp” and “Full Time Stamp”, which insert short and long forms (respectively) of the current date and time.
- The Java module now fully supports annotations and annotation definitions. Annotation are treated as modifiers. Annotation definitions are treated like interfaces, except the entry in the function popup is prefixed with “annotation” instead of “interface”.
- File and folder items dragged from disk browsers and file groups can now be dropped into applications that expect file URLs, such as Terminal.
- Language modules (codeless and otherwise) can now specify whether “code” runs (that is, anything that’s not a comment, string, or keyword) can be checked for spelling by adding the following key/value pair.
BBLMCanSpellCheckCodeRuns
NB: if you’ve written a language module of your own, you should probably add this key/value pair to your language module’s plist if your module is for a “markup” language as opposed to a “scripting” language (i.e. any text that’s not explicitly in a comment is probably content rather than code).
- “New (with selection)” and “New (with clipboard)” now create the new document using the language of the selection or clipboard (respectively).
Changes
- In 8.7, the names and behaviors of some commands on the Search menu were changed in order to provide a more consistent behavior model and fit in better with other applications. Apparently, the world wasn’t quite ready for this, so the behavior has reverted to pre-8.7 standards. The following menu commands remain renamed:
Enter Search String →Use Selection for Find Enter Search Pattern →Use Selection for Find (grep) Enter Replace String →Use Selection for Replace Enter Replace Pattern →Use Selection for Replace (grep)
- In FTP browser windows, hitting the Return or Enter key while the keyboard focus is in one of the edit fields will attempt a connection, as long as there is a host name in the “Server:” field. The “Connect” button will throb to indicate this. The old behavior of advancing to the next field when hitting Return or Enter is gone. When the focus is on a selected item in the list, Return/Enter opens the selected item as before; now the “Open” button throbs to indicate this.
- The “Find” button in the Quick Search window now throbs to indicate that hitting Return or Enter will perform a Find.
- If there is no selection, “Find Definition” will drop a sheet (prefilled with its best guess, like “Find in Reference” does) rather than always trying to guess based on the insertion point.
Fixes
- Tightened up the guesser for Strings files. It’s now a lot more difficult for it to guess incorrectly.
- Ruby’s %W-style “interpreted string-based array constructor” is now detected and syntax-colored appropriately.
- Fixed a bug in the Java language module which caused the function popup to be incomplete when class instance creation expressions were followed by some unexpected syntax.
- Fixed a bug in the java module that caused items to have the wrong names in the function popup when the items were modified with an Annotation, and that annotation included parenthetical arguments. For example, the following method named Foo:
@Tatr (bird=1) public void Foo() { return; }
…would have been named “@Tatr” in the function popup, instead of “Foo”.
- Fixed a bug in the JavaScript module which prevented some blocks from having fold ranges.
- In JavaScript files which make use of Prototype-style Object.extend() calls, if the object being extended is assigned to something, that something is now listed in the function popup.
In the following example, ‘foo’ will now show in the popup:
var foo = Object.extend( new bar.bat(), { … } )
- In JavaScript files, functions which are both enclosed in parentheses and which have assigned names will appear correctly in the function popup, rather than being listed as [anonymous].
Example: var foo = (function() { … })();
- Fixed regression in the JavaScript module (from 8.7), wherein Function.prototype would be listed in the function popup as [anonymous]
- Also, the recognition of Prototype-style Object.extend now works with functions as the second argument to extend(), even if the function is wrapped in parentheses. (Thinking we should rewrite BBEdit in JavaScript.)
- Fix for incorrect handling of ‘A’ keystroke events in key_translate when the modifier key was down.
- Fix for bug where “Save a Copy” (n.b. only “Save a Copy”, not “Save As”) would generate an empty file when saving over the original file.
- Fix for bug where the wrong values were passed to menu scripts for the menu title and item title when choosing Preferences or Quit from the application menu.
- Fixed a bug where a scripted multi-file search or replace would display the “not found” sheet when the script was run from the script menu regardless of the “showing results” flag.
- Fixed a bug where Exchange Words did not work correctly if the right-hand word was at the end of a line.
- Fixed bug where Process Lines Containing factory engines indicated they were not configured, even though they were.
- Since we cannot auth save to server volumes, don’t bother trying.
- Fixed a bug where empty nodes in File Groups and Disk Browsers could get their disclosure triangles stuck in the open position.
- The title of the FTP put dialog reflects whether we are putting a copy, or not.
- When guessing languages from file names, if the filename ends in .gz or .gzip, guess based on the base filename instead of the compressed name.
- If an SFTP connection fails because the host key changes, give the user the option of editing the known_hosts file directly, instead of making them find it themselves, and having to guess at the line containing the stale key.
- After restoring disk browser windows, restore their titles as well so Disk Browser 1 still points to the same directory it did when you quit.
- Made it possible for Text Factories to operate on single line selection ranges.
- Add/Remove Line Numbers works on a single line selection. (I’m not sure why this would be useful, but there you have it.)
- Fixed a bug where grep patterns added or removed in the Text Searching pref pane were not reflected in the Find dialog until the application had been recycled.
- Write out documents in Z-order, so when they are restored (in reverse order) the correct item is selected/active.
- If you cancel the admin authorization for installing the command line tools, BBEdit won’t try to automatically install them again. As before, you can use the “Install Command-Line Tools” command on the BBEdit menu to install the tools at some later point.
- Fixed bug in which perldoc/pydoc/ri results windows ignored the position and size requested by a previous invocation of “Save Default Window”.
- Fixed a bug in the expansion of File Group documents for multi-file searching which typically resulted in only one randomly selected file from each group being searched.
- When scanning Pascal source files, BBEdit will stop scanning a string if it encounters a line break in the middle of the string; this prevents subsequent eligible folds and functions from being missed.
- Fixed crash which would occur when trying to run a Text Factory containing one or more operations which had comments, but which were not otherwise set up.
- Fixed bug in which “#script#” placeholders in clippings would fail to expand if the script name was longer than 32 characters.
- Fixed bug in which the Cursor Position display didn’t show up if it was the only visible item in the Status Bar.
- Fixed bug in which content in JSP files was not checked by “Find All Misspelled Words”.
- Fixed a problem where the initial state of the backup settings were getting clobbered if you had previously configured a backup directory.
- use CFAbsoluteTime to track modification dates to prevent timezone drift
- Made a change to the interaction model so that file group items that refer to unmounted volumes aren’t resolved until you try to do something interactive with them (like opening).
- Document state includes an MD5 of the in-memory text at the time state is written out. On open, we make sure the document wasn’t changed by another editor before applying state. This eliminates drift in selections and folds.
- Fixed bug in which intra-line diff highlighting didn’t work on lines that had non-ASCII characters.
- Folds in Ruby now start at the end of the module/class/def line, and end immediately before the ‘end’ that terminates the block.
So folded methods will now look like this:
@ def foo(…)end@
Instead of:
@ def foo (…)@
- Fixed a bug in the Java function parser related to parsing
<dotted.type>
parameters in class instantiation expressions.
- Fixed error when dragging remote files to a file group window from the Document Drawer.
- Fixed bug in which the operands to the “Language” file filter test weren’t properly loaded when editing a filter containing such a test.
- Text Factories are included in “All Readable Files” in the open dialog. There is now a “Text Factories” filter menu item. Shell worksheets match by type or extension.
- Fix for startup item documents being reopened with the wrong screen position.
- Sort FTP browsers using the same rules as the document drawer and menu.
- Shift-double-click on an item in the Clipping floater reveals it in the Finder, just like Scripts and friends.
- Fixed bug in which Bad Thingscould happen when dragging items between file group windows.
- Fixed bug in which PHP function declarations were ignored if more than one comment followed the declaration.
- Suppress the menu annotation for FTP browser windows not connected to servers, instead of showing an empty pair of parentheses.
- Fixed a crash which could occur if you closed the BBEdit Preview window while the web view was still loading.
- Fixed a bug in regex-based codeless language modules which would causing function parsing to prematurely stop after finding a one-line function.
- Fixed a bug where the ‘Verify Host Key’ dialog could end up stuck between the progress dialog when connecting to an SFTP host.
- If requested, the ssh askpass helper will store password credentials in the keychain after you supply them.
This improves the user interaction where you open a recent item, or handle a ‘get url’ event for an SFTP URL: after prompting for the password once, subsequent reopens will use the keychain, which is the identical user experience to FTP reopens, as well as the FTP/SFTP browser.
- Edit fields now correctly draw their frame when enabled and active. The edit fields in the FTP browser disable/lock while the connection is active.
- Secondary sort order for same-named documents is full path, instead of creation date.
- Fixed a broken format string when prompting for an FTP password
- Made a change to avoid creating keychain items when no password was supplied
- Added a new hack to force alias resolution in the code paths that Save takes. This resolves issues with -35 errors being returned while saving a file to an unmounted (but reachable) AFP volume.
- Fixed -10000 error when cancelling the authorization dialog for installation of the command-line tools.
- Dragging Text Factory items to reorder them now marks the document dirty.
- Made some changes to the SFTP code which should help (though not completely address) the bad behavior when a host pointed to by an open browser goes AWOL due to connectivity issues.
- If an FTP/SFTP connection times out, BBEdit will disconnect from the server so you need only click “Connect” to resume, instead of issuing a (redundant) “Disconnect” first.
- Fixed a regression which caused the Emacs arrow key emulation (Control-N,P,B,F) to stop working.
- Corrected a regression which resulted in an error alert when trying to print a specific page range of the document.
- Dragging the document icon out of the toolbar no longer drags a blank square.
- In SQL (MySQL), backticks can be used to delimit a “quoted identifier”, as per MySQL’s spec. So, any text in backticks will now be colored as a string.
- Typing "// #mark " at the end of a JavaScript file could cause a hang. Also, pragma marks (“// #mark”) in JavaScript files would sometimes have the last character clipped from the name in the function popup.
- Fixed bug in which dynamically generated items in file groups were inappropriately duplicated when dragging to another file group window.
- The HTML function and color scanners now correctly recognize the currently allowed MIME types for embedded JavaScript.
- Fixed off-by-one in generation of search results strings when the match ended on the last character of a file.
- Fixed bug in which a -1700 error would be reported when bringing up the Find Differences dialog, “Use File Filter” was turned on, and the saved filter had no terms.
- Fixed bug in which the wrong date/time was displayed in the Info dialog for FTP items.
- The Help Book can now install the command line tools for you.
- The TeX module now correctly handles the commands \big, \bigg, and \Bigg (previously, they could cause incorrect coloring of math environments). If there are other standard commands that don’t take parameters and instead just act on the next character, please tell us about them.
- Fixed a bug where if you tried to hard wrap a document at a width narrower than your tab width, BBEdit would hang (and eventually crash).
- Fixed a bug in the TeX module which caused it to miss the closing of math environments in certain circumstances, which would in turn cause it to miss the closing of any “parent” environments. The result was missing folds and incorrect indentation in the function popup.
- In TeX files, math delimiters ($) within \command {parameters} were sometimes ignored or misunderstood (poor things).
- Fixed -1701 which would occur when asking BBEdit to open a URL without a path component (e.g. “sftp://localhost”)
- Fixed crash which would occur when clicking the “Add” button after having deleted a collection that was selected during a previous invocation of that button.
- Fixed bug in which the PHP function scanner would be confused by more than one “extends” or “implements” qualifier.
- Fixed bug in which the wrong URL template was used for “Find in Reference” when the lookup symbol was in an embedded language run (e.g. PHP in HTML).
- Fixed bug in which the “Change Line Endings” text factory action had no effect on documents that were open when the text factory started running.
- Fixed bug in which the “Search Invisible Folders” and “Skip (…) Folders” options weren’t honored when expanding file groups for multi-file search and text factory application.
- Fixed bug in which the “Ends With” filter term would incorrectly fail when the suffix string used for the match occurred in the middle of the string being tested (as well as at the end).
- Fixed bug in which no file filtering (including “Text Files Only” testing as well as more advanced file filters) took place for text factories run from the Text Factory menu.
- Fixed crash which could occur when saving a very large document.