BBEdit 13.5 Release Notes

BBEdit 13.5 is a feature update, which includes notable new features, visible changes to existing features, and fixes for reported issues.

Because BBEdit 13.5 builds on features that were added in BBEdit 13.0 and 13.1, please take a few moments to review the release notes for BBEdit 13.0 and BBEdit 13.1, as well as their (respective) updates. Those notes are available in 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).


Requirements

BBEdit 13 requires Mac OS X 10.14.2 or later, and is compatible with macOS 10.15 "Catalina".

If you are using macOS 10.14 "Mojave", please make sure that you have updated to the latest available OS version (10.14.6 or later).

If you are using macOS 10.15 "Catalina", please make sure that you have updated to the latest available OS version (10.15.7 or later).


Upgrading

If you have been using BBEdit 13 in Free Mode, starting BBEdit 13.5 will reset your 30-day evaluation period, so that you can have a full trial of the new features.

If you have previously purchased a license from us for BBEdit 12 or older, you will have a full 30-day evaluation period in which to try out BBEdit 13's new features. License upgrades are available at a discount for existing customers. Please see the BBEdit upgrades page for information and instructions.


Additions

  • BBEdit runs natively on Apple Silicon.

  • Have you ever had the experience where you make a new document, put some text into it, and then later on, when you're closing it (either alone or as part of closing a bunch of documents), you click the "Don't Save" button? And then, an ohnosecond later, you realize you've made a terrible mistake?

    BBEdit has a new feature to protect your data: in the Text Files preferences, there is an option: "Rescue untitled documents when discarding changes". When this option is on (as it is by default), and you close an untitled document (one that has never been saved to disk), and click "Don't Save", BBEdit will save a snapshot of that document's contents to disk.

    If you realize you need that text back, it's there -- choose the "Rescued Documents" item on the Window menu submenu on the BBEdit application menu, and you'll get a window in which you can browse all of the available snapshots.

    In the "Rescued Documents" window, use the "Open" button for any given snapshot to create a new document with that snapshot's contents. (Opening a snapshot also removes it, since after all you can recreate it simply by closing the newly created document and choosing "Don't Save".)

    BBEdit will also do some housekeeping for you, if you like. By default it will clean up old data after a week, but you can adjust the interval from 1 to 365 days; or disable the cleanup altogether. (When cleaning up old items, BBEdit will move them into the Trash.)

  • Added a new command to the New submenu on the File menu: "Text File". This is for creating a new file on disk, which is then opened for editing.

  • The "+" button in projects and editing window sidebars now shows a menu for creating an untitled text document, creating a new text file on disk, or opening an existing file into the window. (For projects, "Open" is "Add" and will add the selected item(s) to the project.)

  • Added a command to the Palettes submenu: "Markdown Cheat Sheet". This opens a floating window showing common Markdown constructions. Double-clicking on an item will insert it into the active document; you can also drag an item to insert it where desired.

  • Added "Randomize order" as an option for "Sort Lines". If turned on, this overrides all other sorting options, and will generate a random ordering for all lines in the document.

  • "Process Duplicate Lines" provides a new option: "Ignore empty lines". When not using a pattern match, turning this option on will leave any empty lines (i.e. lines which contain no characters other than the line break) alone, even if there are multiple lines in sequence. This option has no effect when "Match using pattern" is turned on.

  • Added "overscroll" to the search keywords and option description for "Extra vertical space in text views" in the Editing preferences.

  • Rearranged items in the Appearance preferences to make room for a new status bar control: "Live match results". When turned on, this item displays the number of matches for the selected text in the document (or the word surrounding the insertion point, if applicable). If the search takes long enough, the status bar item will show a progress indicator instead.

  • You can now open the contextual menu for text views using the keyboard. The factory default keyboard equivalent for doing so is Control-Shift-2; but you can change this as desired using the "Menus & Shortcuts" preference. (The keyboard equivalent is in the "Miscellaneous" section, as "Open Contextual Menu").

  • When running on macOS 10.15 and later, there's an additional command on the Window menu: "Move to [Display]", where "[Display]" is the name of an eligible attached display. This command is only visible on systems running macOS 10.15 or later with more than one display available. Choosing the command will move the front window to the indicated display. Hold the Option key down to move all open windows to the indicated display.

  • When quitting, BBEdit will save enough information with documents opened using its built-in FTP/SFTP support to reopen those documents at next startup without having to connect to the server. This behavior is gated on "Include documents on FTP/SFTP servers" being turned on. If you prefer the pre-13.5 behavior, turn on "Always fetch from server".

  • When saving a document that was opened from an FTP/SFTP server using the built-in support, BBEdit will check the modification date on the server before saving. If it looks like the file has been changed on the server, BBEdit will alert you before saving the file.

    If desired you can disable this check (restoring pre-13.5 behavior) with this Terminal command:

    defaults write com.barebones.bbedit CheckModificationDateForRemoteSaves -bool NO

    Warning: You should not disable modification date checking for remote saves if you are in an environment where others may be making changes to files on the server, whether or not you have them open for editing in BBEdit. Otherwise, data loss is likely.

  • The settings for indentation of soft-wrapped lines can now be set (or changed) on a per-document basis.

    The appropriate settings are in the Editor Defaults preferences, and like the other settings in that location (font excluded), changing the soft-wrap indentation settings won't affect the display of open documents. As always you can use the "Normalize Options" command to reset a document's options.

    You can change a document's soft-wrapped line indentation using the "Text Options" panel or the popover (gear menu in the navigation bar); you can also set the behavior per-language using the custom settings list in the Languages preferences.

  • You can now copy and paste actions within and between Text Factory windows. When pasting, the items on the clipboard will be inserted before the first selected item if there is one; otherwise the pasted items are added to the end of the list.

  • Edit => Insert => File Contents gets a new option: "Ensure line break after each inserted file"; this does just what its name implies.

  • Added a "Clear Command History" to the "Run Unix Command" history submenu (for cases in which there is a saved history).

  • The folder scanning done by various batch operations on the Markup menu gets some new features and behaviors:

    • Skip "node_modules" folders, subject to the "SkipNodeModulesWhenScanningFolders" expert preference;

    • Skip files and folders in Git working copies that are filtered by a ".gitignore" file, unless the "MarkupToolsMisc_IncludeGitIgnoredFilesWhenScanningFolders" expert preference is turned on.

  • Added an expert preference, so that project documents are allowed to remount volumes when reloading the list of documents that were open when the project was last closed. This is off by default, but if for some reason you need to:

    defaults write com.barebones.bbedit ProjectsAllowVolumeMountWhenReopening -bool YES

  • Added a new callback to the compiled language module interface: bblmGetLanguageCodeForName(). Given either a user-facing language name or an Emacs mode name, this will return a four-character language code which is then suitable for passing to bblmFindEmbeddedLanguageRunsInRange and bblmFindEmbeddedLanguageFunctionsInRange. If the callback returns zero, there is no suitable matching name or Emacs mode, or the language module subsystem hasn't finished initializing.

  • Added a new callback to the compiled language module interface: bblmGetInstalledLanguages(). This returns an array of dictionaries, each with three key/value pairs:

    • BBLMDisplayName: the display name of the language (string)
    • BBLMLanguageCode: the language's four-character code (number)
    • BBLMEmacsModeNames: all of the language's declared or inferred Emacs mode names (array)

    The BBLMLanguageCode value is suitable for passing to bblmFindEmbeddedLanguageRunsInRange and bblmFindEmbeddedLanguageFunctionsInRange.

    This callback will return nil if you call it before the language module subsystem has finished initializing; so therefore you should not call it during language module initialization.

