BBEdit 15.5 Release Notes
BBEdit 15.5 contains feature additions, refinements to existing features, and fixes for reported issues.
For details on all the new features and enhancements available in BBEdit 15, please see the release notes for BBEdit 15.0.
Because BBEdit 15 builds on features that were added during the BBEdit 14 cycle (as well as previous versions), please take a few moments to browse the release notes archive and review the release notes for any versions that you may not have seen.
To get a high-level overview of what's new in BBEdit 15, with screen shots, see the What's New in BBEdit 15 page.
For detailed information on using any of BBEdit's features, please refer to the user manual (choose "User Manual" from BBEdit's Help menu).
Important: Please make sure that you have read the BBEdit 15.0 change notes, and BBEdit 15.1 change notes, as there are significant changes from previous versions.
BBEdit 15.5 requires Mac OS X 12.0 or later.
For whichever version of macOS you are using, please make sure that you have updated to the latest available OS version.
This is particularly important in the case of macOS Sonoma (14.x), which contains bugs and regressions that affect BBEdit's operation.
If you have been using any previous version of BBEdit in Free Mode, starting BBEdit 15.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 14 or older, you will have a full 30-day evaluation period in which to try out BBEdit 15's new features. License upgrades are available at a discount for existing customers, and some customers may be eligible for a free upgrade (based on date of purchase). Please see the BBEdit upgrades page for information and instructions.
Introducing "workspaces", a way to switch between arrangements of open documents and windows. A workspace includes the same application state that is saved and restored across quit and relaunch, but can be activated at any time while the application is running. This is useful for (for example) switching between working setups for different clients, or for different types of projects (writing vs programming vs web development).
The applicable menu commands reside on the BBEdit application menu. To create a new workspace, choose "Save Workspace" and give the workspace a name. To activate a previously saved workspace, choose it from the "Workspaces" submenu. You can overwrite an existing workspace by specifying the same name.
When switching to a different workspace, BBEdit will ask you to save any unsaved documents which correspond to existing files on disk (or remote FTP/SFTP items). You must save these before switching workspaces. Untitled (never-saved) documents are not affected by workspace changes, and will remain open (and unsaved) when you switch workspaces.
Saved workspaces reside in the "Workspaces" application support folder, accessible via the Folders submenu on the application menu. If you wish to remove an inactive workspace, deleting the corresponding file will accomplish this. Existing workspaces can be renamed by renaming the corresponding file (whose extension must be preserved when doing so).
If there are any saved workspaces, BBEdit's Dock menu will have a Workspaces submenu, so that you can easily switch via the Dock if desired.
BBEdit does not update a workspace as you open or close documents or move windows around. If you make significant changes and would like to update the workspace, use "Save Workspace" and overwrite the current workspace. (For convenience BBEdit will fill in the name of the current workspace when you use "Save Workspace".)
Additionally, BBEdit will prompt you to update a workspace when switching, if necessary. You can control this behavior in the Application settings, using the "When changing workspaces" group of settings.
Added support for FTPS (FTP protocol run over TLS). The connection panel for "Open from FTP/SFTP Server" and friends provides a popup menu for choosing the security model, as follows:
FTP
: FTP protocol, no transport securitySFTP
: SSH file transfer protocol, SSH transport securityFTPS (Explicit)
: FTP protocol, TLS transport security (negotiation requires server AUTH TLS
support and negotiation)FTPS (Implicit)
: FTP protocol, TLS transport security (connection opened immediately; requires server support)Added support for the "Writing Tools" feature introduced in macOS 15.2 as part of the Apple Intelligence suite. Thus, the corresponding commands on the Writing Tools submenu of the Edit menu are operational.
The Git branch item in the navigation bar grows a menu; when clicked this will present the eight most recently committed local branches in alphabetical order, for easy checkout. The "Check Out Branch" command at the end of the menu performs the same function as the corresponding command in the menu bar.
The popover for LSP diagnostics gets a "Copy" button ("Copy All" if there's more than one listed), and you can also use "Select All" or select multiple diagnostics and use the Copy command.
Grep pattern entry fields in various transformation and setup dialogs are syntax colored.
When running on macOS 15, the Window menu includes "Fill" and "Center" commands, as well as the "Move & Resize" submenu and associated commands.
The "Zoom" command makes a triumphant return to the Window menu.
Added "Cascade on Left" and "Cascade on Right" commands to the Arrange submenu on the Window menu. These commands will (respectively) cascade windows on the left and right side of the display, without allowing them to cross the middle. (This is generally more useful on large wide-aspect displays.)
Various sheets which provide access to saved Grep patterns have added the ability to save and manage patterns from within the window.
Made changes to improve the experience when running #! or Unix language scripts that take a nontrivial amount of time to complete.
Using "Run" on a script window, or choosing a Unix script or executable from BBEdit's Scripts menu will open a window with an icon you can click to get back to the document being run, a progress bar, an elapsed-time indicator, and a cancel button. These all work as you might expect.
Any output produced by the script will appear in the text area, and when the script execution has finished it will also be added to the appropriate log file. You can get to the log file using the button provided for the purpose.
Additionally, the output can be selected and copied, and "Save a Copy" on the File menu is available to save the output to a separate file, if desired.
If the script takes less than two seconds to run and does not generate any output, the progress window will not appear (there's no need for it).
When the insertion point is inside of an opening delimiter, or immediately outside a closing delimiter, BBEdit will highlight the matching delimiter, as appropriate.
If the insertion point is immediately inside of a container element in an HTML document, delimiter matching will highlight the corresponding pair of opening and closing elements. (As part of the HTML tools, this feature is only available during evaluation or with a paid license.)
The default color is the same one for highlighting live search matches; this may be adjusted in the respective color scheme via the "Text Colors" preferences.
This feature may be controlled via the "Highlight matched delimiters" option in BBEdit's "Editing" preferences.
The keyboard equivalents configurable for opening the search history, saved Grep patterns, and cheat sheet in the Find and Multi-File Search windows can also be used (as applicable) in other locations that use the same menus.
When right-clicking on two selected files in the sidebar, in addition to "Compare", "Find Differences" is provided. Choosing the latter will open the Find Differences window prepopulated with the selected files. This provides an opportunity to adjust settings or (if desired) swap the files before doing the comparison.
Added the ability to preview CSV and TSV files (explicit indicated language of "Comma-separated Values" and "Tab-separated Values", respectively) using "Preview in BBEdit" or a designated web browser. "Export as HTML" works as well. Note that BBEdit is still not a spreadsheet.
When copying code responses in an AI worksheet, if the worksheet's language is Markdown and the selected text of range is in between two fenced code block delimiters with a language specified, BBEdit will attempt to determine the language based on the specified mode, and use that as the language when pasting into a new document.
Added a contextual menu to the list in the Expert preferences, to simplify copying and resetting individual settings. (Copy was previously available via the Edit menu, and still is.)
Remote Git push/pull/fetch will display a "Completed" annunciator after successful completion of the operation, so that you at least know that something happened.
An expert preference is available so that BBEdit uses the active user locale rather than the core system locale when comparing text for Sort Lines. By default this is off; but if for some reason you require localized sort order based on the active language in the system, this is available by employing the following Terminal command:
defaults write com.barebones.bbedit SortLines_UseCurrentUserLocale -bool YES
Individual notifications can be disabled via expert preferences; these are listed in the "Expert Preferences" listing; type "Notification" in the search box to see them.
New text transformation: "Strip Diacriticals". This transform replaces composed diacritical forms in the text with the base character. Thus, "á" becomes "a", "ç" becomes "c", and so forth. The transform is available via the Text menu, "Apply Text Transform", text factories, and the scripting interface.
Color schemes get a setting for controlling the color used to highlight occurrences of the selected text (or of the word surrounding the insertion point). To adjust this, use the corresponding color setting in the "Text Colors" preferences. Absent an explicit setting, BBEdit will derive this color from the foreground text color.
Color schemes get a setting for controlling the color used for live search matches (via the Find window or Live Search bar); one setting for the selected match, and one setting for all others. To adjust this, use the corresponding color setting in the "Text Colors" preferences. Absent an explicit setting, BBEdit will use the previous defaults.
If completions provided by an LSP server include a "details" field, this is displayed next to the completion's display text in the completion panel.
Added --ignore-blank-lines
as an option for bbdiff(1)
. As
with the corresponding options in the Find Differences window,
this will cause lines consisting solely of whitespace to be
considered empty for purposes of comparison.
In Markdown documents, headings are now indented according to their level. H1 ("# this is an H1") is not indented, H2 is indented by one space, etc.
The foldable section associated with a heading now encompasses lower level headings and their sections. So, an H1's foldable section will include an H2's section that immediately follows it. These headings will be listed in the function popup with indentation to match this nesting, like an outline.
Additionally, blockquote sections (indicated with a '>') and list items "belong" to the heading section immediately before them, and act like nested documents. The result is that any headings within those subsections are indented below the parent section. Here's a small example:
### This is an H3
> This is a blockquote
>
> # This is an H1 in a blockquote
>
> This section will be nested in the function popup
> below/within the H3 at top of the example.
If desired, you can force BBEdit to read files as UTF-8, even if they are not valid UTF-8. To do this, add "Unicode (UTF-8)" as the only encoding in the list of encodings to try if a file's encoding can't be guessed (in the "Text Encodings" preferences).
This should be used with caution and under advisement; BBEdit can already automatically detect and read valid UTF-8 files, and malformed UTF-8 files may behave unpredictably when edited, searched, and/or saved.
If the OpenPDFsAsText
expert preference is off, as it is by
default, BBEdit will display PDFs in-application alongside other
documents. This is provided as a convenience; BBEdit is not a
replacement for Preview or any other PDF tool.
Updated imagery in the LSP diagnostics popover so that errors, warnings and notes can be distinguished by shape as well as by color.
Updated the iconography in the navigation and text status bars to use images provided by the OS, for a more up-to-date appearance and improved behavior when using the "Large" and "Extra Large" status bar item sizes.
BBEdit uses the standard macOS Window menu, which improves compatibility with ongoing system-wide UI changes in that menu. System-provided commands on that menu can be customized using the System Settings application (and apply to all applications).
Per-language preferences no longer include the ability to hide the Language status bar item, since doing so makes it impossible to change the document's language.
The "Selection only" check box is enabled in the Find window when the target document has a rectangular or other non-contiguous selection. The "Find All", "Extract", and "Replace All" buttons will behave accordingly and operate only in the selected ranges of text. NB: if a replacement involves adding line breaks, the outcome may not be what you expect.
Changes in the Git revision pickers:
Rearranged the columns in the Git revision picker; the commit hash is always listed first.
Display the commit hash in a monospaced font.
Disable sorting based on the commit hash (which is arbitrary and not useful for sorting).
When using "Compare Revisions" or the navigation bar revision
menu for a Git file, BBEdit will disable the HEAD
revision from
the list of available revisions if the file does not have any
pending changes. This improves the overall experience by making
sure that the most recent comparable revision is always the first
one available, rather than the second.
When starting the application with the Shift key down, an alert will now appear confirming whether you want to skip the reopening of previously opened documents. (Heretofore the application would do so without prompting and post an OS notification, which quite often could be missed or suppressed.)
Reworked the internals of multi-file search/replace and Text Factory execution to improve performance and eliminate legacy API use. (The brevity of this description in no way reflects the amount of effort this required.)
When quitting the application, and either "Restore unsaved changes" or "Reopen documents that were open at last quit" have been turned off, BBEdit will check for documents with unsaved changes before beginning the quit process. If there are any, you can opt to review the documents (which cancels the quit process), or discard all of the unsaved changes (after which the application will quit.)
Corrected the appearance of the popup menu buttons in the CSS dialog boxes (also used in a few other places) when running in Dark Mode.
If an instaproject is open on the user's home directory, BBEdit will avoid opening arbitrary files into its window, since otherwise everything would open there. Rather, only files located immediately in the home directory will open into the instaproject window, as well as files located in invisible directories whose immediate parent is the home directory. (This probably doesn't make sense to anyone except the one person who needs this behavior, hi Steve.)
When performing a Grep replacement or Extract operation, the application will warn you if the replace pattern contains references to nonexistent capture groups (subpatterns) in the search pattern.
If there is a saved default window position (created via "Save Default Text Window" on the Window menu), BBEdit will use this when arranging windows using the "Stack" command.
Made changes to improve the execution performance of complicated Grep pattern searches, as well as to enable performance improvements for the patterns used in codeless language modules.
BBEdit will ignore lines beginning with #
when processing
delimited text files (CSV or TSV) for column analysis as well as
previewing. This can be configured via a custom language setting
for the respective language, if needed.
Made a change to improve legibility in the sidebar when it does not have keyboard focus and the system-wide accessibility "Increase contrast" setting is turned on.
Added support to bbedit(1)
for -F
, -N
, and -S
as
synonyms for --front-window
, --new-window
, and
--separate-windows
, respectively.
Made changes to improve performance of large-scale operations which involve line analysis and computation (Add/Remove Line Numbers, Prefix/Suffix Lines, Process Duplicate Lines, Sort Lines, Strip Trailing Whitespace).
Made changes to improve performance in Normalize Spaces, Remove Blank Lines, and Strip Trailing Whitespace on very large files.
Made a change to improve text scanning performance in the HTML/XML syntax coloring mechanics. (This is most likely noticeable only on extremely large files.)
When prompting for factory defaults reset in the Text Colors preferences, the list of settings affected is too long and not useful, so it is omitted.
Add "(no text filters)" placeholders to the "Paste Using Filter" and "Apply Text Filter" submenus, when they would otherwise be empty.
When using "Export as HTML", BBEdit will examine the generated output, and if it lacks a basic HTML document structure, the application will apply a simple structure. This is useful for HTML renderers which don't do this on their own (e.g. most Markdown renderers).
"Collect Diagnostic Data" allows cancellation of the panel before data collection is finished, which is helpful when the system profiler request hangs.
Beep instead of alerting when certain invalid character insertions are attempted (using the character panel or other input-simulating systems).
Made a bunch of optimizations to improve performance in the HTML function scanner in pathological cases.
Made a change to significantly improve layout performance in the Minimap.
Made some minor cosmetic adjustments to the rendering in the Minimap window.
Fix for folds on YAML scalars at the end of the document
Like this:
a:
b: |
value of b
can be multiple lines
The fold starts after the pipe and will now include the s at the end of the last word.
Updated the entitlements in the App Store build to include
/opt/homebrew/Cellar/
and /opt/homebrew/opt/
, so that
Homebrew binaries are usable without requiring explicit sandbox
access.
Fixed typo in an expert preference defaults entry.
Made a change so that the lifetime of temporary files generated for certain #! menu operations (such as "Run" or "Run in Terminal") is now tied to the lifetime of the document; BBEdit will delete temporary files when the document is closed, rather than when the application is quit.
Made a nominal performance improvement to reduce time spent in some cases when opening and closing documents when there are a large number of documents on disk open.
Fixed bug in which closing a live preview window would fail to save any customizations to preview filter/template/CSS selections.
Made a change so that the "Get Info" panel will decline to count words in very large documents (same threshold as the Text Statistics status bar item). This improves performance and usability.
Made a change to significantly improve the performance of soft text wrapping calculations in the text engine.
Made a change so that the OpenPDFsAsText
expert preference takes
effect without requiring an application relaunch; turning this setting
off will override the PDF language module's built-in mapping. (Changing
the setting does not affect the display of any open PDFs; any such will
need to be closed and reopened.)
Corrected display of some header entries in the Open Recent submenu.
Fixed bug in which the -Z
(--null
) output option in
bbfind(1)
did not work as intended.
Fixed hang which would occur in the Rust language module when a
where
clause in a function header was at EOF.
Made a change to improve performance and correctness when updating modification dates for FTP/SFTP files, when the file's directory is displayed in the browser, and there are many (thousands) of items in that directory.
Fixed crash which would occur when attempting some SFTP operations in the wake of a broken connection.
Corrected the appearance of menu section headers when running on macOS 14.0 and later.
Made changes to improve performance of high-frequency operations involving EditorConfig.
Removed duplicate entries from the output of bbedit -h
.
Fixed bug in which notebooks were not added to the list in the Multi-File Search window if they were opened while the MFS window was open.
Added some declarations to the application's property list, to let the OS know that BBEdit can open image files, and a "catchall" declaration for other file types.
When reopening minimized windows during state restoration, the animation into the Dock no longer occurs. (Each minimized window will still briefly appear on screen.)
Fixed bug in which bash numeric base specifiers would confuse syntax coloring and function scanning.
Made a change to significantly improve the performance of "Convert to ASCII" when processing fullwidth character forms.
Fixed bug in which creating a new file in an instaproject folder didn't select the newly created file in the Project list in cases where the selected or right-clicked item was another file.
Fixed a potential cause of a reported crash in Open File by Name.
Fixed bug in which "Close All in Project" did not close any non-text documents (such as images or text factories).
Made a change to "Cascade Left" so that the windows start at the right-hand side of the display, rather than somewhere in the middle.
Made a change so that an asterisk at the beginning of a line (with or without intervening whitespace) is not paired while entering text in Markdown documents.
Corrected display of qualifiers in the custom language preferences when a status bar setting was changed.
Fixed bug in which CSS syntax coloring didn't recognize negative
floating-point numbers without a leading zero (e.g. -.10
).
Correct coloring of identifiers in CSS at-rule specifiers.
Various CSS keyword additions and updates.
Fixed crash which would occur when closing the Multi-File Search window after a previous attempt at closing it via the scripting interface failed because the window was displaying a sheet.
Fixed bug in which the list of items to process in a Text Factory window did not correctly mark items at the top level (such as windows) in cases where a subordinate item (a document in that window) was automatically marked when the document in question was open.
Fixed bug in which project windows would open at an infinite width in cases where the editor view had been hidden when the project was closed.
Fixed crash which would occur while saving FTP/SFTP bookmarks after creating or editing a bookmark, when (any) one of the saved bookmarks was malformed.
When the string entered into "Open File by Name" contains slashes (for separating path elements), BBEdit will wildcard the intermediate path elements, so that it's no longer necessary to precisely specify each directory along the path to the file. (This does not guarantee a match, but improves flexibility.)
Fixed missing text for the "Remove Blank Lines" item summary in text factories.
Fixed bug in which words in comments and heredocs in Ruby files weren't subject to spell checking, as they should have been.
Made an assortment of changes to improve multi-file process performance.
Made a change to significantly improve performance when looking
for a coding:
variable in an Emacs mode line or variable block.
This reduces overhead in multi-file operations.
Made changes to improve literal (non-Grep) text searching performance for multi-file search and other "find all" situations.
Made some small efficiency improvements to file reading.
Made some changes to slightly reduce file system overhead during multi-file operations.
Fixed uncaught exception which would occur when cancelling privilege escalation while trying to save a file located in the Trash.
Improved results when using multi-word search terms in the Settings window. You can use wildcards now too, if you want.
Made a change to the behavior of "Open Selection", so that automatic filename extension selection doesn't occur if the thing that looks like a filename extension isn't actually known to the OS.
Made some efficiency improvements in the Markdown parser to improve performance on very large files (multiple megabytes).
The merch link in the about box goes directly to the merch site, rather than to a landing page.
Fixed non-blinking insertion point cursor in source control commit windows.
Improve handling of application-specific URLs and such items
dragged in from URL clipping (.inetloc
) files in projects.
Fixed bug in which multiple "additional edits" returned with language server completions were not applied correctly.
Xcode folder references (new in recent versions) are now properly loaded when enumerating the contents of an Xcode project.
Worked around FB16415546, which caused truncation of very large files (over 2GB on disk) when doing Add/Remove Line Numbers (and also Tidy operations).
Handle block comments and character escapes in Lisp files.
Made a change so that AppleScript execution, whether implicit (as in Startup Items or text factories) or explicit (via the Script menu or other UI invocation) will fail if the script file has been quarantined by macOS.
If a project contains references to any Finder saved searches, these will be evaluated when using the project as a multi-file search source.
When committing a submodule, the branch name in the navigation bar will reflect the name of the submodule branch being committed (rather than the branch of the enclosing repository).
Made a change to improve performance of the test used to enable the stash-related commands on the Git menu.
Saved application state includes cheat sheets, so these will reopen in their last-used locations across an application quit/relaunch.
Made a change to improve robustness of LSP interactions when the server exits unexpectedly; this should resolve reports of hanging during attempted completions.
Allow display paths in the Multi-File Search window to occupy as much width is available when the window is widened.
Corrected appearance of the icon in the "Recently Used Items" heading in the Open Recent submenu, when running in Dark Mode.
Made a change so that presence of certain Objective-C macros in a header file will improve the accuracy of guessing Objective-C/C++.
Fixed bug in which double-clicking on an item in the "Find Symbol in Workspace" panel did not dismiss the panel and select the corresponding item.
Worked around a bug in the macOS color panel in which the panel would send a spurious notification when closing the Settings window after changing a color setting's opacity. This in turn resulted in an unexpected color value being inserted in the active document.
Fixed bug in the PHP color scanner which would cause unexpected
selection effects when double-clicking on a word that occurred
after a __halt_compiler()
directive in the file.
Fixed bug in which starting to drag an item from an inactive list in the sidebar would move keyboard focus there, which often resulted in unexpected file selection behaviors.
Fixed spurious behavior of the "Collapse Folds Below Level" submenu.
Fixed internal exceptions and other misbehavior that would occur after deleting a customized AI chat API model that had been set for use as the default or referenced by existing worksheets.
Ensure that the selection range is properly in view when (re)opening a document which was soft wrapped to the window width.
Corrected misleading tooltips in the Grep search pattern cheat sheet.
Ensure that the selection range is properly in view when (re)opening a document which was soft wrapped to the window width.
Fixed bug in which changing a text color setting in the preferences didn't update the display of the list view in the Settings window.
Abbreviate (if necessary) the search string/pattern for "not found" multi-file search alerts, to avoid a macOS alert layout bug (FB8924294) that places the "OK" button offscreen.
Made some performance improvements to HTML document type
identification from strings in the <!DOCTYPE>
declaration.
Improved the logic which generates qualified file name displays in the sidebar for currently open documents.
Honor "Auto-expand tabs" for built-in formatting implemented by the language module.
fin