BBEdit 11.0.3 Release Notes

BBEdit 11.0.3 is a focused maintenance update which includes fixes for reported issues.

For details on all the new features and enhancements available in BBEdit 11, please see its release notes.

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 11.0.3 requires Mac OS X 10.8.5 or later (10.9.5 or later recommended; 10.10 supported).

Additions

  • This release consists entirely of fixes for reported issues, and contains no new features.

Fixes

  • Made a change to the internal "Replace All" mechanics to improve performance by a factor of two (results may vary).

  • Any unprintable characters in the ASCII range are now drawn as inverted red question marks, whether or not "Show Invisibles" is turned on. This will help reduce confusion when working with files that contain many such.

  • Zero-width Unicode characters are now drawn as a gray vertical bar when "Show Invisibles" is turned on.

  • Typing in the search box in the "Go to Named Symbol" panel will now select the first matching item.

  • Fixed bug in which the HTML syntax checker would sometimes report false positives for duplicate id attribute values.

  • When saving an existing file to disk, if the file being written already has a correct HFS file type (whether it needs it or not), the file type is preserved, which prevents the OS from arbitrarily changing the document icon and/or refusing to show QuickLook previews.

  • Fixed bug in which text transform scripting verbs would not return their output to scripts run from the built-in Scripts menu.

  • Updated the built-in list of VectorScript predefined names.

  • The PHP language module will now stop scanning when it encounters a __halt_compiler(), to avoid potentially getting confused by any subsequent binary data.

  • When mapping file names to languages, all extensions are tested before attempting to use exact or wildcard file name matches. This results cases such as the one in which a file named Makefile.pl is inappropriately mapped to the Makefile language instead of Perl due to the order in which language modules are queried for file name matches.

  • Fixed crash which would occur when cancelling "Create Bookmark", "Go to...", or "Create Directory" in the "Save to FTP/SFTP Server" dialog, or when cancelling "Create Bookmark" or "Go to..." in the FTP/SFTP browser. Shhhh!

  • Fixed bug in uncommenting of line comments on a single line containing the insertion point (or when the selection range did not include a trailing line break).

  • Fixed bug in which attempting to save a zero-length file with Windows line breaks would report a -50 error.

  • The path controls in the Find Differences dialog box now have tooltips when appropriate.

  • Adjusted the "is text file" content check to pre-emptively rule out Photoshop files, which look enough like text files internally to pass the test. Any file which has a nonzero HFS file type that is not 'TEXT' or a relative is now ruled out in the "is a text file" test, in advance of any content checking. Together these two changes will prevent multi-file searching from finding text in files where it shouldn't.

  • Made some changes to make the default list of preview helpers more useful.

  • When examining a file to determine whether it is a Zip archive (for opening as well as when searching), BBEdit will first examine the file's UTI (Uniform Type Identifier) information; and if the UTI does not indicate that the file might be a Zip archive, filtering ends at that point. In some cases, this can lead to files being skipped that are in fact Zip archives, but which don't have conforming UTIs. To solve this problem, you can disable UTI checking:

    defaults write com.barebones.bbedit InspectUTIWhenFilteringZipFiles -bool NO

    Note: Disabling UTI inspection means that BBEdit will always have to open the potential Zip file to inspect its contents. This will slow down batch operations such as multi-file search/replace, text factory application, and file filtering for projects and disk browsers when the directory being processed contains a lot of files that are potentially Zip archives (and not previously determined to be text files).

  • Fixed a bug in the Ruby module which would cause incorrect generation of fold points if an iterator ended with a "trailing if" or "trailing unless", such as:

    a = b.c.select { |d| foo(d) unless d == nil }

  • ctags file discovery will now ignore "tags" files found inside of git and Mercurial repository data directories.

  • Fixed a bug in which the C/etc function scanner would get confused by #defines with comments and character escapes in them.

  • In order to add callouts to a PHP document, you had to use all-caps. For example:

    #MARK these words appear in the function popup

    That's been fixed so that all of the call-out markers can be UPPER CASE, lower case or MiXeD caSE.

    The full set includes: fixme, fix-me, mark, note, nyi, review, todo, to-do, xxx, ??? and !!!. Any of them may have a single, optional colon at the end, before the space and the text to appear in the function popup.

  • Fixed a bug in the PHP callout parser which resulted in the selection range being set one character short of the full callout. (When you choose a callout from the function popup, it selects the text of the callout but was missing the last character.)

  • The "Automatically refresh documents as they change on disk" setting in the Application preference was changing the wrong preference, so it had no effect.

  • Made a change to the improve the chances of the application reloading documents from disk which are being written to multiple times per second by an external process.

  • Put some code in bbedit and bbdiff (and edit/twdiff) to fix a case in which the --wait flag didn't work when the application needed to be launched.

  • Fixed a bug in which double-clicking on an HTML/XML tag edge to select the CDATA contents would incorrectly contract the selection if the BalanceIncludesDelimiters expert preference was turned off (as is the default).

  • Updated the keyword lists for C++ and Objective-C++ to include some previously missing C++11 keywords.

  • Fixed bug in which application state restoration would not properly restore the window grouping of untitled documents.

  • FTP/SFTP browser windows that get opened as part of state restoration will no longer block with the connection sheet in cases where a local SSH public key is found at ~/.ssh/user@host.

  • Added readonly and readwrite to the keyword lists for Objective-C/Objective-C++.

  • Fixed crash (radar 19971151) which would occur when pasting many (more than a few) lines of text into a field in the text factory Replace All options dialog and then dismissing it.

  • Multi-line text in the text factory Replace All options dialog is now normalized so that the line breaks escape to "\r" rather than "\x{0A}".

  • Fixed bug in which the runtime environment for #! scripts run from within the application get set up with an empty variable (both name and value). This in turn broke numpy, so that Python scripts using it would fail when run from within the application.

  • When "Include row headers" and "Include table header" are both turned on, Create Table Shell (Markup -> Tables) will now add an extra <th> container at the beginning of the table header, to preserve alignment between the header columns and the rest of the table.

fin