BBEdit 8.5.1 Release Notes

This page documents all feature enhancements and bug fixes included in the BBEdit 8.5.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).


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.


  • There are two new placeholders supported by the Clippings and HTML Updater systems:


    These will produce a localized, region aware date in the format XXX, where XXX is an ICU format string (used by Mac OS X for date formatting). Please refer to the ICU documentation for full details:

    Here are two examples:

    	#DATETIME yyyy-MM-dd HH:mm:ss.SSS#
    	#DATETIME_GMT yyyy-MM-dd HH:mm:ss.SSS#
  • Added “Collapse All Folds” to the View menu, above “Expand All Folds”. Choosing this command collapses all of the top-level fold ranges that appear in the fold gutter (but not any fold ranges they contain).

  • The CSS function scanner supports the new mark syntax:

    	/* #mark MARK_STRING */

    The old syntax is still supported for backwards compatibility.

  • The new mark syntax supported by the HTML language module is:

    	<!-- #mark MARKSTRING -->

    The old syntax is still supported for backwards compatibility.

  • In file group windows, the “Paste” command is enabled when there’s a “named URL” flavor on the clipboard. (An example of one way to get this is to use “Copy Link” in Safari.) When you paste, an item is created in the file group using the URL’s name from the clipboard.

  • Shell Worksheet windows get a navigation bar. It only has the Marker and Counterpart controls on it, but at least you can get to the markers in your shell worksheets, if you previously used them.

  • External scripts referenced in HTML now show up in the includes popup in the navigation bar.

    	<script type="text/javascript" src="/js/menus.hs" />

  • Added clippings for Microformats to the default HTML clippings set.

  • Added clippings for the Prototype Library’s “Elements” class to the default JavaScript clippings set.

  • Expanded the RHTML clippings set.

  • Expanded the Ruby clippings set.

  • The JavaScript function scanner now displays full function names in the function popup, not just the last portion (so for example, you’ll see “foo[ bar ]” instead of just “xyz”).

  • The JavaScript language module generates fold ranges for any brace-delimited block that has at least N lines, where N is a preference settable from the command line. For example, to set the minimum number of lines at 4:

    	defaults write com.barebones.bbedit LanguageSpecific:MinimumLinesForBlockFold:JavaScript 4
  • Blocks in JavaScript files are now listed in the function popup, if they are assigned to anything that can be displayed as a name.

  • The Javascript language module now supports “//#mark foo” for setting “manual” marks in the function popup, where foo is everything to the end of the line.

    If foo (whatever comes after mark) is a single hyphen, then a horizontal separator is added to the function popup:

    	//#mark -
  • The JavaScript language module now marks Objects in the function popup to differentiate them from regular functions. (Uses a custom character.)

  • The JavaScript language module now detects objects defined using the “Prototype style” (as demonstrated in the Prototype library).


  • URLs in file groups will display the icon of the application in which they will open if you double-click on them. FTP, SFTP and other URLs that BBEdit handles internally will show the generic “Internet link” icon.
  • The Preferences window now remembers the state of the search drawer; if the drawer was open when you closed the Preferences window, the drawer will open the next time you open the Preferences window.
  • “Balance&Fold” now ignores the “Include delimiter characters when balancing” preference and always leaves the delimiters visible.
  • Renamed “JavaScript Clippings.js” to “JavaScript.js” for consistency with other factory clippings sets.


