BBEdit 15.0 – Powerful text and HTML editor.

BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a plethora of features for editing, searching, and manipulation of text. BBEdit transforms text with high performance.

An intelligent interface provides easy access to BBEdit’s best of class features including grep pattern matching, search and replace across multiple files, function navigation and syntax coloring for numerous source code languages, FTP and SFTP open and save, AppleScript, Perl, and OS X Unix scripting support, glossary support, and a complete set of HTML tools.

Additions

BBEdit’s “project” feature gets a set of enhancements and changes, as follows:
A “Minimap” palette is available, on the Palettes submenu of the Window menu. The minimap shows a scaled-down view of the active text document.
There’s a new document type, “ChatGPT Worksheet”. This is created from File => New as with other document types, and provides an interface for conversational exchanges with ChatGPT.
New feature: Expandable “Cheat Sheets”. A cheat sheet is intended to be a quick “training wheels” reference for pieces of text that you can never quite remember how to type. The built-in examples are for Markdown and Clippings placeholders; but of course you can write your own.

Changes

We have reworked the interface for creating and editing Text Factories. Instead of an in-item popup menu, each step in the factory is created as needed by selecting an operation from the list on the left. (As a bonus, now you can see all of the available operations, each with a brief description.) This can be done by double-clicking on one, selecting one and using the “+” button at the bottom of the list, or by dragging the operation into an existing list.
The “Go to Line” panel (via the “Go” menu) operates similarly to the “Commands” panel, so as to work around limitations caused by the previous sheet presentation. It can be dragged around by clicking anywhere in the window (other than the text field); use Return or Enter to confirm, and Escape or Command-Period to dismiss.
Unsaved documents in the sidebar have a bullet indicator on the left side of the sidebar; this may be more visible in some cases than the highlighting of the “x” close widget.
The same indicator is used next to the document save date in the status bar, just below the text area.
Since output log files are autosaved, the “Run with Options” panel from the #! menu no longer provides an option for “Save after writing”.
The “Live Search” bar has been reworked. The presentation for Grep pattern validation matches that used elsewhere; and the search box is now allowed to be much wider.

Fixes

