BBEdit 11.6 Release Notes

BBEdit 11.6 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.6 requires Mac OS X 10.9.5 or later, and is compatible with macOS 10.12 "Sierra".


  • BBEdit 11.6 introduces a new demo model in which its complete feature set is available for the first 30 days of use.

    At the end of the 30-day evaluation period, BBEdit will remain permanently functional with a revised feature set that includes its powerful text editing capabilities but not its web authoring tools or other exclusive features. BBEdit's exclusive features may be re-enabled at any time with a purchased license.

    When the product is unlicensed, menu commands corresponding to these features are badged with a "Demo" icon.

  • The file info panel (used for text statistics and the Document Status navigation bar item) gets a new "location" field showing the URL to the file, and "Copy" buttons for the full path and the location.

  • Clicking on the cursor position display in the status bar now opens a popover that you can use to go to another line. (The popover stays up until you click outside of it or press the Escape key, allowing you to browse the file by line number.)

  • Added "New Text Window" to the application dock menu. This is equivalent to the "New Text Window" command in the menu bar.

  • By default, the Open panel implements the standard system behavior of displaying the same folder that was viewed the last time you used the Open command. If you wish, you may instead have the Open panel display the directory containing the active document (or some other location apposite to the front window):

    defaults write com.barebones.bbedit OpenPanelShowsFrontDocumentDirectory -bool YES

    If no documents are open and a suitable location could not otherwise be determined, the Open panel will show you the last-used directory.

  • Added x-show-tab-stops as an application-specific EditorConfig key. (Answer for @pborenstein: "not too hard.")

  • Open File by Name, disk browsers, instaprojects, and the Counterparts navigation bar item will now filter out files that are in Git repositories and match .gitignore file rules. (In disk browsers and instaprojects, the "Everything" filter item will make such files visible again.)

  • Folder scanning used in multi-file search/replace/text factory operation, Find Differences, and site deployment will now skip over files that match rules specified in .gitignore files, in cases where the directory being scanned is (or is inside of) a Git working copy.

  • There is a new command-line tool: bbresults. This tool reads data from stdin which is expected to be typically formed Unix error messages. This data is then used to create a BBEdit results window which provides navigation of errors and warnings within BBEdit itself.

    For example:

    proselint --demo | bbresults (you can learn more about proselint here.)


    flake8 | bbresults --pattern flake8

    or even

    grep -n void *.c | bbresults

    Complete information on how to employ bbresults is provided in its man page. Choose "Install Command Line Tools" to install the tool and man page.

  • BBEdit now has built-in support for Kite.

  • The application now lets the system know that it is able to handle the old editor:// URL scheme, which has been supported for many years but not previously advertised.

  • Added a new command to the Lines submenu on the Edit menu: "Duplicate". This will duplicate the lines which intersect the current selection range.

  • Added Toothpaste as a factory-supplied color scheme. Toothpaste was designed by Cat Noone and is included with her kind permission.

  • Added credit for Toothpaste to the About box.

  • "Find Differences" gets two new options in the dialog box: "Ignore blank lines" and an "All" option in the "Ignore spaces" group. These operate as you might imagine: "Ignore blank lines" skips differences that consist entirely of blank lines, and turning on "All" causes all whitespace to be ignored during comparison.

  • The difference window AppleScript class now has a compare options property. You can use this to query or manipulate the options that are applied when comparing files in that window. Changes to the options will take effect immediately.

  • The Editing preferences have been rearranged slightly; there is a new setting to control whether spelling errors appear as tick marks in the scroll bar, and it is collected with the previous setting that controls whether matches for the selected text appear as tick marks in the scroll bar.

  • Added support for the C binary notation to the C-family language syntax coloring.

  • Added support for Github-style fenced codeblocks to the Markdown module. At this point, we simply recognize them as a codeblock for purposes of code folding and syntax coloring. No additional syntax coloring is done in the language of the fenced code.


  • Updated the internal Markdown previewing script to convert github-style fenced codeblocks into Markdown's traditional code block output. Thus this:

    while (pnoies) {
        alert("glitter and rainbows!");

    will preview as this:

    <pre><code>while (pnoies) {
    alert("glitter and rainbows!");

  • Custom keyword files (those that live in Application Support/BBEdit/Custom Keywords) can now use an Emacs mode line to specify their language. This addresses the case in which you want to supply keywords for a language that doesn't have any filename extension mappings. For example. ".php" maps to "PHP in HTML", which means that embedded PHP keywords need to be in a keywords file that maps to the "PHP" language. Such a keyword file would look like this:

    -*- mode: php; -*- keyword_one keyword_two ...etc...

    Emacs mode lines and blank lines in the keyword file will be ignored.

  • When an untitled document is active in a window, the window's entry in the Window menu will be annotated with some text derived from the beginning of the document's contents.


  • The following changes have been made to the editing view structure:

    1. The toolbar has been, uh, sent to live on a farm upstate.

      The document icon is now on the right-hand end of the navigation bar and behaves as before when clicked.

      The Text Options icon is now at the left side of the navigation bar.

    2. The text used to draw items in the navigation bar, status bar, and line number bar has been desaturated a bit.

    3. The "current document" navigation bar item now shows the document's name followed by as much of the document's parent path as possible. Clicking anywhere on it will open the menu that lets you switch to other documents, as before.

    4. The document navigation arrows have been retired. "Previous Document" and "Next Document" on the View menu still work as before.

    5. The Current function/function menu has been moved to the right-hand side of the navigation bar.

    6. The overall appearance of the navigation and status bars has been cleaned up quite a bit.

  • The Appearance preferences have been adjusted to account for the changes in the navigation/tool/status bar structure.

  • Cheated some space from the Cursor Position status bar item, in order to make more room in the status bar. The "Line" and "Col" indicators are now "L:" and "C:", respectively.

  • Removed the "Tool bar" option from the Text Options sheet.

  • The sidebar close widgets for modified documents now show a darkened "x" in the center as well as a ring around the outside.

  • Differences windows now show document paths in the navigation bar, just like the other windows, and thus no longer have a toolbar.

  • Reduced the navigation bar items in Differences window text views to just the essentials.

  • The action menu at the bottom of the sidebar duplicates everything from the contextual menu, and its icon caused confusion with the new Text Options item icon, so it's gone now.

  • Rewrote the Subversion working-copy dialogs to use a text field for the path, as is done in Find Differences. Good-bye, NSPathControl, and don't forget to write.

  • Compiled language modules should be updated to be line-ending agnostic; BBLMInterface.h includes a new function: BBLMCharacterIsLineBreak, which may be used to assist in transition. Codeless language modules are unaffected by this change.

  • The "Classic Mac (CR)" line ending type is now described as "Legacy Mac OS (CR)" in the UI.

  • Operations that select a line (such as providing a line number to the command-line tool, or Open Selection with a file:line specification) will now place the insertion point at the beginning of the indicated line, rather than selecting the entire line.

  • Rewrote the "Info" sheet in FTP browsers to eliminate some legacy code. Operation is as before, but the Permissions options are arranged a little more rationally and have "Save" and "Revert" buttons.

  • Changed the behavior of the "New text document" setting in the Application preferences so that a new document gets created when activating the application only when no other text documents are open. (If other windows are open when the application is brought to the foreground while already running, no new document gets created.)

  • The scratchpad window and Unix worksheet window application properties have been changed; they are now scratchpad document and Unix worksheet document, and are returned as document references instead of windows.

  • Fixed bug in which accessing the scratchpad document and Unix worksheet document application properties via the scripting interface would open their associated windows.

  • If flake8 is installed (which you can do using pip install flake8, see the pip website for more details), "Check Syntax" for Python scripts will use it instead, since it provides better diagnostics overall.

  • Made a change so that files processed during multi-file operations are processed in order by name, which may differ from the order in which the file system provides them.

  • Made a change to improve file filtering performance in the Open panel when many documents are open.

  • Retired the internal "68K Assembler" language module.

  • BBEdit now uses the line feed (ASCII decimal 10) as line breaks in its internal representation for text in open documents, instead of the carriage return (ASCII decimal 13) that was the standard Mac format for many years. This (theoretically) reduces the time required to open documents, since in the normal case, no conversion is necessary; it also eliminates conversion logic when copying and pasting text, since LF-delimited text is also the standard interchange format on the Clipboard.

    As before, you may use \n and \r interchangeably in search strings and Grep patterns. (The latter usage is for compatibility with old versions of BBEdit.)

  • The built-in ctags and readtags tools are now built from a fork of Universal Ctags, which includes various additions and improvements to ctags generation and language support. (Note: There are some regressions in Objective-C/C++ support; see here for details.)

  • The "Hex Dump Front Document" command no longer provides a (confusing) choice of whether to dump the document's contents or its file on disk. The command will always dump the contents of the document, and now provides control over which encoding to use when interpreting the document's contents.

  • The "Hex Dump File" dialog no longer uses that awful path control.

  • Since Unix line breaks are now the norm, the -u/--create-unix options to bbedit are now treated the same as -c/--create, and will write out an empty file. The man page has been updated to reflect this.

  • Made a change so that Option-clicking in the close box of a window behaves as though you had pressed Command-Option-W to close all of whatever is appropriate. In practical terms, this means that it's more like "Close All Documents" when a document window is in front, which is more useful since it won't prompt you to close each multi-document window with a sheet.

  • Fold ranges in Markdown documents now include blank lines at the end of the range.

  • You can now turn Perforce support off simply by hiding the menu in the Menus & Shortcuts preferences, as was possible before with Git and Subversion support.

  • Moved the "License" command further down the application menu.


  • Made a change to delay populating folder-backed menus (such as the Clippings menu) until absolutely necessary in order to reduce delays triggered when opening many windows at once and/or with a very large number of clippings (or other items a folder-backed menu, such as scripts or filters).

  • Made a collection of changes to improve startup performance and application responsiveness when dealing with initial loads of very large folder-backed menus (especially clippings).

  • Fixed bug in which a source control commit window would be silently confirmed if the application was quit while it was open. Now, the window will be discarded if no changes were made to the commit message; otherwise it will prompt for a decision.

  • "Save Default Window" is now disabled for singleton windows (Find, Multi-File Search, and others) rather than being enabled and showing the wrong title.

  • Fixed cosmetic glitch in results windows, along the boundary between the splitter and the text view.

  • Made some changes to improve drop-site feedback in the fields of the Find Differences window. (They frequently won't highlight correctly due to a system limitation that will not be remedied immediately.)

  • Finder data storage files (".DS_Store") are now disabled in the Open panel, even if "Show hidden items" is turned on.

  • #bbpragma encoding and #bbpragma root_element directives are now ignored or generate a warning in situations where they could occur in well-formed documents as a result of processing by the site updater. (Warnings are only generated when the value specified by the directive is inconsistent with the setting already established for the document.)

  • The language guesser for Python will now recognize shebang lines that specify python3.

  • Fixed a crash which would occur while performing certain Perforce operations which involved both progress dialogs and revision picker panels.

  • Made a change to reduce the incidence of stale Perforce status when "p4 login" and "p4 logout" are used outside of the application.

  • Fixed crash which could occur when a background operation (such as highlighting matches of the selected text) was interrupted by a replacement of the backing store (Replace All, Revert, reload from disk, etc).

  • Made a change so that file enumeration when searching projects and evaluating Open File By Name results does not omit items when the starting point is itself an invisible directory.

  • Quieted a runtime warning when using the Save As panel to save a text document.

  • Conditionalized the workaround for Radar 16742697, which has been fixed for $FUTURE_OS_VERSION.

  • Fixed bug in which Objective-C/C++ specific keywords were inappropriately used in C/C++ documents.

  • Made a change so that using a language-specific color scheme (other than "Application Defaults") no longer fills the preferences with language-specific color settings; and at the same time fixed a bug which would cause some color settings to be incorrectly applied when using a language-specific color scheme.

  • Fixed bug in which the UTF-8 factory default encoding for new documents was not applied when it should have been.

  • Fixed bug in which a document's contents would briefly jump to the top after a "Replace All" operation.

  • Fixed a couple of cases in which documents would open or reload and briefly display at the top of the document before scrolling to the appropriate position.

  • Made a change to fix a crash which would occur when opening the file info popover on 10.11.4 when the Dock was positioned on the right side of the display.

  • Fixed a case in which saving a new document would cause its tab width to change to the default setting, which was a problem when the document's width had previously been changed to something else.

  • Fixed bug in which custom highlight colors specified by color schemes were not correctly applied when starting the application.

  • Fixed regression in which saving a file with "Strip trailing whitespace" turned on would unfold ranges of text in the entire document.

  • Made the line-number column in the Markers and Functions palettes fixed width, to eliminate confusing behavior when resizing the window.

  • Fixed crash which would occur when making changes to FTP/SFTP bookmarks and one or more of the stored bookmarks had a corrupted URL string.

  • If /dev/null is passed as an argument to bbdiff, it will now exit normally (and quietly), rather than reporting a -36 error.

  • Fixed bug in which certain operations would cause the selection range to drift.

  • The old preference for hiding palettes when a Differences window is active is honored again.

  • Corrected escaping of line breaks in the Text Factory "Replace All" options sheet.

  • Worked around a pathological behavior in the OS which would cause the file info popover to take minutes to appear in some situations (in particular, when Active Directory services are in use).

  • Fixed a bug in which canceling a multi-file search/replace or Text Factory operation would leave some internal bookkeeping undone; after enough uptime this would cause future operations to stall while waiting for a condition which would never be satisfied.

  • Fixed a bug in which the HTML function scanner would generate function menu items with empty names for headings in some situations; this in turn triggered a bug which would cause a crash when the Current Function display needed to display that item in the navigation bar.

  • Made a fix so that high-frequency changes to progress status from background threads no longer cause drawing glitches in the progress panel.

  • Fixed a bug in the AppleScript internals in which whose tests for certain value types would occasionally fail for reasons that were not immediately evident to the observer.

  • The Markdown module will no longer add fold points for 1-character fold ranges. For example, a #headline will not have a fold point if the very next line is another headline (as that fold would only hide the line break).

  • Fixed bug in which the Comments panel in text factories didn't let you remove a comment (by setting it to an empty value).

  • When generating markup from the Markup Builder panel, attribute values now have leading and trailing whitespace and line breaks trimmed before insertion.

  • Fixed bug in which Option-clicking to move the insertion point would frequently leave behind a stale line highlight.

  • Added robots to the list of values allowed for the name attribute of <meta>.

  • Made a change to improve file filtering performance, particularly in the Open dialog.

  • Made a change so that Emacs-style backups (foo.txt~) no longer appear in folder-backed menus (Scripts, Text Filters, etc) when there's a non-backup file in the same location.

  • Fixed bug in which making changes to a folder being observed by a palette (Scripts, Clippings, Text Filters, etc) would cause any expanded items in the palette to collapse.

  • Fixed bug which allowed project collections to be dragged into the Currently Open Documents area. No good ever came from such a thing.

  • Fixed drawing glitches when highlighting project collection items while dragging; and updated the colors to something a little more visible.

  • Drop highlighting for project collection items now includes the whole row, because it looks better that way.

  • Made some changes to improve internal performance during regular-expression capture.

  • The application no longer promises UTF-16 text to the Clipboard, which improves copy/paste compatibility with Microsoft Office.

  • Fixed a bug in which the "Extract" command in the Find window didn't respect the "Selected text only" option.

  • Made a change to increase the reliability of reloading changes to a document's backing file when they're made at high frequency (intervals less than the time resolution of the file system) or made by an attached documentDidSave script.

  • The differences list (in Differences windows) now always uses the small system font, and ignores the List Display Font preference. This works around bugs when trying to italicize the font on some OS versions.

  • If a documentDidSave attachment script exists and is run, we will now manually verify the disk file after saving, in case the script changed it. This works around problems in which we don't receive file system notifications when the script runs.

  • Made a change so that Emacs-style backup files are omitted from Switch to Counterpart and the Counterparts menu when appropriate.

  • Fixed bug in which character escapes in non-Grep search strings were not properly unwound when doing a single-file "Find All" or "Extract".

  • Fixed a case in which the Open File by Name window was doing more work than it needed to when it was activated, which would lead to delays.

  • When performing an interactive Process Duplicate Lines, the "Process" button is now disabled if you select both "Unique lines to clipboard" and "Duplicate lines to clipboard", since you can't do both.

  • Fixed bug in which language-specific preference overrides were not applied to Git and Perforce commit windows.

  • Fixed cases in which files chosen from the Includes navigation bar menu weren't found and opened as they should have been.

  • Made a change so that the check for "is a file controlled by Perforce" will time out when necessary, rather than stall the application forever.

  • When tcsh is the user's shell, we now run it as a login shell when collecting environment data for Perforce operations and in other situations. (This may fix hangs with Perforce operations when tcsh is in use.)

  • Added Git commands to the contextual menu in results lists.

  • Fixed a hang which could occasionally and randomly occur while waiting for a response from certain forked Unix processes.

  • Fixed bug in which certain characters in search and replace strings would cause unexpected drawing effects in the Find window's search history menu; these characters are now hex-escaped.

  • Non-printable characters in the "Latin-1 Supplement" range (0x80-0x9F) are now escaped in search strings.

  • Fixed bug in which forced changes to UTF-8 while saving did not correctly update the text encoding setting display in the status area.

  • When turning source control support on or off by hiding or showing the appropriate menus, the application now updates its internal state correctly.

  • Full-path truncation in printed page headers now uses a little more intelligence, to make better use of the available space.

  • Condensed the page count in printed page headers, to make a little more room available for the full path (if used).

  • Fixed bug in the Markup Builder panel in which choosing items from the popup menu for "href" and some other attributes would not correctly update the value in the edit field, although the change had been made.

  • The path truncation used for menu items (Open Recent, windows) and other appropriate locations is now somewhat smarter, so that useful information is now retained in situations where it wasn't before.

  • Fixed a bug when auto-recovery data wasn't cleared when using Revert or Undo to discard changes to an open document; this would lead to the previously autosaved contents being restored at the next startup.

  • Fixed bug in which bbedit --launch did not bring the application to the foreground when it was already running.

  • Fixed a bug in which the highlight color was incorrect after selecting a color scheme in some circumstances.

  • Fixed crash which would occur while typing certain URLs into the Open File By Name search box.

  • If the page guide contrast (which also affects the contrast of tab stop lines) is set to zero, don't spend time drawing invisible tab stop lines.

  • The Guide Contrast setting is now range-limited, so that using the minimum setting no longer renders tab stops and the page guide invisible when those display options are enabled.

  • Fixed bug in which certain malformations in a language module's plist would cause the application to crash; and other errors in construction would cause the language module to fail silently. Validation has been extended to log these conditions and prevent the module from loading.

  • The internal PCRE library has been updated to 8.40 (current as of this writing).

  • Fixed crash which would occur while parsing fragmentary #include or #import statements in C-family languages.