The following problems have been corrected in BBEdit 8.5.1:

  • Terminology change: “Tool Bar” -> “Toolbar”

  • Fixed a bug in which fold ranges weren’t generated for JSP files.

  • Fixed a display update glitch.

  • Fixed a rewrap problem associated with soft-wrapped indentation.

  • PHP keyword updates, thanks as always to Carsten Blüm

  • Fixed a bug where the line bar wouldn’t update correctly in certain situations (related to a specific kind of edit, using hard line numbers and soft-wrap indenting.)

  • the “Secret Preferences” and “Where Did It Go?” sections of the help have been updated with new information.

  • Fixed crash which would occur when doing “Copy Path” or “Copy Full Path” on a document not on disk (e.g. an untitled window).

  • Updated the Worksheet stationery so the multi-line example is relevant, and the path to remove the default stationery is accurate

  • Fixed crash which would occur when trying to do a Switch to Counterpart and a relative path string was encountered. (NB: Relative paths are currently ignored when doing counterpart searches; you should be able to achieve the desired effect by adding a folder to the File Search list.)

  • Fixed bug in which trying to run a text factory which included a “Tidy: Convert to XHTML” or “Tidy: Convert to XML” action would report a 13705 error.

  • Fixed a bug where the Tidy Check Accessibility command wasn’t present in the menu keys list.

  • Fixed a bug where pasting into a file, which triggers auto-guess, could inadvertently restore all the per language options for “(none)” overriding those which had just been manually set (like “Check Spelling as You Type”).

  • “Check Spelling As You Type” is now off by default for new documents (and documents without saved state). (It may still be turned on in existing preferences; see the Editor Defaults prefs panel to verify the current setting.) Note that you can set this preference on a per-language basis as desired; see the language list in the Languages preferences.

  • Fixed a bug in which the “Passive FTP” option from FTP browsers was not passed through properly when opening files.

  • Added a confirmation sheet for the “Reset All” button in the Languages preferences.

  • Check Spelling As You Type is now implemented literally. That is, (like the Cocoa Text System) we check a word after you finish typing it (if it is eligible) or after the cursor has moved into, then out of, a word.

    The idle timer which checked bigger swatchs of the document is gone. This provides a better user experience (it won’t check portions of the document you didn’t type, like paths in a checkin list) and eliminates the performance problems associated with the timer.

  • “Open in Separate Window” no longer loses the fold ranges or misspelled word ranges.

  • Fixed a problem in the clipping expander which prevented escaped placeholders from working correctly. (This is useful in the case that you want to generate a clipping set to produce other clipping sets.)

  • The four HTML updater placeholders for the date now map onto the 4 levels of verbosity as specified in the Date Formats section of the International system preferences and support all locales/regions.

    #ABBREVDATE# - long
    #COMPDATE# - medium
    #LONGDATE# - full
    #SHORTDATE# - short

  • Fixed a bug where the insert clipping panel didn’t scroll the match into view in autocomplete mode.

  • added a sort to normalize the order of files returned by the OS in the “Insert File Contents” sheet.

  • Fixed a bug where the Ruby Errors window was incorrectly named.

  • Fixed a bug in the mouse tracking of custom controls which resulted in tracking ending immediately and the action being perform if tracking started with a button other than the primary button.

  • Tuned up the menubar icons.

  • Fixed a bug in the PHP function scanner which would cause the scanner to bail when it hit a construct consisting solely of an empty pair of braces:

    	function foo() {}
    	class	bar {}
  • The SQL language module’s guessing is now dramatically faster; this should resolve some of the observed performance problems when opening and saving certain files.

  • The PL/SQL keyword list has been greatly expanded.

  • The Generic (ANSI) SQL keyword list has been greatly expanded.

  • Fixed the infinite loop in the YAML module caused by some uses of the vertical pipe ‘|’ (because Macs only need 1 Infinite Loop)

  • Fixed a bug in the YAML language module’s function and fold scanning which sometimes caused the fold/function to end in strange places

  • Fixed bug in which the Tidy transformations didn’t pass through the open document’s spaces-per-tab setting, so you’d get back output from Tidy with no indentation. (When running Tidy conversions from a text factory, indentation is hardwired to four spaces per tab.)

  • “Print pull pathname”? Oy.

  • Fixed bug in which the build permissions for some components of the application package were incorrect, so you’d get -50 errors when trying to invoke some commands.

  • fixed a pair of bugs that conspired to prevent BBEdit from finding previously extant FTP/SFTP passwords in the keychain.

  • The Find dialog now uses small scrollbars to avoid stupid puppy ear when the scrollbar is activated.

  • Fixed a bug in the Ruby syntax colorizer that would cause it to hang if it was scanning Ruby embedded in HTML at the end of the file and the last character was ‘%’ (often as a result of typing it).

  • Fixed (further) a bug in the Perl syntax colorizer related to inner POD handling that would lead to “run list” corruption which would in turn lead to SPODs.

  • Fixed the problem with multiple entries for functions in HTML files that have more than one JavaScript tag element (each function was listed once for each <script> tag in the HTML).

  • Fixed bug in which soft-wrapping settings were not accessible in the language-specific preferences.

  • Strings in JavaScript source files can be multiline if the line ends with a backslash (escape).

  • Fixed an off by one bug in generated the selection range for a <!— #bbmark SYMBOL —> when the symbol had trailing whitespace.

  • If an auto-fold range is already part of a manual fold range, the fold indicators are suppressed from the gutter.

  • FTP browsers will now simulate a click of the “Disconnect” button if a periodic ping of the server returns an error (which will happen if the server decides that our story has become tiresome). The period of the ping can be controlled from the command line as follows:

    defaults write com.barebones.bbedit FTP:PingInterval 45

    The number is in seconds. The factory default is 45 seconds; if you are having problems then adjusting the interval may help (but under no circumstances will BBEdit allow an interval less than 5 seconds, because that’s just rude).

  • The JavaScript language module is now much more conservative about detecting regular expressions.

  • Fixed a bug where go to line in a document with folds would sometimes go to the wrong line.

  • Worked around an OS bug/behavior on 10.3.9 which caused improper functioning of the accessibility APIs used by things like UI Scripting, DragThing and Keyboard Maestro to interrogate BBEdit.

  • Zooming the preview window will zoom to the ideal size of the content (when possible, and subject to a reasonable minimum size.)

  • Fixed the case of “Resource fork” in the Hex Dump dialog.

  • Fixed a bug where “New with selection” and “New with clipboard” created the window with 1 state (undo scripting) on the undo stack.

  • Fixed a bug where passing certain arguments of the form filename:<line_number> to the bbedit tool resulted in it reporting an error about unsupported URL scheme.

  • Progress dialogs used by batch HTML operations now display long/unicode filenames.

  • Tweaked the Ruby function scanner to make it a little more robust.

  • Restored the previous behavior of allowing “Prefix/Suffix Lines” to operate on a single selected line.

  • “Un/Comment Selection” works once again with empty selections in non-HTML documents.

  • Fixed a bug which caused “can’t undo” alerts to be presented for some plug-ins when they shouldn’t have been.

  • Fixed a bug where indented soft-wrapped lines were indented with the wrong value.

  • Fixed a bug where changing the tab width didn’t recalculate soft-wrap indented lines.

  • Fixed a third code path where “New (with Clipboard)” would leave items on the undo stack in the new text document.

  • Fixed a bug where “Copy Name” didn’t work in results browsers or disk browsers.

  • Fixed a bug in which long URLs were displayed garbled in file group lists.

  • Tweaked the camel-case word-left/right code again to treat runs of digits as separate (as Xcode apparently does).

  • Fixed crash which would occur in some situations when trying to use the CSS markup dialogs with malformed CSS “rect(…)” selector values.

  • Fixed bug in which the TeX language module wouldn’t color math mode strings, even if the appropriate preference was turned on.