BBEdit 11.5 Release Notes

BBEdit 11.5 adds a variety of new features, and includes changes to existing features and behaviors as well as 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).


BBEdit 11.5 requires Mac OS X 10.9.5 or later, and is compatible with OS X 10.11 "El Capitan".


  • BBEdit now supports the use of iCloud Drive for sharing application support and setup items. This works similarly to the existing Dropbox support: in your "iCloud Drive" folder, create a folder named "Application Support", and then within that create a folder named "BBEdit". You can populate that folder with the contents of your /Users/USERNAME/Library/Application Support/BBEdit/ folder.

  • BBEdit now supports the use of iCloud Drive for a shared backup folder: in your "iCloud Drive" folder, create a folder named "BBEdit Backups", and if you have turned on Use Historical Backups, BBEdit will use this folder.

  • There's a new settings group in the Appearance preferences: "Sidebar". The controls here determine the default behavior of the files sidebar in editing, project, and Differences windows.

    Note: Using "Save Default Text Window", "Save Default Project Window", or "Save Default Differences Window" sets the default visibility for the sidebar in windows of each respective type; this always overrides the preference.

  • There is a new folder-comparison option in the Find Differences dialog box: "Only compare items in common". When you turn it on, BBEdit will only list items in the results that exist in both of the folders being compared. This option is also available to the scripting interface.

  • There is a new setting in the Text Colors preferences: "Differences". This color setting determines how differences are highlighted in editing views when you select them in a Differences window. (The color for differences within a line is derived from this, by darkening or lightening as needed.) If a custom color scheme does not include a Differences color, BBEdit will use a dark gray or light gray (depending on the scheme's background color) instead.

  • Synchro Scrolling is now enabled (and on by default) for Differences windows: when turned on, scrolling either text view in the window will scroll the other one. Synchro Scrolling can be turned off for Differences windows; and if you would like it to be off for all new Differences windows, turn it off and then choose "Save Default Differences Window" from the Window menu.

  • Things that are highlighted in the text at various times (matches for selected text, Live Search results, spelling errors, and diffs) are now marked in the view's vertical scroll bar. The tick marks indicating matches for selected text may be turned off in the Editing preferences, if desired.

  • The GUI setting for extra space in text views, which was removed in 10.0, has been restored to the Editing preferences.

  • Did you know that you could set BBEdit up to use the Escape key to trigger completions? That's OK, nobody else did either. There's now a setting in the Keyboard preferences to enable this. Note that it works at cross purposes with both Emacs emulation and using the Escape key to exit full screen mode; that is, if you turn on Escape-key completion triggering, the Escape key will only work to trigger a completion, and will not function as either the Emacs meta key nor will it exit full-screen mode.

  • There is a new preference in the Keyboard preferences, subordinate to Emacs emulation: "Enable meta sequences". This is off by default, so that the Escape key is not intercepted and can be used to exit full screen mode when running on OS X 10.10 or later.

    To restore the previous Emacs emulation behavior (in which command sequences beginning with a press of Escape can be used), turn this preference on, at the cost of not being able to use the Escape key to exit full screen mode.

  • Added control to the Editing preferences so that instances of the selected text may be highlighted if desired, rather than underlined.

  • The FTP/SFTP connection panel now has a Path field, so you can see the directory that will be set once the connection is completed.

  • The FTP/SFTP connection sheet now has an explicit field for specifying the port to use, if you want to connect to an alternate server port.

  • The "Insert Folder Listing" command now provides options to control whether the generated listing is hierarchical (the original style), or flat (which lists the full path of every item). The "Include hidden items" option is back after a long absence, as well. These settings are saved, and will apply when dragging a folder in to an editing view as well.

  • When piping data into the bbedit tool, you can now add a line number specifier, and the and the insertion point will be placed at the start of the indicated line in the resulting document. For example:

    ls -la | bbedit +5

  • Added a new command to the Edit menu: Start Speaking. This command will speak the selected text in the document; if there is no selection range it will speak the entire document. If the document is empty, this command is disabled. When speaking is in progress, this command reads "Stop Speaking" and will stop the in-progress speech.

  • Added new command to the Edit menu: "Paste & Match Indentation". When pasting text, this command will attempt to indent it to the same point as the line on which you're pasting (or if that line is empty, the most recent non-empty line). The factory default for this command is Cmd-Opt-Shift-V. You can change the keyboard equivalent using the Menus & Shortcuts preferences.

  • Enabled {Copy, Save} as Styled {Text, HTML} for the edit fields in the Find and Multi-File Search windows, because why not.


  • The internal PCRE library has been updated to the latest "stable" version of PCRE (8.3 plus maintenance updates; see the about box for the exact version). There have been changes to the supported pattern syntax since PCRE 5.x, the previous supported version. Most patterns should work as-is but there is a possibility that patterns that previously worked may require adjustment.

  • Worksheet views no longer have the "sudo" icon in the toolbar, since it is now redundant (since 11.0 you can use sudo in commands as you would in a terminal window).

  • The "Find Differences" dialog box has been reworked.

    The old path controls are dragged to the curb, and have been replaced with edit fields. When you choose a file, its path is entered in to the edit field. You can leave it alone, or make edits to it to choose alternative locations.

    The image to the right of each path shows a file or folder icon if the path refers to an item on disk; if the item indicated by the path does not exist, the image will show an alert icon.

    The image wells are also drop targets: you can drag a file or folder in to specify it. Finally, double-clicking in an image well will reveal the selected item in the Finder.

    The "Compare: ( ) Files ( ) Folders" switch is gone. Find Differences will figure out what you want to do based on the items you provide. (You can only compare a file to a file or a folder to a folder.)

  • The "Enable" popup menu in the Open dialog (for filtering by file type) has been removed. "Show hidden items" now affects file filtering behavior as well as making hidden items visible; when "Show hidden items" is turned on, any file is enabled and may be opened.

  • The Edit and Text menus have been rearranged, as follows:

    • All of the selection commands, except "Select All", are now on a "Select" submenu of the Edit menu.

    • The commands related to line insertion and movement are now on a "Line" submenu of the Edit menu.

    • The "Text Options" and "Printing Options" commands have been combined into a single "Text Options" command, which lets you adjust both sets of options in a single panel.

    • The spelling-related commands from the Text menu are now on a single "Spelling" submenu on the Edit menu.

  • When viewing documents in Differences windows, differences ranges are now always highlighted and can be seen when scrolling through the document.

  • The "Apply to Left" and "Apply to Right" commands (and buttons) no longer pay attention to the selected range(s) of text in the respective documents. Instead, they will apply the difference based on what is reported in the differences list (and highlighted using the Differences color).

  • The "Un/Comment" command has been split into two commands: "Un/Comment Lines" and "Un/Comment Block". The difference is whether commenting is done using the language's line-comment delimiter, or its block-comment delimiters. Thus, you get exactly what you asked for, without any confusion or guessing.

    The one circumstance under which your request is overridden is if you request line comments in a language which doesn't have them (e.g. HTML or XML), or request block comments in a language which doesn't support them (e.g. Perl, CSS). In that situation, the commands will behave identically and apply whichever comment delimiter is available.

    The old PreferLineCommentsWhenCommenting expert preference no longer has any effect.

  • Changed the height of the action bar (at the bottom of the sidebar) so that it lines up with the height of the status bar/scrollbar.

  • The action areas at the bottom of the sidebar in disk browsers, projects, and editing windows now use an appearance that matches the rest of the window adornments.

  • No more grip strips in the action area of the sidebar. (The effective area for dragging the splitter is the same, though, and the cursor will change in just the same way it did before.)

  • Added a preference to the "Sidebar" group in the Appearance preferences: "Show icons". This can be turned off to recover horizontal space or reduce visual load in sidebar lists.

  • Documents with unsaved changes are now indicated in the side bar with a ring around the close widget, rather than by darkening the document icon.

  • Rearranged the folder comparison options in the Find Differences dialog so that more frequently needed ones are at the top of the column, rather than being mixed in with ones that are less likely to be used often.

  • The side bar in document and differences windows is now uniformly referred to as the "Sidebar", as in "Show Sidebar" and "Hide Sidebar".

  • Made some edits to the Appearance preferences to clarify the "show sidebar" defaults.

  • The performance of Zip file filtering has been somewhat improved, and so the InspectUTIWhenFilteringZipFiles expert preference is no longer used. (The Expert Preferences help has been amended accordingly.)

  • Removed the rule between the line number bar and the fold gutter (when both are visible) for a cleaner appearance.

  • The bbedit command-line tool has two new behaviors that affect the use of the --maketags option:

    1. If you set an environment variable named BBEDIT_CTAGS_PATH to be an explicit path to a ctags tool, and an executable file is found there, bbedit --maketags will use it to generate the tags file.

    2. If BBEDIT_CTAGS_PATH is undefined or nonexistent, bbedit --maketags will look in your $PATH for a ctags tool; if one is found, --maketags will use that to generate your tags. (Note: /usr/bin/ctags is specifically excluded, because the default ctags provided with OS X does not generate the correct tags file format or support the necessary options.) In this way, you can install updated versions of ctags on your own (in /usr/local/bin/ or some other location outside of /usr/bin/) and use them in preference to the one provided for you in the application package.

      If no ctags is found in your $PATH, bbedit --maketags will use the version built in to the application package.

  • When right-clicking on a folder in a project sidebar, there is a new group of commands on the contextual menu: "Check Syntax", "Check Links", "Update", and "Update Images". These perform the equivalent of (respectively) "Check Folder Syntax", "Check Folder Links", "Update Folder", and "Update Folder Images".

  • Document state storage no longer reads settings out of file resource forks, nor writes into them. If the UseResourceForkForDocumentState is turned on, the application will use extended file attributes for storing this information instead. (Any document settings stored in legacy resource forks will be ignored.)

  • Made a change so that the application no longer requests user interaction when attempting to resolve a reference to a document's file on disk (which would happen in cases where the document's backing file was deleted).

  • Language modules can now designate certain run kinds as "special" for purposes of balancing. When computing balance points (either while typing or in response to a "Balance" command), these runs are taken into account in a fashion similar to what has been done historically for strings and comments.

  • For language module developers: special balance runs are listed in the module's plist using a new key: BBLMBalanceSpecialRunKinds. This is an array of strings, each of which corresponds to a run kind generated by the module which should be skipped over when balancing (or balanced within, if the initial balancing point is inside of one of these runs). Here is an example for JavaScript:


    In this example, JavaScript regular expressions are designated as a "balance special run kind" so that they don't interfere with the balancing mechanics.

    The following run kinds are treated as special by default, so you should not include them in your BBLMBalanceSpecialRunKinds:


  • Open File by Name will now search Xcode for system framework headers, rather than relying on previous installation of the Xcode command-line tools package (which places framework headers in /System/Library/Frameworks/).

  • It is now possible to use the Escape key to exit full-screen mode (on systems that support that behavior, namely OS X 10.10 and later). Note that in order for this to work, you must turn off both Emacs meta sequence support and Escape-key completion triggering, in the Keyboard preferences.

  • The "Project" section in project windows can now be collapsed in order to maximize available space for the "Currently Open Documents" section.

  • When closing a window containing multiple documents, the "Close documents?" alert will now list the first few documents in the window, to help make an informed decision.

  • When using "Close All Documents" or closing a window containing multiple documents, if any of the documents require saving, you are now prompted to save them as a batch, rather than one at a time.

  • When running a multi-file Replace All, the confirmation dialog now runs as a sheet on the Multi-File Search window, rather than as an application-modal dialog.

  • "Use Selected Text for Find (grep)" and "Use Selected Text for Replace (grep)" will now escape control-character sequences (tab, line breaks, and other unprintables) in the resulting Grep pattern.

  • The horizontal scrollbar in text views is now only visible when it's needed in order to scroll the text horizontally. ("All right, I won't poison your dinner. THIS TIME.")

  • Malformed HTML comments involving unbalanced pairs of dashes will now trigger an error report from the HTML syntax checker. (They're already noticeable by incorrect syntax coloring.)

  • The project site settings do not require a name, so the options panel no longer includes a name field.

  • If you want to hide vendor-prefixed names from the completion list in CSS/SCSS documents, you can now use this expert preference to do it:

    defaults write com.barebones.bbedit CSSExcludeVendorPrefixedCompletions -bool YES

  • The factory default for FullScreenWindowsHogScreen is now on, so that clicking the "enter full screen" button will cause the window to take up the entire display, irrespective of whether it's a good idea to do so. You can hold down the Command key when clicking the "enter full screen" button to have the application make that decision based on the current width of the window; complete details are in the Expert Preferences help.


  • Made a small change to improve performance in the computations for soft wrapping text.

  • Fixed bug in which an empty selection range would be passed to AppleScript filters run from the "Apply Text Filter" command, rather than passing the entire text of the document (which is what should be done, consistent with other filter types and the documentation).

  • Made a change to improve directory scanning and file filtering performance for Find Differences folder comparisons (which also benefits multi-file search/replace and Text Factory application).

  • Fixed a case in which autosaved document data would be lost if the application crashed or was forcibly quit after the restoration of sleep data, but before an auto-save took place.

  • Corrected the error message text for error 13110 ("Export as Text" attempting to overwrite a non-text document type) and added error text for 13109 (font height exceeds text view height).

  • When the differences list has focus in a Differences window, commands on the View -> Text Display submenu will be enabled appropriately and the changes they make will apply to both of the displayed documents.

  • Command-clicking on a delimited URL will now properly handle line breaks (and subsequent white space) that may occur in the middle of the URL.

  • Updated the built-in ctags to 5.8 (the terminal version provided by the developer on SourceForge). Newer versions are available from other sources; installing and using them is left as an exercise for the reader, but as long as they are command-line and file-format compatible with Exuberant Ctags, they may be used in place of the built-in one where desired.

  • When performing a "Process Duplicate Lines" and not using a Grep pattern for matching, empty (zero-length) lines are now treated as equivalent (and thus duplicates) and will be removed if the options so indicate.

  • Fixed bug in which some commands on the Edit menu were inappropriately enabled in Differences windows when the list had keyboard focus, leading to possible unintentional edits (depending on choice of keyboard equivalents).

  • Fixed bug in which the "Flatten hierarchies" option in Find Differences did not actually do anything and so the hierarchies were allowed to remain resolutely unflat.

  • Made a change to reduce overhead when reading in a file during multi-file search or text factory operations.

  • Worked around OS API bug in which named historical backups would fail after changing the primary system language (in the "Language & Region" system preferences) without restarting the computer.

  • Fixed bug in which bbdiff would activate the application, even after no differences were found.

  • Fixed crash which would occur when cancelling a search initiated by bbfind by killing the bbfind command.

  • When using Spaces, BBEdit's modeless dialog boxes (Find, Multi-File Search, and Open File by Name) can appear on any space on which the application is active. This is against recommended best practices, but is more convenient when using Spaces heavily. If you prefer to adhere to best practices and have those windows "stick" to the space that is active, use this command:

    defaults write com.barebones.bbedit ModelessWindowsStickToActiveSpace -bool YES

  • Bookmarks listed in the Setup window will now show the bookmark's URL location as a tooltip when appropriate.

  • Fixed bug in which empty folders in the Clippings directory were not listed as eligible clipping sets for Save as Clipping/Save Selection as Clipping.

  • SFTP file transfers are now done on a background thread, with progress running on the main thread, to improve performance.

  • Made a change so that live matching is done on a background thread and updated when the work is done, rather than tying up the UI in cases where there are so many matches for the selected word that a noticeable amount of time is required to find them.

  • The current function display in the navigation bar will now replace tabs with nonbreaking spaces and collapse multiple runs of spaces to a single space, which improves display of function names in some situations.

  • Fixed bug in which replacements for capture groups in patterns containing lookahead assertions would generate incorrect (or junk) results.

  • Fixed crash which would occur in the C/C++/ObjC/ObjC++ function scanner when encountering certain unbalanced constructs.

  • Fixed bug in which double-clicking in the empty space of a palette backed by folder items (scripts, text filters, etc) would report an error instead of quietly doing nothing.

  • Made a change to correct tab width calculations when drawing non-antialiased text.

  • Live Search now does its work asynchronously, so that intermediate searches in very large documents don't tie up the search box as you type.

  • Restored the pre-10.5 printing mechanics to "Preview in BBEdit" windows. This works around various bugs with pagination and misreporting of page counts caused by the embedded WebKit view.

  • When a document is opened (or closed), all visible listings of it in the project window sidebar are updated with an "x" close widget and the appropriate state as the document is changed and saved.

  • Fixed bug in which the status item in the application-wide Unix Worksheet did not display any command status.

  • Corrected the default initial content for the global Unix Worksheet to remove a confusing reference to the default worksheet stationery, which is only used for worksheets created by File => New => Shell Worksheet.

  • Made a change so that Open File by Name lists recent items after items which are derived from the active project (or other contextual source).

  • Fixed crash which would occur when printing with line numbers turned on.

  • Made a change to improve the performance of Live Search and live-matching operations.

  • Enlarged the "Path:" text area in the File Info popover.

  • Fixed bug in which "Restore Defaults" in the "Menus & Shortcuts" preferences did not also reset hidden menus and items, as it should have.

  • Fixed bug in which turning on "Text Magnification" alone in the Appearance preferences was insufficient to trigger the status bar display.

  • When importing the legacy .bbcolors color scheme format, rgb(...) color values are now correctly converted using 0..65535 as the range, instead of 0..255.

  • Rewrote the logic which tests for reasons why a file might be locked. This should help correct situations in which the application inappropriately reports that files resident on remote server volumes are not unlockable.

  • Single-file "Find All" now takes a code path that avoids the multi-file search mechanics, so it will work as expected on open documents which are not necessarily seen by the system as text files (for example, SVG).

  • Highlighted ranges for "Live Search" matches no longer get cleared when the text view is activated or deactivated.

  • Made significant performance improvements to an internal subsystem used by the markup tools. This should improve the overall performance of some operations in HTML/XML documents, particularly when the documents are very large. (Function scanning, syntax checking, formatting, and other structural operations.)

  • Made a change to reduce the internal memory requirements of a data structure used heavily by the HTML/XML tools subsystems.

  • Fixed bug in which using the "Open in New Window" option from the Open panel would not open an additional window for a document that was already open. The underlying issue would also cause incorrect state restoration in cases where a document was open in multiple windows when the application was quit (or when an automatic state snapshot was made).

  • Fixed bug in which Git menu commands were disabled for items that resided in hybrid git/svn working copies.

  • Corrected some missing terms in the replace AppleScript verb.

  • When opening a document into an explicitly specified window (as when restoring state during startup), if the document was already open in another window, the application will no longer move the document from the other window into the specified window (which might cause the other window to close unexpectedly).

  • Fixed bug in which incorrect time zone calculations were done on the dates of files listed in the FTP/SFTP browser UI.

  • Fixed bug in which item references created when saving an instaproject using "Save Project" were made relative to the instaproject's initial folder, and not to the project document's actual location on disk when saved. This would create confusing and incorrect results when resolving those references on a subsequent reopen of the project.

  • Fixed bug in which the width of a project's sidebar was not restored when opening the project if no other changes had been made and "Save Default Project Window" had previously been used to set up defaults.

  • Separator generation for "MARK:" comment callouts now works correctly in C/C++ and PHP files.

  • "Show Fonts" when a Differences window is in front now does something, and changes in the font panel are applied to both text views.

  • Added some symbols to color as predefined names in C-ish languages. (Mostly stuff from <stdint.h>.)

  • Fixed crash which would occur when an error is returned from running an Automator workflow. (This would actually happen all the time on some OS versions in which the Automator workflow API always returned an error, even when none had occurred.)

  • When wrapping text in a document with "Auto-Expand Tabs" turned on, Hard Wrap will now detab the wrapped text, instead of leaving it indented with tabs.

  • Fixed bug in which tags with name attributes (e.g. map) were not correctly recognized as internal link targets.

  • Made a change so that scripted Replace All (and Find) operations on single documents are routed directly to the document's text, rather than through the Multi-File Search mechanics, which will increase performance and reduce UI churn caused by progress windows coming and going.

  • Added "finally" to the PHP keyword list.

  • Fixed bug in which (usually) instaprojects opened with settings from "Saved Default Project Window" in effect would have some misalignment in the side bar.

  • Modernized the "Insert Emacs Variable Block" sheet.

  • Rewrote the panel used for confirming saves when doing multi-file Replace All or text factory operations.

  • Fixed bug in the "New HTML Document", project site settings, and Text Options panels in which dragging off a popup menu's button without selecting anything from it would cause it to select the first item in the menu.

  • Made a change to Perforce configuration detection so that a .p4config file in the ancestry of a given document will take precedence over any environment variables that may exist (and possibly conflict).

  • The hierarchical HTML formatters (Pretty Print and Strict Hierarchical) no longer enforce strict containment rules, which allows them to generate better results when given HTML code that is invalid due to containment mistakes but is otherwise well formed. This change also addresses inconsistencies in indentation between self-closed XML-style tags (e.g. "<img />") and inline tags which are implicitly closed (e.g. <img>).

  • Fixed bug in which tags with "protected" content (script, style, pre, textarea) did not have line breaks placed after the closing tag when using "Pretty Print" markup source formatting.

  • Fixed cases in which list items that should have been drawn in the italicized system font were not, on 10.10 and later. This affects applied differences, aliases in disk browser, and the "empty line" items in the Jump Points and other navigation palettes.

  • Corrected formatting of <nav> tags in the Pretty Print format option.

  • When using the "Pretty Print" and "Strict Hierarchical" the markup formatter will now behave more reasonably with <script> and <style> tags, including indenting their content to an appropriate level.

  • Updated the Objective-C/Objective-C++ keyword lists to add __kindof, nullable, _Nullable, _Nonnull, _Null_unspecified, and a few others.

  • Fixed a bug in which "Pretty Print" and "Strict Hierarchical" markup formatting would generate unwanted extra line breaks after containers in some situations.

  • Adjusted the YAML module so that completions may be generated from symbols in the file in which you're typing.

  • When Page Up and Page Down are allowed to move the insertion point, they now behave consistently with using Option-Up/Down Arrow for the same purpose.

  • Made a change to improve performance when highlighting (or clearing highlighting of) large quantities of matches for live-matched selections or Live Search results.

  • Made changes to improve performance when working in windows containing large numbers of documents.

  • Fixed bug in which displaying a bezel alert ("wrap around", "not found", etc) as the result of an operation that also dismissed the Find window would leave the front document window in an inactive state.

  • Made some changes to improve behavior when changing display geometry, either by adjusting the resolution of a single display, or by adding/removing displays.

  • Added support for the HTML 5 <main>, <dialog> and <menuitem> tags for markup generation and syntax checking.

  • Corrected the computation for deciding whether to use a contrast-enhanced I-beam cursor on text views with dark backgrounds.

  • Fixed a case in which the "Include" or "Persistent Include" markup commands would fail to generate a relative path when the directory containing the include file was an ancestor of the document, and came from a location that was referenced in the project but was not an ancestor of the directory containing the document.

  • Fixed bug in which XML tags beginning with non-ASCII characters weren't colored as they should have been.