BBEdit 12.1 Release Notes

BBEdit 12.1 contains significant feature additions, as well as refinements to existing features and fixes for reported issues.

For details on all the new features and enhancements available in BBEdit 12, 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 12.1 requires Mac OS X 10.11.6 or later, and is compatible with macOS 10.13 "High Sierra".

If you are using macOS 10.13 "High Sierra", please make sure that you have updated to the latest available OS version (10.13.3 or later).


  • Beginning with this version, you can open documents that are much larger than was previously possible. In the Before Time, documents whose in-memory size (about twice the on-disk size) exceeded roughly 1.5GB would fail to open and report an out-of-memory error, as would documents whose internal structure required generation of large quantities of syntax coloring and/or code folding information (such as complicated XML documents).

  • Beginning with this version, you can perform many large-scale operations on very large files without running out of memory or needing to clear Undo state.

  • BBEdit is now built as a 64-bit application. This works around various reported bugs in the OS and has other beneficial side effects: the application starts more quickly on a "cold" launch; 64-bit color pickers and contextual-menu plug-ins are now available; and our customers are even more attractive and athletic than before.

  • Support for the Touch Bar has been added to various windows (applicable only to computers that have a Touch Bar, of course):

    • FTP/SFTP browser windows: "go up", "go down" (into selected folder), and "reload".

    • Text Factory windows: add/remove actions and run the factory.

    • "Preview in BBEdit" windows: for items in the tool bar.

    • Editing windows: toggle the sidebar and previous/next document navigation.

  • "Go To Line" (either the menu command or the popover from the cursor position display) supports the specification of line ranges, in addition to just a single line and column. For example, entering one of these forms into the field will behave as follows:

    Xmoves the insertion point to the beginning of line X
    X:Cmoves the insertion point to column C of line X
    X-Yselects the text from the beginning of line X to the end of line Y (including the line break at the end of the line).
    X:C-Yselects the text from column C on line X to the end of line Y(including the line break at the end of the line).
    X:C-Y:C2selects the text from column C on line X to column C2 on line Y.

    In this way, you can use "Go to Line" to select ranges of text based on line and column number.

  • "Preview in BBEdit" windows get a new item in their tool bar: "Open in Browser", which will preview the document's contents in the most recently used preview browser (or your system's default web browser, if applicable).

  • For language module developers: modules can now generate a new run kind (or use it as an available color for keywords): com.barebones.bblm.syntax-error. This is for use as its name suggests, in the case where the color scanner detects something incorrect while examining the document. The color preferences and built-in color schemes have been updated to include this.


  • When the “Match window appearance to selected editor color scheme” setting is turned on (as it is by default), BBEdit will use a light or dark (system-defined) appearance for the window title bar, appropriate to the color scheme. If you would prefer that BBEdit always use the system standard (light) appearance, set this preference:

    defaults write com.barebones.bbedit AlwaysUseSystemAppearanceForTitleBar -bool YES

    Note that changes to this setting will take effect the next time you start BBEdit.

  • Made a change to significantly improve performance when soft-wrapping long documents to the window width. (The benefit is only available when a fixed-width font is in use.)

  • Removed "Show" from the "Scratchpad" and "Unix Worksheet" commands on the Window menu, because those are not toggles, and will always bring the appropriate window to the front.


  • Fixed bug in which the Text-to-HTML entity conversion didn't honor the settings specified in the dialog box, and would always use named entities even when Decimal or Hex had been selected.

  • Fixed a bug in which fold ranges for XML files were not shown in cases where the XML schema used for the file contained a title container element which in turn contained a large quantity of text.

  • Fixed bug in which documents would leak the data associated with their display icon, which over time could lead to excessive memory consumption.

  • Fixed bug in which Control-Tab did not move the keyboard focus between panes of a split editing view or between keyboard-focusable views in project or disk browser windows.

  • Remedied the omission of the Columns commands from the Menus & Shortcuts preferences, so it is now possible to assign keyboard equivalents to those items (or hide the entire submenu, if desired).

  • Fixed bug in which trying to use the "Edit Markup" command from the contextual menu would report a 11104 error.

  • Worked around an apparent QuickLook bug in which clippings which had a "clear" background color (used when a light color scheme was in use) would display with a black background instead.

  • Worked around a Cocoa behavior in which the wrong window would be activated when dismissing the Find window and the window on which the search operated was on a different screen from the Find window.

    (When closing a window, Cocoa activates the next window that is on the same screen as the window that was just closed, rather than the window that was in front when the window being closed was previously activated. This is apparently normal operation, but in cases like this would lead to confusion when search operated on the correct window, but a different window got activated.)

  • Fixed bug in which path tooltips were not shown for top-level items on the Window menu.

  • Fixed bug in which double-clicking on an item in a Zip archive that was being browsed would not open it into a new document window.

  • Fixed a bug in which the search history menu would malfunction when invoked via the keyboard equivalent.

  • Put in some armorplating to prevent a crash which seems to occur when the computer's display configuration changes and Cocoa reports that there are no screens attached.

  • Made some changes to improve efficiency in the progress-dialog mechanics.

  • Fixed bug in which using the AppleScript interface to set the position property of a window would fail when one of the coordinates of the point had a zero value.

  • Fixed the title of the Undo string for "Canonize".

  • Reworked the JSON language module's syntax coloring to better handle invalid data so that it doesn't corrupt the coloring of the valid data that follows it.

  • Made a change so that duplicate removal for the Open Recent menu no longer attempts to resolve references to files. This is much faster, and works around delays caused by remote servers or attached disks which are are unavailable or very slow to respond.

  • Restored missing menu item entry for "Split/Unsplit Text View" (View => Text Display) so that its keyboard equivalent may be changed if desired.

  • Fixed bug in which the title of an FTP/SFTP browser window did not update as you moved up and down the directory hierarchy.

  • Fixed a regression in which Control-single/double-quote didn't work to toggle "Use typographer's quotes" on the fly as in previous versions.

  • Made a change so that Undo after a Replace All, Revert, or Reload will behave the way it used to before 12.0, and put the selection range back where it was before the operation was performed.

  • Made a change to break a deadlock that could occur while an editing window was being drawn.

  • Fixed bug in which modified documents got check marks in the document navigation (navigation bar) menu, instead of the intended bullets.

  • Fixed bug in which a few commands on the Go menu were disabled after the evaluation period when they shouldn't have been.

  • Fixed a bug in which restoring opened files in a project would fail after the first file had been reopened, and opening multiple projects each containing multiple opened files would usually report an error.

  • Fixed bug in which choosing an item from the application's Dock menu didn't activate the window containing the chosen item in situations where it should have.

  • Fixed bug in which using the Space bar to toggle visibility of a menu command (in the Menus & Shortcuts preferences) was incorrectly allowed to do so for items with a disabled check box.

  • Fixed crash which would occur when switching between documents in a (disk, results) browser window or in certain other situations with a long-running "highlight matches of selection" or "live search" operation waiting to complete.

  • Fixed bug in which attempting to open files from the FTP/SFTP browser window would occasionally fail in ways not explainable by modern science.

  • Fixed bug in which twisting open directories on FTP (not SFTP) servers didn't work.

  • Fixed incorrect coloring of character escapes in Grep search and replace patterns when the escape code contained non-decimal characters.

  • Changed the behavior of the "strip trailing whitespace" option so that it will no longer consider nonbreaking spaces (U+00A0, NO-BREAK SPACE) to be whitespace, thus preserving any such that may be present at the end of a line.

  • Fixed drawing glitches when moving the sidebar divider in Disk Browser windows.

  • When doing an "Open Selection", if the selected text is not resolvable to a file on disk, BBEdit will no longer attempt to open it (which would report a file-not-found error), and simply opens the "Open File by Name" window with the file name entered.

  • Fixed bug in which a -1708 error would be reported when closing an instaproject after having modified it (by manually adding items) and then opting to "Don't Save".

  • Fixed bug in which using "New Folder" or "New Text Document" in an instaproject would create the new item in the folder being viewed, and then add the item to the top level of the project, which was needlessly confusing (and marked the project dirty).

  • Fixed bug in which scanning for spell checking (as when right-clicking in a word, or other situations) would hang in certain situations.

  • Made a change to the file filtering logic so that files whose type identifiers claim that they're Zip archives are now double-checked to make sure that they at least begin with the correct magic number, since there exist enough counterexamples to make it worth testing.

  • Fixed a bug in which the "Save after writing" logging option used in the "Run with Options" dialog for #! scripts did not reflect (or affect) the actual behavior, so the log would not be saved after the output was added to it.

  • Fixed regression in which Command-period stopped working to cancel operations in a shell worksheet.

  • Corrected the selection behavior when undoing a Drag operation, so that the original pre-drag text is selected after the Undo.

  • Made a change so that mode specifications that aren't of the form mode: xxx; in a file's mode line are now used to set the document's language when opening. For example: // -*- C++ -*- in some of the standard libraries.

  • Fixed bug in which keyboard focus would end up in the wrong place when using the Markup Builder panel, so that (for example) a rapid invocation of Paste would paste into the document rather than into the panel.

  • Made a change to bbdiff, bbfind, and bbresults to incorporate a workaround for the bug in macOS 10.13 which causes undesired logging when starting the application.

  • Added kBBLMMinimumCompatibleParamBlockVersion to BBLMInterface.h (for compiled language modules) so that developers have a reliable constant for making sure that they're running in a compatible host application.

  • Fixed a regression in which using keyboard navigation to select an item from a folder-backed menu (scripts, filters, clippings) and then pressing Return/Enter with a modifier key held down would always run the item rather than perform the modified action (open for editing/reveal in Finder).

  • Adjusted the behavior of "Un/Comment" so that leading blank lines in the selection are ignored when determining whether the selected text is already commented or not.

  • When using "Compare Against Previous Version", the previous-version file now includes the time stamp as part of the file name, to make it easier to see which version of the file you're comparing against.

  • Made changes so that single quotes are auto-paired less aggressively when typing in certain document types.

  • In C-family languages, typing a pairable character immediately following a lone backslash will no longer pair it.

  • Fixed misbehavior which would occur when quitting the application while a window had a sheet open. FTP/SFTP browser windows will now auto-close the connection sheet so as to not interfere with the quit process; if another window is blocked by a sheet it will be brought to the front.

  • Made a change to FTP browser behavior so that it remembers your last-used location on the server after a successful connection, even if you didn't open anything.

  • When setting a marker using the prompted "Set Marker" command, the selection range is used as the initial marker name, as long as the range is all on one line.

  • Some fonts (Hasklig, Source Code Pro, and probably others) misreport their maximum glyph advancement, and consequently some math comes out wrong when computing for wrapping, scrollbar calibration, and other purposes. BBEdit will try to detect and work around this condition.

  • The bbedit tool now allows txmt: URLs to be supplied as arguments to be opened.

  • Updated the built-in cmark tool to the current version (0.28.3, at this writing).

  • The Markdown scanner now allows spaces (but not tabs or line breaks) in URLs that are enclosed in parentheses.

  • Fixed bug in which certain terms used as identifiers in Lua would confuse the function scanner.

  • Made a change to the policy for which elements are considered by the Markup Builder, which addresses cases in which unexpected suggestions were made (such as when trying to populate a list element).

  • Made changes to significantly improve file I/O performance when opening and saving text documents of nontrivial size.

  • Made a change so that undoing a "Duplicate Lines" operation selects the text that was previously selected.

  • The Python function menu now includes items for callouts (FIXME, TODO, REVIEW, ???, !!!, and NOTE).

  • Fixed bug in which it was possible to run a filter from the Text Filters palette when no eligible editing view was available, which would cause a crash.

  • Fixed crash which would occur when inserting text as the result of dictation or other non-keyboard input events.

  • If you wish, you may adjust the size of the search history for the Find/Multi-File Search windows:

    defaults write com.barebones.bbedit FindAndReplaceHistorySize -int [some number]

    A minimum history size of 2 is enforced. Setting the history to zero makes it infinite.

  • Fixed bug in which "Save to FTP/SFTP Server" would log in to the remote root directory instead of the default login directory in cases where the "Path" field was left blank.

  • Fixed bug in which folders in Zip archives were drawn with the wrong icon in disk browser windows.

  • Fixed a bug in which project window sidebar lists would leak icon memory sometimes.

  • Fixed bug in which disk browsers did not allow you to navigate to the top level (where all mounted volumes are shown and angels cavort amongst fluffy clouds).

  • Fixed case in which the application would not allow you to quit (and report a -43 error) in cases where an open document's backing file was no longer available, either because the file had been deleted or because the remote volume on which the file was stored got unmounted.

  • Armorplated the site of a reported crash.

  • Made a change to reduce the overhead involved in scripted text transformation options that may prevent a modal progress box. This will improve the overall performance of scripts that involve a large number of such operations, especially in cases where the actual amount of time required for each transformation is small relative to the run time of the script.

  • Fixed a bug in which "open file" requests from external applications would come into the application along a path which discarded important information, which would cause "Edit in BBEdit" operations from external applications (most commonly file transfer clients) to behave incorrectly (local backing file path would be displayed instead of the remote location, and changes to the file were not reported to the client for uploading).

  • Made changes to fix a collection of bugs which would prevent singleton window positions (such as palettes and the Find/Multi-File Search) from being restored correctly.

    Note: As a necessary result of this change, previous saved positions for palettes and the Find/Multi-File Search are not used, so you may have to reposition those windows if they don't open where you expect them to. "Management regrets the inconvenience."

  • Fixed bug in which using "Move to New Window" for multiple selected documents would leave the window with a "stale" title.

  • Added default to the built-in list of Perl language keywords.

  • "Paste Using Filter" can now be used when the active window is the Find or Multi-File Search window.

  • Dialog boxes for Process Lines Containing, Process Duplicate Lines, and Sort Lines will now validate the Grep pattern being used (if applicable) and will report any errors before the dialog box is dismissed, rather than reporting a 12314 error when trying to perform the transformation.

  • Fixed crash which would occur when using an invalid format for a #DATETIME# clippings placeholder.

  • Fixed bug in which the "HTML5" item was missing from the "Doc Type" popup menu in the main HTML markup tools palette.

  • Fixed bug in which changes to the "Show items starting with “.”" setting in FTP browser windows weren't persistent.

  • Fixed bug in which opening a document by dragging it to the "Currently Open Documents" section in the sidebar would cause certain internal bookkeeping to get out of whack, which in turn could cause a crash in certain situations, usually when closing a document opened in this fashion while the Multi-File Search window is open.

  • Fixed bug in which "All Files" pre-filtering wasn't correctly applied to files inside of Zip archives encountered during multi-file search (or used as search targets).

  • Added default block-comment delimiters for SQL variants.

  • "Use Selection For Find" and "Use Selection for Replace" will now hex-escape (using "\x{0D}") any naked carriage returns (ASCII 13) that occur in the selected text, rather than escaping them to \r (which would not match).

  • Disabled the system's automatic text substitution behaviors by default, since they're either nonfunctional or inappropriate within BBEdit.

  • Worked around a bug in modern versions of Microsoft Office in which certain characters copied from {Word, Excel, Powerpoint} documents were mis-encoded as UTF-8 and would paste incorrectly into BBEdit.

  • Quieted an error alert that would occur when printing a document with certain OS-provided options set. (Printing occurred anyway, the error occurred during generation of a recordable script event; so as a result, printing is no longer AppleScript recordable).