back to top

Changes

  • You are invited to drag clipping entries from the Clippings palette to wherever you'd like. (Clipping set entries are not draggable.)

  • The "Use the active system highlight color for selected items" setting in the Sidebar preferences is no longer needed, and has been removed.

  • When running a multi-file search, BBEdit will look for an existing search results window for the same search (based on the search/replace strings, options, and the items being searched). If a suitable match is found, BBEdit will reuse that window for the search results, rather than creating a new one.

    If you would prefer that BBEdit always create a new results window when running a search, you can use this Terminal command:

    defaults write com.barebones.bbedit ReuseSearchResultsWindowsWhenPossible -bool NO

  • To reduce clutter in the status bar, the Text Encoding and Line Break Type status bar items are off by default. As always you can adjust the visible items in the Appearance preferences.

  • BBEdit no longer includes ctags or readtags tools built in to the application package. BBEdit will continue to use an installed ctags tool if it is available (we recommend Universal Ctags). readtags is no longer required; for improved performance, BBEdit will read tag file data directly.

  • If you paste (or drag) an URL into the "Server:" field in the FTP/SFTP connection panel, BBEdit will try to figure out the protocol host, user, password, port, and path from the URL text. (This is strictly a workaround; those items are intended to be entered discretely into the connection panel, and unless you have an FTP or SFTP URL, an arbitrary URL is not generally useful in this context.)

  • When choosing an item from the Open Recent menu, if that item is missing or unavailable, you'll get a helpful alert to that effect, along with a button to remove the item from the Open Recent menu, if desired.

  • If necessary, you can disable the cursor blink in BBEdit's editing windows by using this Terminal command:

    defaults write com.barebones.bbedit DisableCursorBlink -bool YES

    Note that this will not affect cursor blinking in dialog boxes and certain edit fields; but if you need to use this expert preference, you probably already know how to turn that off.

  • Integrated an updated version of the PHP tags file, thanks as always to Ted Stresen-Reuter.

  • Changed \r to \n in the default example Grep patterns. This doesn't affect their use in BBEdit, but does make them more portable.

  • If a script run from the #! menu produces no output, rather than doing nothing (and potentially creating confusion), BBEdit will generate placeholder text to indicate that the script produced no output.

  • When using "New Disk Browser", you can also choose a Zip or tar archive in addition to a folder.

  • Search results lists will now highlight the matching range of the search string or pattern.

  • The "OpenPDFsAsText" expert preference is now off by default, since PDFs are rarely viewable or usable as plain text anymore.

  • Expanded the range of Unicode characters which get a gray bullet drawn to indicate a non-conventional space character when "Show Invisibles" is turned on.

  • The sidebar uses a more conventional appearance in light mode, and spends fewer cycles drawing trendy 3D junk.

  • If none of the entries in the completion panel have badges, hide the badge column to avoid unnecessary space on the left. Otherwise, make the text in the completion column line up with the text above.

  • Changed the title of the "Include documents on servers" application preference to clarify that its operation is limited to documents opened from FTP/SFTP servers. (Note that the document(s) must be opened using the built-in support.)

  • The "Strict Hierarchical" format option (Markup/Utilities/Format) has never been a good idea for HTML documents; and so the UI now explicitly disallows it. (The "Pretty Print" option does a pretty good job of maintaining hierarchical formatting whenever possible.)

  • Changed "Suffix" to "Extension" for the custom extension mapping list in the Languages preferences.

  • Change the title of the Preferences window to reflect the sidebar selection, because apparently that's a thing the HI guidelines say to do.

  • The button in the file panel for adding items to project documents says "Add to Project" rather than "Open".

  • If the history for "Run Unix Command" is empty, the "Run Unix Command" submenu will show an appropriate indication.

  • If a language module contains BBLMSpellableRunKinds and/or BBLMNonSpellableRunKinds values in its property list, BBEdit will infer that language runs should be filtered for spell checking, so the BBLMFiltersRunsForSpellChecking value is no longer required in that case.

  • If a codeless language module uses a regular expression to specify functions, and it has Open Statement Blocks and Close Statement Blocks values, BBEdit will scan the text inside of the function and generate fold ranges for blocks delimited by those values.