The language module used in the Git commit window no longer tries to color numbers.
Fixed bug in which Subversion commands would appear on the contextual menu when right-clicking files in a results list that were in a Git working copy.
Made a change to (significantly, in some cases) reduce the memory required to store symbol names read from ctags data files when used for syntax coloring.
Changes to improve performance significantly when closing a window containing a very large number of documents.
Fixed small memory leak which would occur when cancelling a file transfer connection in progress from the “Save to FTP/SFTP Server” command.
Made a change to improve performance when closing windows with very long lists in them (such as results lists).
Fixed bug in which dragging the window title bar proxy icon representing an untitled document into the sidebar of another window would have no effect.
Fixed formatting of line numbers in the “Go to Named Symbol” sheet.
Made changes to improve compatibility with the phpactor language server.
Some language servers use “${0}” as the terminal placeholder when generating completions; this does not appear to be documented anywhere, but is now recognized and handled appropriately.
Fixed bug in the Git revision picker and stash picker sheets in which the first item of the list was scrolled out of view.
Fixed bug in which backspacing over certain zero-width characters which were displayed as gremlins would not work correctly, when “Show Invisibles” was turned off.
Made a change so that the Git branch status navigation bar item doesn’t spend any time updating itself at application activation if it’s not visible.
Fixed bug in which the “Compare Arbitrary Revisions” sheet for Git was resizable horizontally, but not vertically (rather than the opposite); and horizontally resizing would mis-shape the tables.
When using a disk browser to explore a Zip or Tar archive (or a Zip- or tar-based archive format), view image files as intended rather than as raw data.
Made a change to resolve the 12003 error which would occur when attempting to apply a Grep match that hadn’t been calculated yet, usually by choosing “Replace” or “Replace & Find Again” subsequent to a multi-file search operation.
Updated the built-in list of PHP language keywords (and reserved words).
The Git “Push to Remote” panel now selects the active local branch in the branch list.
Fixed bug in the Git “Push to Remote” panel in which the “Add Upstream References” didn’t relocate correctly when resizing the window.
Fixed a bug in which using “Preview in BBEdit” on a document which didn’t support syntax coloring (such as “Text File” or “(none)”) would generate an empty preview.
Fixed bug in which “Revert” for an unsaved text factory document didn’t warn you that the operation could not be undone.
Made a fix so that unresolved file references from “Run AppleScript” and “Run Unix Script” operations in text factories are displayed and can be edited using the “Options” panel, rather than being reset and hidden.
Changed “a warning” to “an error” at an important point in the bbresults(1) man page.
Fixed bug in which the “Forget Item” button in the alert presented for a missing item chosen from the “Open Recent” menu would not always forget. (“Pepperidge Farm remembers…”)
Fixed bug in which the Open File by Name window did not always get the memo when a Git branch change was made, and would show stale search results (either by omitting files that were present after the branch change, or including files that were hidden by the branch change).
When using the “Remove” command to delete files from a Git repository, BBEdit will close the corresponding documents, if appropriate.
Made changes to the application-activation behavior of the command-line tools to conform with best-practices guidance when running on macOS 14.
Worked around a regression in macOS 14 which prevented the About window credits from displaying until the mouse passed over the text area.
Corrected coloring behavior of @escaping attribute in Swift source files.
Made corrections and improvements to the choice of icon drawn for Zip/tarball items in disk browser windows.
Fixed bug in which a couple of Search menu commands would behave strangely when applied to an editing window that was in full-screen mode with the Find window in front of it (but without focus, due to having clicked in the editing window).
The C-family language module treats ‘ as a digit separator, where appropriate.
Updated the Swift, Java, Ruby, Perl, and Pascal syntax coloring to handle underscore as a digit separator in number literals.
Reworked the internals and UI mechanics for progress in the Multi-File Search results window. This improves performance, and should resolve a sporadically reported crash. (There are also some minor appearance changes.)
Fixed bug in which Markdown hashtags at the beginning of a line were misparsed as headings.
Fixed crash caused by an invalid value returned from a language server in response to a completion request.
When creating a new file or folder in an instaproject, the newly created item gets selected in the Project list.
Pass the line/column number specifiers through when creating a note from the command line by piping something into bbedit –note.
Fixed bug in which the edit fields in the Find and Multi-File Search windows would inappropriately use typographer’s quotes when the global preference was turned on.
Fixed bug in which Control-C did not work as intended to cancel a pending worksheet operation when Emacs keyboard emulation was enabled.
When creating a new HTML5 document or changing character set markup, generate the empty tags as plain HTML rather than empty XML tags.
Made a change to reduce the creation of extraneous LSP log files for languages which did not have a server configured.
Work around OS misbehavior that would cause the application to hang while updating the Search menu, in the instance that one or more remembered multi-file search sources was on a remote file server that was unreachable.
Adjusted layout in the evaluation splash screen.
Made a change that might fix a layout problem in the “Go to Named Symbol” sheet.
Fixed bug in which a document with unsaved state (but no unsaved changes) would report an error when closing its window, in cases where the backing file had been deleted.
Indented heredoc/nowdoc terminators will no longer confuse fold generation in PHP files.
Fixed bug in embedded PHP scanning in which a PHP variable following the processing instruction without any intervening whitespace (e.g. =$foo?>) was not colored as expected.
Worked around macOS Sonoma misfeature in which date/time strings with meridian qualifiers generated from the “Insert” submenu commands and placeholder substitution would contain non-ASCII space characters.
Fixed bug in which the live-match status in the Find window didn’t update after performing a “Replace & Find” on the last match for the search string/pattern.
Zero-width Unicode formatting characters are (once again) displayed when “Show Invisibles” is turned on.
Fixed bug in which it was possible to turn off all three of the primary options for Zap Gremlins, at which point it did nothing.
Fixed bug in which Grep replacements using capture groups from patterns which employed K would not behave correctly.
Fixed bug in the Pattern Playground in which it would misreport the number of matches in Grep patterns which potentially reported a zero-length match.
Fixed bug in which HTML docstrings in Python that began with a backslash were not colored as HTML.
Worked around an OS misbehavior in which running an error report sheet over the Get Info popover would cause problems when dismissing the popover while the sheet was still up. (It was probably a bad idea, anyway.)
Fixed bug in which final after a struct/class typedef would confuse the C++ function scanner.
Made a change to work around unwanted Spaces behavior when invoking the completion, LSP symbol help, or LSP parameter help panels.
Fixed bug in which URLs which required percent-escape encoding for correctness as HTML attribute values did not issue a warning.
Fixed bug in which using the “Rename” button in the FTP browser info panel didn’t update the name in the listing until a manual refresh.
Improved reliability of Unix worksheet process cancellation (via Ctl-C or the “x” widget in the status display).
Made a change to improve CPU efficiency in Unix worksheets.
Saving a document opened from an FTP/SFTP server will update its modification date in the applicable FTP browser listing.
Fixed bug in horizontal scrollbar calibration on files with extremely long lines.
Corrected behavior of PHP function scanning when used with unionized function return types.
Made a change so that ODB editor suite clients who ask the application to open a file that was previously opened with an ODB request (using the same callback signature and token data) will get save and close notifications only once per event, rather than once per time the open request was sent.
Made a change to the layout for lists to improve inter-row spacing when using larger list font sizes (as set in the Appearance preferences).
Markers are saved with document state, and so making a change to the markers for a document will no longer mark it as having unsaved changes.
HTML5 documents will generate folds for unrecognized elements, as long as they are properly balanced tag pairs.
Fixed bug in application state restoration in which a document with recovered unsaved changes would end up as the selected document in a multi-document window, even if some other saved document had been the selected document when the application was quit.
After performing certain whole-file transformations (such as “Replace All”) on documents being compared, recompute the differences in any Differences windows displaying those documents. This corrects consistency errors that can arise from the transformation.
Improved the accuracy of language guessing for #! lines (particularly in versioned Python references).
Fixed crash which would occur during automated system appearance changes (usually across a sleep/wake boundary) after having used the “Text Colors” preferences (whether the Preferences window was still open, or not).
When reopening palette windows at startup, the windows are no longer given keyboard focus, since that generally is not useful.

Full changelog available here.

Download Now]]>