back to top

Fixes

  • Rewrote the git-ignore checking to use git directly, thus ensuring that its results will be consistent with the command line. (There is some additional overhead to do it this way, but it should be negligible in routine use.)

  • The "Hide Palettes" and "Show Palettes" commands now include the Colors panel, and the application will reopen the Colors panel at startup if it was left open when quitting previously.

  • Fixed bug in which palettes were reopened and made visible when quitting with "Hide Palettes" in effect.

  • Extended file name validation in the file info panel, to prevent crashes which would occur when trying to rename a file to something which had nulls, other illegal characters, or an empty name.

  • Fixed performance bug which would make drawing large numbers of tick marks in the scrollbar take a particularly long time in Differences windows.

  • Made changes to minimize the amount of time spent drawing tick marks in text view scrollbars (for live search results and other purposes) in cases where the scrollbar area would have been completely saturated.

  • Made a change to improve the performance of folder comparisons which involve the filtering of identical files.

  • Made changes to reduce the amount of time required for single-file comparisons, particularly when very large files are being compared (and/or they have a lot of differences).

  • Improved performance when canonicalizing lines containing RCS identifiers for comparison (when RCS identifiers are ignored, which is the default behavior).

  • Made a change so that Apple Events sent from the command-line tools allow the OS to add sandbox-extension information to the request. This will prevent the OS from adding quarantine information to executable files that are opened in BBEdit, which in turn made it inconvenient to run those files outside of BBEdit at a later point.

  • Made significant performance improvements in areas involving non-selection highlighting ranges (such as differences, live search results, and other related areas).

  • The application will remember which windows were minimized when quitting, and when relaunching will restore those windows to the minimized state.

  • When printing duplex, BBEdit will alternate left and right gutters when "One-inch gutter" is turned on, so that you can punch holes in the gutter and it'll work on both sides.

  • Fixed a bug in the Swift language module in which it did not generate correct syntax-coloring information following a single slash (/); this would result in unexpected behavior elsewhere, such as a hang during "balance while typing".

  • Made a change to improve the performance of certain calculations with large files. Among other things, this will speed up restoration of autosave state for large unsaved files, as well as Process Lines Containing.

  • Fixed bug in which changes to the "Print color syntax" setting in the print panel did not affect the printed output.

  • BBEdit will no longer wait forever for spell checking when populating the contextual menu; this resolves an application stall when right-clicking in very large (hundreds of megabyte) files.

  • Made a change to improve the performance of live searches (used in various contexts) when very large (hundreds of megabytes) documents and very large (tens of thousands) of matches occur.

  • Fixed memory leak in trailing-whitespace stripping while saving.

  • Fixed crash which could occur when changing from a light system appearance to a dark system appearance with certain color schemes in effect.

  • Made a change to improve performance when switching color schemes and/or appearances.

  • Made a change so that permissions errors that occur while saving a file to a remote volume will now get reported directly, rather than triggering a privilege escalation (which the OS seems to dislike for servers).

  • Added some code to guard against a nonreproducible crash in which the application was trying to drag-scroll a nonexistent text view.

  • Implemented significant performance improvements in ctags file interpretation, which should reduce lag when using the contextual menu and completion panel and large tags files are involved.

  • Fixed bug in the Unix Shell Script parser in which a backslash inside of a brace block would cause confusion in certain contexts.

  • When saving a change into a Zip archive, don't set the file's permissions to include u+x unless it begins with a "#!". (The default permissions are now 0644 rather than 0700.)

  • Made a change to improve performance in "Merge Windows" and "Move (documents) to New Window" when abusively large quantities of windows and/or documents are involved.

  • Made changes to improve performance when closing a window with a very large number of documents in the sidebar.

  • Made a change so that PHP line comments are treated as opaque; therefore a "?>" in a commented-out line of PHP will no longer prematurely end coloring of a PHP section embedded in an HTML document.

  • Fixed bug in which the application would exit with an uncaught exception when "Paste Using Filter" was invoked to run a text factory with one or more unconfigured actions.

  • The Zoom In/Zoom Out/Actual Size commands on View -> Text Display are now functional for "Preview in BBEdit" windows.

  • When quitting the application, BBEdit will make a backup copy of its preferences. (This currently resides in the Setup folder.)

  • Made a change so that doing a Shift Right on an empty (no characters, not even a line break) line at the end of a file will perform the appropriate operation, rather than doing nothing. (Note that since there is no line break at the end to select, the selection will include the tab/spaces just inserted.)

  • Limit the length of the generated title for windows resulting from an "Extract" operation.

  • Set "--[[" and "]]" as default block-comment delimiters for Lua, so that when using "Comment Block", those are used in preference to batch-comment/uncommenting using the "--" delimiter.

  • The Tidy "Reflow" command now correctly loads the "Input is XML" setting.

  • Fixed bug in which moving a Differences window to a smaller screen would hide the list of differences, if the smaller screen required significant reshaping of the window.

  • Fixed cosmetic bug in which the Live Search bar would report "Searching..." in cases where there were no search results.

  • Fixed bug in which running a recorded AppleScript of a multi-file search with filter terms would not ingest the filter terms correctly, due to a misbehavior of AppleScript recording.

  • Made a change so that "Update Images" will only rewrite an image tag's height and width if they are different from those derived from the image file, so as to avoid unnecessary changes.

  • Fixed a couple of bugs in which windows were incorrectly placed or sized when using one of the Arrange commands from the Window menu.

  • Fixed cosmetic bug in the display of local file URLs when asked to open a local file using the remote file transfer client interface (such as when using "Open with BBEdit" on a file in Transmit's local file list).

  • Made a change to reduce file system load when matching a document being opened or selected against the list of items in a project.

  • Added "@function" and "@return" to the SCSS keyword list.

  • Fixed regression in which SCSS variable names in the document weren't included in the completion panel.

  • Fixed bug in which the "PreferredFilenameExtension" preference did not apply when saving a new document whose language was "(none)".

  • Made a change to improve performance when using Option-left-arrow ("word backward") navigation in very large HTML/XML documents.

  • Fixed bug in which anonymous "INTERFACE" blocks would confuse the Fortran function scanner.

  • The Fortran function menu will now show distinct badges for modules, interface blocks, programs, and subroutines.

  • Revised the behavior of the HTML/XML fold generator so that it will no longer generate automatic folds for paired elements that begin and end on the same line. This in turn resolves a confusing behavior in which "Collapse All Folds" would collapse all of the automatic fold ranges; but same-line elements subsequently could not be expanded using the fold gutter.

  • Reduced the intensity of the highlight color for selected list items; it's more in line with the rest of the system.

  • Fixed bug in which folder comparison would consider two files disjoint if they differed only in the case of the file name.

  • Fixed bug in which the sidebar layout would be wrong when reopening an instaproject (or some other project windows) during application state restoration.

  • Corrected the appearance of the completion panel when running on macOS 11.0.

  • Made changes to significantly improve performance when using the "Next Occurrence of" and "Previous Occurrences of" commands to navigate instances of selected text. This significantly improves usability with giant files (hundreds of megabytes and up).

  • Made a change to improve the startup performance of background search operations (instances of selected text, Live Search, and live-matching in the Find window) in very large documents.

  • Fixed bug in which the language module entry points for managing document-specific parse data weren't called at the correct points.

  • Fixed bug in which entering diacritic characters by holding down a letter key and then selecting from the OS popover would create a unwanted Undo state and confuse the existing one, in situations where typing was already in progress.

  • Made a change to speed document state saving and restoration for very large text files.

  • Corrected the vertical positioning of the "refresh" button in results windows when running on macOS 11.0.

  • Fixed hang which would occur when the Open File by Name window would try to update its search results from the list of open documents, while at the same time a -documentWillSave attachment script was running as the result of autosaving a project document.

  • Made a change to guard against a logged ctags-related crash.

  • Made the DisableScriptAttachments expert preference work correctly. (It's not documented for a reason, but should at least not break the application when turned on.)

  • Fixed a crash which could occur in the ctags support internals when quitting the application quickly after startup.

  • When rewrapping text with quoted lines (or with lines that look like they might be quoted, like Markdown headings), the wrapper will no longer put quote markers on blank lines if the preceding line has quote markers. Thus, blank lines will stay blank.

  • When using a project with a local preview server configured, and live previewing a document in the configured site, BBEdit will refer asset requests for the previewed page to the preview server, in the event that it's not able to resolve those requests relative to the project's configured site root. (This allows such asset requests to succeed where they would previously have failed.)

  • Corrected the color space used for converting color representations from external forms (such as the value strings in color schemes).

  • Fixed a bug in which page-relative links (to other pages) were not constructed correctly when a preview server was in use for Preview in BBEdit. This in turn meant that the browser would show a 404 when clicking on such a link in a live preview window.

  • Added code to work around a WebKit exception which would occur when using "Preview in BBEdit" with a local preview server (rather than previewing directly from the document file).

back to top

fin