BBEdit Changelog

What's new in BBEdit 15.0.3

Apr 10, 2024
  • Fixes:
  • Fixed bug in which line comments at the end of the file in R and Unix Shell Script source files weren't colored as such unless the file ended with a line break.
  • Worked around macOS 14 misbehavior which prevented the application from activating when invoked by bbdiff --wait.
  • Fixed bug in which closing the active document didn't always select the next eligible document, leaving a "No Editor" placeholder.
  • Made some changes to improve performance when opening the "related files" (counterparts) navigation bar menu when the directory containing the document had a lot of other files in it.
  • Reverted the 15.0.2 change to default-tag-formatting behavior of the HTML pretty printer, which ended up causing more problems than it solved.
  • Fixed 15.0.2 regression which would cause a hang while making certain edits with the minimap open.
  • Fix a bug that caused the Minimap to highlight both the current and previous lines when the insertion point is at the start of a line.
  • Made a change in the minimap so that punctuation isn't greeked, which helps improve visualization.
  • "Compare Two Front Windows" will no longer report an error if either (or both) documents is a (shell or ChatGPT) worksheet.
  • Worked around a suspected compiler regression which caused typographer's quotes insertion to malfunction.
  • Worked around a misbehavior in the macOS security system which would cause spurious "“BBEdit.app” was prevented from modifying apps on your Mac" warnings when opening SDK headers (or other files inside application bundles) when starting the application or using "Open File by Name".

New in BBEdit 15.0.2 (Mar 19, 2024)

  • Changes:
  • When double-clicking on a variable in PHP code, the entire variable name is selected, including the delimiter. If desired, the previous behavior can be restored with an expert preference: defaults write com.barebones.bbedit DoubleClickSelectsVariables_PHP -bool NO
  • Fixes:
  • Worked around unexpected macOS behavior in which "Bring All to Front" would cause the front window to become inactive.
  • Fixed bug in which the Lua language module didn't correctly handle strings which used z to escape interstitial whitespace and line breaks.
  • Added the function keyword to the Lua keyword list.
  • AX: corrected tab order in the cursor position display popover.
  • AX: corrected accessibility title of the cursor position display, so that it reports the current cursor position (line and column).
  • AX: Corrected labeling in the Pattern Playground window for improved VoiceOver annotation.
  • AX: Set an accessible label for the #! (shebang) menu, so that VoiceOver narrates something halfway useful.
  • Fixed bug in which Search menu commands weren't targeted correctly when the Live Search view was open and focused.
  • Adjusted the configuration for Solargraph (the default Ruby language server) to request diagnostics from the server.
  • Automatic workspace detection will recognize .solargraph.yml as a Ruby project workspace root, in the absence of a Rakefile.
  • Moved the "AIWorksheetStripQuotesWhenCopying" over to expert preferences so that it appears in the list there.
  • "Open Selection" will remove quotes and surrounding a selected text before attempting to use the selection to locate a file.
  • Made a change to the Grep search mechanics so that they will copy the text of captured ranges immediately when a match is found during an interactive search. This ensures correctness of substitutions in case the document is edited between when the search is made and when the replacement is applied.
  • Changes to guard against stale cursor display when switching between preference panes.
  • AX: When VoiceOver is active, "Balance while Typing" will no longer manipulate the selection range when you type a closing delimiter, and the FlashBalancePointsWhenNavigating expert preference (which is on by default) does not do so. This resolves confusing narration behavior in typing and right-arrow keyboard navigation over balanceable delimiters.
  • Fixed crash which would occur when opening the Find or Multi-File Search windows with the Jump Points palette open.
  • Fixed bug in which the source summary in a new text factory didn't update as sources were changed.
  • Modified the description of the "Process Lines Containing" text factory operation to avoid using the word "Copy", which might be taken to imply a clipboard operation where none exists.
  • Added :first-child to the list of CSS functions, thus correcting its color.
  • Fixed bug in which manual path entry in the working copy chooser (for git and svn) didn't actually update the selected path.
  • If an error occurs while fetching Subversion revisions for the menu in the navigation bar, avoid bringing up the Subversion log at that point (which only interrupts the process and misdirects the comparison if an item gets chosen).
  • Fixed a crash which would occur when certain file system changes took place while a disk browser was open and displaying items from the affected directory(ies).
  • Fixed -50 error which would occur when using the "Append to BBEdit Scratchpad" service and the application was not running, and the "Scratchpad" document was the only document left open when previously quitting the application.
  • Corrected syntax checker reporting for use of in attribute in HTML5 documents.
  • Fixed crash which would occur when using Ctl-C with Emacs keyboard emulation and the status window enabled.
  • Made a change to prevent misbehavior when enumerating a project and the same directory appeared multiple times at the top level.
  • AX: VO-M works when focus is in the sidebar, to open the contextual menu.
  • Fixed error reported when trying to run a text factory containing a "Normalize Spaces" step.
  • Fixed bug in which Markdown images and links with empty descriptions (or alt text) weren't colored.
  • Fixed crash which would occur when using the Functions palette with certain languages, and a callout appeared at the very beginning of the file.
  • Fixed bug in which leaving the path field blank when connecting in an FTP/SFTP panel would cause BBEdit to attempt to change the working directory to "/", rather than the default login directory (whether $HOME or otherwise).
  • Fixed bug in which changing the media type setting in a live preview window didn't tell the web view, so there was no visible difference in documents with applicable @media CSS directives.
  • Fixed bug in which the commands after "Lorem Ipsum" on the Edit/Insert menu weren't available in Free Mode.
  • Added a couple of missing entries to the default format profile; and when pretty printing an HTML5 file, any elements missing from the profile are treated similarly to .
  • Made a change so that "endless" Ruby methods don't confuse the function scanner.
  • Fixed garbage text that would sometimes occur when using Replace All via AppleScript on a subset of the document's text.
  • Fixed a memory leak when parsing Markdown documentation returned by language servers for display in the completion and parameter/symbol help panels.
  • Fixed bug in which choosing "Other" from the text encoding menu in the status bar would present the encoding panel twice.
  • Fixed regression in which opening the Find window (after it had previously been closed) did not place it in the Space containing the active document window.
  • Fixed bug in which Tab-key navigation in the fields of the project settings view cycled through the fields in the wrong order.

New in BBEdit 15.0.1 (Feb 5, 2024)

  • Changes:
  • When copying text from a ChatGPT worksheet, BBEdit will remove leading Markdown quotes from quoted responses. This is done only for non-rectangular selections when the worksheet's language is set to "Markdown", and when the selected range of text starts in a quoted section.
  • If desired, this behavior can be suppressed with an expert preference: defaults write com.barebones.bbedit AIWorksheetStripQuotesWhenCopying -bool NO
  • The ChatGPT worksheet preferences add a provision for entering the API key. (The worksheet itself will still prompt for the API key the first time you send a query, if necessary.)
  • The worksheet "Send Command" worksheet is available now as an explicit command on the Edit menu. If you are confused by the distinctions between the Return and Enter keys, and using the factory default keyboard equivalent (ctl-Return or Enter) for "Send Command" doesn't work for you, this may help.
  • Fixes:
  • Fixed bug in which local HTML data piped to bbedit --preview generated a blank Preview in BBEdit window.
  • Made a change to work around a macOS security behavior that would cause the OS to "touch" files in certain locations when opened.
  • Fixed internal exception (and subsequent crash) which would occur when using the LSP "Find Symbol in Workspace" command from the contextual menu.
  • Fixed bug in which the "Cut Line" and "Copy Line" commands got executed twice when invoking the menu command (or keyboard equivalent).
  • Removed the "Python Default Interpreter" setting from the list in the Expert Preferences, because there's an explicit GUI setting for it already (via the custom settings list in the Languages preferences).
  • Fixed bug in which the link addressing mode setting was not properly saved and restored when loading a project. In benign cases this led to problems setting the indicators correctly; in some cases this caused a runtime exception.
  • Fixed crash which would occur when updating the navigation UI while displaying notes with certain titles.
  • Fixed bug in which starting to drag a text factory operation from the list would mark the document as having unsaved changes, even if the drag was abandoned.
  • Fixed bug in which using "Move to New Window" or "Open in Additional Window" for a text factory document would result in an empty list of operations in the resulting window. (The document was not actually modified, but it looked like it had been.)
  • Fixed bug in which the Replace cheat sheet button in the Multi-File Search window displayed the same keyboard equivalent as the Grep cheat sheet button; and (coincidentally) neither Replace cheat sheet button responded to a configured keyboard equivalent.
  • Corrected appearance of the close widgets in the Windows palette when using dark mode.
  • Worked around WebKit bug on macOS 14 (FB13534686) which would cause a crash when closing a "Preview in BBEdit" window while the web inspector was open in the window.
  • Fixed crash which would occur when the C-family language scanner was (ab)used with log files.
  • Fixed regression in which file filters which tested the Finder lock or a file's visibility status would erroneously report an error and fail to match eligible files.
  • Corrected out-of-date information in the help book, and added a section for ChatGPT worksheets.
  • Fixed bug which prevented the automatic creation of a new document when making the application active via the Dock (subject to the preference setting).
  • Corrected the minimum width of the minimap window, so that clicking the green zoom button behaves predictably.
  • Fixed bug in which multi-file "Extract" operations didn't perform Grep replace pattern substitutions correctly.
  • Fixed bug in which certain malformations in syntax-colored documents (as might happen while editing) would cause the minimap to hang or crash when updating, either during editing or across a switch to such a document.
  • Relaxed the stricture on Markdown underscore recognition to allow line breaks and punctuation to precede an underscore.
  • Fixed bug in which clicking in the "Chat Worksheet" item in a project's "Worksheets and Scratchpads" section did not select it, as was intended.
  • Addressed a performance regression with CJKV input.
  • Fixed regression in which Extract skipped immediately adjacent pattern matches.
  • Fixed bug in the Lisp scanner in which it didn't correctly handle backslash-escaped double quotes.
  • Fixed bug in which BBEDIT_PROJECT_WORKSPACE_ROOT was not set as intended when running #! scripts with a project open.
  • AX: opening the contextual menu via VO+Shift+M should now operate as desired.
  • AX: corrected accessibility labeling of the search and replace fields in the Find and Multi-File Search windows.
  • AX: added labels to elements in the Pattern Playground window.
  • Cleaned up the tab order in the various panes of the Preferences window.
  • When reducing the magnification setting, reduce the font size of the line number display as appropriate. (At a certain point they become illegibly small, and using the Minimap is probably a better option.)
  • Fixed crash during site deployment.
  • Fixed bug in which the -w/--warnings-default option for bbresults(1) generated errors rather than warnings.
  • Corrected appearance of text in edit fields in "Run Unix Command" and some other panels when using a dark system appearance.
  • Untitled documents created "clean" by "Run Unix Command" and other operations are eligible for crash recovery and will be reopened when the application is restarted, if they were open when the application was quit.
  • Fixed internal exception which would occur when closing an instaproject after the folder behind it had been deleted, and one or more language servers were running.
  • Fixed bug in which the block cursor was invisible on empty lines.
  • Fixed bug in which the minimap did not render spaces correctly.
  • Fixed intermittent crash when using the contextual menu in results windows.
  • Made a change to LSP workspace detection so that it never returns the current user's home directory as a workspace root. (Most servers can't handle this, and they try to scan the entire home directory, which in turn trips file access alarms and OS permissions errors.)
  • When restoring selected locations for Multi-File Search and other operations, BBEdit will not ask the OS to remount unmounted volumes. This resolves semi-infinite OS stalls when the location is on an unmounted remote file server.
  • Fixed bug in which the "Remove Line Breaks" text factory operation was incorrectly flagged as requiring configuration, which prevented factories that used it from running.
  • Fixed bug in the "Text Merge" panel, in which the path button to the left of the entry field didn't open a file panel as intended.
  • Made a change so that when reopening a project with no documents open in it, the "No Editor" placeholder is visible rather than the project settings.
  • Adjusted entitlements in the app store build to improve discovery of command-line tools installed by Homebrew.
  • Fixed error when opening an FTP/SFTP URL using the "Open Recent" panel. (And corrected the display of such in the list.)

New in BBEdit 15.0 (Jan 10, 2024)

  • Additions:
  • BBEdit's "project" feature gets a set of enhancements and changes, as follows.
  • A project document on disk has a top-level item in the list which reflects the project itself; all other items in the project are subordinate.
  • Clicking on the project item display configuration and settings for the project itself.
  • The "Workspace" settings are for specifying which directory represents the root of the workspace; that is, the directory containing all of the files which are functionally important to the project.
  • This concept is (intentionally) vague, since the notion of a workspace's functional root may vary depending on what the project is. For example, a software project for macOS might use the directory containing the Xcode project document; or a Node.js development project root would be determined by the location of its package.json file.
  • If you set a project's workspace root to "Automatic", BBEdit will guess the workspace root based on various rules (which are intentionally undocumented because they are subject to change). In the simplest case, if the project has only one item at the top level, and it's a directory, then that directory is assumed to be the project's root. If the project has multiple top-level directories, then their common ancestor (if any) is the workspace root.
  • If you need more flexibility, or if the "Automatic" setting does not select the appropriate workspace root, you can select an explicit root directory. This does not have to be a directory in the project; it can be anywhere.
  • The workspace root setting (whether automatic or explicit) is also relevant to BBEdit's Git support, and to its Language Protocol Server support.
  • If the workspace root contains a Git working copy, BBEdit will use the workspace root as the working directory for commands on the Git menu. Otherwise, BBEdit will attempt to locate the nearest ancestor which contains a Git working copy, and use that instead.
  • BBEdit will also relay the project's workspace root (along with the workspace roots of any other open projects) to any running language servers, as long as they advertise support for workspaces. (Not all of them do.) In language servers that support it, providing the project's workspace will improve the completeness and accuracy of code completion and other features which rely on LSP-based code indexing.
  • When running a Unix script via the #! menu or during clipping insertion, if the active document is in an open project, BBEdit will set the BB_DOC_WORKSPACE_ROOT environment variable to the project's configured workspace root.
  • The "Web Site Settings" provide configuration for projects which rely on BBEdit's built-in HTML markup and static site generation tools. (These settings replace the "Site Settings" panel used in previous versions.)
  • The Web Site settings view also includes new controls for HTML syntax and link checking options; these are useful for controlling the respective checking behaviors on a per-project basis.
  • The directory path buttons in the project settings present a list of candidate directories, including the project's workspace root any explicit top-level folder items, as well as an "Other" command to choose an arbitrary directory.
  • The old "Site Settings" command on the sidebar "cloud" menu in project documents is renamed to "Project Settings", and selects the settings pane rather than bringing up a modal panel.
  • 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.
  • Clicking or dragging in the minimap makes a corresponding selection change in the active text document; and likewise, changing the selection in the active document will update the displayed selection change in the minimap.
  • (For greater visibility, an empty selection range in the active document is shown as a highlighted bar across the minimap.)
  • The minimap will also highlight (using the Page Guide color) the range of text currently visible in the active document. Scrolling the active document will move the highlighting in the minimap.
  • 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.
  • In order to use this feature, you will need a ChatGPT account, and an API key.
  • If you already have an account, you can generate an API key here: https://platform.openai.com/account/api-keys.
  • If you need an account, start here: https://chat.openai.com/auth/login.
  • Please note that we cannot provide account or technical support for ChatGPT or other OpenAI products.
  • Note that use of the ChatGPT API is not free, but it's not terribly expensive, either. We're not collecting any money from this feature.
  • The first time you send a query to ChatGPT, BBEdit will prompt you to provide your API key. It's a shared secret, so BBEdit will store it securely in the macOS keychain.
  • If your ChatGPT API usage requires an organization ID, use the following expert preference to set it: defaults write com.barebones.bbedit ChatGPTOrganizationID -string ""
  • Use an empty string or delete the setting to omit the organization ID from API requests.
  • ChatGPT worksheets work similarly to a shell worksheet: type something in, and press the Enter key to send it to ChatGPT. (You can also use the "Send Command" keyboard equivalent, as set in the "Worksheets" section of BBEdit's "Menus & Shortcuts" preferences. The default for this command is Control-Return.) After some period of time, you'll receive a response which BBEdit will insert into the document window.
  • If you wish to cancel your request before the response arrives, Command-period or Control-C will do that.
  • Responses from ChatGPT are automatically quoted, as long as the worksheet's language is set to "Markdown". If you change the worksheet's language, this quoting will not occur.
  • (Since worksheets are Markdown, you can use "Preview in BBEdit" on a worksheet to visualize it.)
  • Because chats depend heavily on history, a worksheet saves your prompts and the server's responses. Thus, the document size will grow over time and context is preserved, even if you delete previous prompts and responses from the text area.
  • The "ChatGPT Worksheets" preferences can be used to set the default model. There's a predefined list, but the model is specified in an edit field so you can write in your own model if it's not listed. Choosing a nonexistent or unsupported model may result in unexpected behavior.
  • You can change a worksheet's model on the fly via the status item below the text area.
  • Saved project documents on disk get an additional item in the "Worksheets & Scratchpad" section for a project-specific ChatGPT worksheet.
  • Privacy statement: All queries and responses sent between BBEdit worksheets and the ChatGPT API are transmitted securely, and directly between BBEdit and the API endpoint. Bare Bones Software does not receive or retain any data transmitted thereby. Your conversations with the API service are governed by the API service provider’s own privacy and content policies.
  • 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.
  • To make a cheat sheet available in BBEdit, place it in the "Cheat Sheets" support folder.
  • To use a cheat sheet, choose it from the "Cheat Sheets" submenu of the Window menu. This will open a floating window which displays the contents of the cheat sheet. The left-hand column shows the text of the "cheat", and the right-hand column shows a brief description.
  • Double-clicking on the item in the cheat sheet will insert it into the active text document, if there is one. You can also drag the item from the cheat sheet to wherever you'd like to insert it.
  • When inserting the item from the cheat sheet, BBEdit will expand any Clippings placeholders present in the text, if the cheat sheet author specified that this should be done. Otherwise, the text is inserted literally. (For example, items in the Clippings cheat sheet itself are inserted literally, to speed the process of authoring clippings.)
  • Cheat sheets may display a preview of the text that will be inserted, along with the full text of the description (which is helpful if it is long). The Clippings cheat sheet does this as well.
  • The "Text Merge" command on the Text menu provides a new way to transform text in files, by employing a file containing a Grep search and replace pattern along with a table of substitution values.
  • Each match of the search pattern is processed using the replace pattern, and the table of substitution values is used to provide substitutions for each respective capture group reference in the replacement.
  • The Git menu gets commands to push and pull the current branch to/from its remote.
  • The contextual menu for Git items in projects and results windows gets a "Discard Changes" command.
  • When choosing the "Open Recent" item on the File menu (directly), rather than anything off the submenu, BBEdit will open a panel listing all recent items and currently open documents. You can use the search field at the top to filter the results and find the desired item. (You can also select and open multiple items in the list, if desired.)
  • The items in the Open Recent panel are sorted in the same order as they appear on the menu. If this confuses you, the search box is your friend.
  • There is a corresponding entry in the "Menus & Shortcuts" preferences, so you can assign a keyboard equivalent if desired.
  • If there is a historical backups folder present, the "Text Files" preferences will compute the space used by the files therein, and display the total. Additionally, a button is present which will open the historical backups folder in the Finder. (This folder is also available as the "Document Backups" item on the Folders submenu of the application menu, as well as in the Folders panel of the Setup window.)
  • When "Grep" is turned on in the Find and Multi-File Search windows, BBEdit will validate the pattern as you edit it. An indicator button will display the validation status of the pattern; you can click on it for information about the specific error.
  • Added command to the View menu: Re-Center Selection. This performs the same operation as the Emacs "recenter" command (Control-l), and scrolls the line containing the insertion point to the center of the view area (or as close to it as possible). If the selection range is non-empty and longer than the visible area, choosing the command repeatedly will alternate between centering the start and end of the selection range.
  • The connection panel in FTP/SFTP browser windows (and "Save to FTP/SFTP Server") supports choosing an identity file (SSH private key) for SFTP connections only. If you're using a service that requires this, it's simpler than modifying ~/.ssh/config (although that is an option too, still).
  • If you enable "Use SSH Identity" and choose a file, BBEdit will show a warning indicator next to the file's path if the file's permissions are not 0600 (readable by owner only). That's because SSH will refuse to use the private key file if its permissions are not 0600.
  • If you subsequently move or delete the identity file, BBEdit will show a warning indicator next to the file's path if it's not found.
  • The navigation bar for text documents includes an item which lists recent SCM revisions (git and/or Subversion) as well as recent file system recorded versions of the file. This can be used as a shortcut to compare a file against a recent revision.
  • Each group of revisions (if applicable) displays the six most recent versions; if there are more then there will be a command which presents an interface for choosing from the entire list.
  • Revisions are listed in reverse chronological order, so that the most recent ones are at the top of the list.
  • The Sidebar preferences have a setting: "Allow keyboard focus in sidebar lists". When this is turned on (as it is by default, or if you previously used the expert preference), the sidebar lists in projects, and multi-document windows can acquire keyboard focus (by clicking or tabbing into them), and then conventional keyboard navigation gestures will change the selection.
  • With this change, sidebar behavior is changed somewhat (tl;dr: it's like Xcode).
  • the selection highlighting reflects whether or not the sidebar has keyboard focus; the background always reflects the activation state of the window.
  • When you click in the side bar to select something, keyboard focus goes there (assuming the preference in "Sidebar" is turned on, as it is by default now). Any single click will select a new file, but does not move keyboard focus to the text view. You can double-click on an item, press Return/Enter, or use the Tab key to move keyboard focus as desired.
  • Differences windows gain keyboard navigation in the sidebar, which was not previously possible.
  • The FTP/SFTP browser window list font size follows the "List display font size" appearance preference setting.
  • The various list-based palettes (Scripts, Text Filters, Clippings, Jump Points, Markers, and Functions) will use the "List Font Size" appearance preference to determine the font size of their list content.
  • To validate a codeless language module, open it and choose "Check Syntax" from the #! menu. This is the same check that is done when loading the module at startup, and will report anything untoward.
  • The "Expert Preferences" section of the Preferences window lists available expert preferences (which can be manipulated from the command line), their current values, and their default values. Preferences which have been changed appear in boldface in the list. You can use the search box to filter the list by name.
  • Selecting one or more items from the list of expert preferences will enable the "Copy" command on the Edit menu. Choosing this command will copy formatted "defaults write" commands to the clipboard; they can then be pasted into a shell worksheet or a Terminal window for editing and execution. (The copied commands will reflect the default values for the respective preferences.)
  • You can choose your desired insertion point cursor style in the Editing preferences; the options are "Vertical bar" (the default, for all right-thinking Mac users); Block; and Underline. (Note that if you use the Underline cursor, we recommend that you change the style for "Display instances of selected text" to "Highlight".)
  • The "Default page" setting in the "General" section of a project's site settings can accept a comma-separated list of default file names. Thus, if you want both "index.html" and "index.php" to be recognized as default page targets when checking links, you would enter "index.html, index.php" in that field. (This is just an example; both of those will be recognized by default.)
  • "Save a Copy" is enabled for live HTML preview windows; thus you can save a copy of the rendered HTML of a document being previewed. (This can be useful in cases where the HTML was generated by a Markdown renderer or preview filter.)
  • Added a keyboard equivalent assignment for the Cursor Position status bar item; you can use this to bring up the alternative "Go to Line" interface (i.e. use Command-J to use this as an alternative for the "Line Number" command on the Go menu).
  • New text transform: "Normalize Spaces". When used from the Text menu, scripting interface, or text factory, this transforms turns printable nonbreaking spaces into ASCII “space” characters. This is useful for cleaning up text copied from web pages, which is frequently rendered using nonbreaking spaces of various sorts.
  • The "Process Duplicate Lines" command gets a new output option: "Keep matched lines sorted". This does pretty much what it says; in the output of any remaining lines, the lines will be sorted according to the various sorting/matching criteria specified elsewhere in the options. This can be useful for saving a step in cases where the existing order of the input lines is not important, and you need for the de-duplicated lines to be sorted in order.
  • Added "Remove Line Breaks" as an available option for text factories (and "Apply Text Transform"), as well as via the AppleScript interface (as "unwrap") for processing arbitrary text not in a document.
  • The "Insert" submenu of the Edit menu has been rearranged a bit, and gains some new items. Sharp-eyed readers may recognize the additional items as being derived directly from Clippings placeholders.
  • The CSS media type control makes a triumphant return to the live preview window's navigation bar.
  • Added an entry to the application properties so that BBEdit appears as an eligible application to open EPUB containers.
  • Fixed bug in which pasting multi-line text into the "Set Marker" panel (and other commands which used the same "enter a string" UI mechanics) did not behave as intended.
  • Single-file Find All, Extract, and Replace All operations display determinate progress; though if you ever see the progress panel, you are probably doing some seriously heavy lifting.
  • "Restore Defaults" in the Preferences window will, when appropriate, show displayable names for the preferences whose values will be reset. This includes expert preferences.
  • Added window-modal progress for Git "Show Blame" and "Show Revision History" (each of which is likely to take a nontrivial amount of time).
  • The "Copy" command is enabled when there is a selection in the FTP/SFTP browser window; choosing it will copy the URL(s) of the selected item(s) in the browser window.
  • Added "Commit" to the contextual menu for Git commands in sidebars and results lists.
  • "Compare Against Disk File" is available in the sidebar contextual menu as well as the file revisions navigation bar item, when appropriate (for file-backed text documents with unsaved changes).
  • The "Run Unix Command" panel gets a button to save a script (or filter, depending on the selected output option) directly into BBEdit's "Text Filters" or "Scripts" support folder. (Or anywhere else you like, but those are the locations of immediate relevance.)
  • Added "Run Unix Command" to the list of available operations in text factories. This functions similarly to "Run Unix Script", but the script text is stored within the factory itself, which makes the factory more portable.
  • Instaprojects (created by opening a folder) will remember their position and properties, keyed by the folder location.
  • The SGML/HTML syntax checker and the link checker will now check for the use of explicit file:// URLs as attribute values. These are problematic because they're nonportable and many web browsers will refuse to render them even locally, for security reasons.
  • "Check Links" will now warn of explicit file:// URLs; projects have a setting to control this behavior when using "Check Site Links". (It is on by default.)
  • The bbedit command-line tool gets a new argument: --preview. You can use this to open a preview on an existing file, remote URL, or pipe data without opening a document. (verb. sap: BBEdit is still not a web browser.)
  • A use case for this might be to use BBEdit as a rendering endpoint for a workflow that generates HTML output (such as pandoc).
  • Document state storage (selection range, folds, markers, etc) is now applied for documents opened via the built-in FTP/SFTP support.
  • 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.
  • If for some reason you want to reset the "untitled document" counting number, run this command in Terminal: defaults write com.barebones.bbedit ResetUntitledDocumentsCountAtNextStartup -bool YES
  • This will take effect the next time you start the application.
  • Added "Cut Line", "Cut Line & Append", "Copy Line", and "Copy Line & Append" to the Edit menu, as modifiers of Cut/Copy. (The factory defaults are Control for the non-append versions, and Control-Shift for the append versions.) These can be used to perform the respective operations on a line without needing to select it.
  • "Push to Remote" on the Git menu now lists only the local branches, which should make it a little simpler to use.
  • Made a change so that file uploads by saving a document via the built-in FTP/SFTP support are "safe" by default: the file is uploaded to a temporary file in the destination directory. Once that is successful, the existing copy (if any) is deleted, and the temporary upload file is renamed. This adds a measure of protection against various things that can go wrong during file uploads, but there is no substitute for keeping both your local files and the remote server backed up. NB: file uploads during site deployment are not "safe" in this fashion; these work the same as before.
  • This version includes numerous internal and architecture changes to improve application accessibility; this includes compatibility with VoiceOver, Full Keyboard Access, and external applications which use the system accessibility mechanisms to control the application. (If you use an application of this sort and it is not compatible with BBEdit, please contact the application's developer for assistance; we will be happy to work with them to ensure the best possible experience.)
  • When choosing a Git working-copy command, the application will try to figure out what the working copy is from context, and if so will spare the extra step of prompting.
  • Prettied up the presentation of folder-qualified items in the "Search" menu (Find in Project, Find in Disk Browser, and so forth).
  • Removed the "sandboxed" annotation from the About window, since it doesn't add any information. (All versions of BBEdit since 12.6 are sandboxed.)
  • Made a change so that the "Keep historical backups" preference (Text Files) is the default behavior when backups are turned on.
  • Made a change to nominally improve search performance in multi-file search/replace operations involving complicated Grep patterns.
  • Results in the Open File by Name window have their names annotated with Finder tags, if any. This replaces the previous coloring of the icon.
  • The file name in the Info panel is enabled for FTP/SFTP items so that it is selectable and copyable. (It remains non-editable, intentionally.)
  • Updated the style of the "Enable All" and "Disable All" buttons in the Text Encoding preferences pane.
  • On the context menu in text views, choosing the "head" item for the "Definitions" and "References" submenus functions the same as choosing "Show All" from the submenu. (This makes life easier in cases where the submenu is long enough that "Show All" is not easily reachable.)
  • Turning on the "{Sort,Match} using pattern" option for Sort Lines and Process Duplicate Lines (respectively) will place keyboard focus into the pattern editor field.
  • Changes to the "Check Out Branch" panel.
  • list only local branches
  • select the active branch in the branch list
  • Made a change so that COMMIT_EDITMSG and MERGE_MSG files are assumed to be Git commit message files, without requiring them to be explicitly mapped. Such files will get the correct coloring when using BBEdit as a Git commit editor.
  • For language module developers: BBLMParamBlock.fDocumentLocation is non-NIL when guessing for a file. This is not a substitute for explicitly listing files (or wildcards) in BBLMFileNamesToMatch, but may be useful in cases where knowing a file's name or location on disk may assist the guesswork.
  • For language module developers: languages which do not generate their own runs for numbers can support recognition of number separators by adding a BBLMDigitSeparator key to the language properties. This is a string, and should be one character long (but if it's longer, the language module police won't come to your house).
  • Made changes so that the user manual download from the Help menu is modeless, allowing use of the application to continue while the download is in progress.
  • The progress display for multi-file search processes has an updated appearance.
  • Updated the iconography in the Differences window list toolbar and the Preview in BBEdit toolbar.
  • Changed "Shell Worksheets" to "Worksheets" in the Menus & Shortcuts preferences, since the command binding there applies to ChatGPT worksheets as well.
  • Made a change to the Markdown color scanner, so that underscores that aren't immediately preceded by a whitespace character don't trigger coloring of an emphasized range. (This is not strictly in the letter of the Markdown specification, but is consistent with common usage.)
  • Edit => Insert => Folder Listing is somewhat faster than before, and runs window-modally.
  • Untitled documents created with the "New HTML Document" command are no longer marked as modified initially.
  • Reworked the Text Colors preferences; all of the settings are now in the list. This cleans up the layout and makes room for future expansion.
  • Corrected some layout issues in the Appearance preferences pane.
  • Did some minor rearranging in the Sidebar preferences pane.
  • Document icons in the sidebar list are scaled with the text size.
  • 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. ) 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.

New in BBEdit 14.6.9 (Nov 8, 2023)

  • Fixes:
  • Fixed regression in which the recent-item buttons didn't work correctly in the Find Differences window as well as in the modal dialogs used for processing folders in the markup tools.
  • Fixed regression in which some commands which should have been present on the contextual menu for instaprojects were not available.

New in BBEdit 14.6.8 (Oct 26, 2023)

  • Fixes:
  • 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 backspacing over certain zero-width characters which were displayed as gremlins would not work correctly, when "Show Invisibles" was turned off.
  • For SSH connections, suppress any LocalCommand config directives, which will cause a login failure because sftp does not like things on standard output which are not protocol data.
  • 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 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).
  • Worked around a regression in macOS 14 which prevented the About window credits from displaying until the mouse passed over the text area.
  • Restore the pre-14.6 behavior of unconditionally displaying U+00AD (SOFT HYPHEN) characters. While not technically correct, it's (at the moment) better than the alternatives currently available.
  • Added default settings to work around the failure of ruby-lsp and deno language servers to quit correctly when asked.
  • Fixed bug in which some project-specific commands were inappropriately added to the contextual menu for instaprojects.
  • Fixed bug in which trying to create a new note from the selection in a text document would report a -50 error if the default notebook didn't exist (or was in use by another computer).
  • Worked around macOS 14 bug (FB13224680) which caused tick marks to be drawn in the wrong place in scrollbars.
  • Fixed bug in which the last item in the Grep cheat sheet was present in the Find window, but absent everywhere else (such as the Pattern Playground window).
  • Made a change to work around a bug in macOS 14 that can cause the application to crash at launch when remotely loaded fonts are in use.
  • Fixed bug in which the LSP request processor would log an erroneous "unrecognized/unsupported" message for most requests that had in fact been handled.
  • (NB: when "Request verbose tracing" is turned on for a language server, this will also turn on expanded logging from BBEdit itself.)
  • Fixed bug in which changing the font setting in Editor Defaults to a different style font in the same font family (e.g. Menlo Bold to Menlo Bold Italic) did not always change the display font in the editing window.

New in BBEdit 14.6.7 (Aug 23, 2023)

  • Fixes:
  • Fixed crash which would occur when processing plain-text LSP completion documentation when running on macOS 11 or earlier.
  • Corrected appearance of text in the license panel when Dark Mode is in effect.
  • 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 (as is the case for any document not in a Git repository).
  • Fixed bug in which "Remove Comments" would delete the last character of the document when performed with no selection range; this created a problem if the document ended with a closing element not followed by whitespace or a line break.
  • Improve legibility of provisional inline input (such as combining accents) when in dark mode.
  • Fixed bug in which the live match count in the Find window did not correctly update after a "Replace" operation (including "Replace All" and "Replace & Find").
  • Fixed bug in which clicking on a line in the results list after "Find All" would beep, in cases where the search text specified a color.
  • Quieted errors reported from use of the allow attribute in HTML5 iframe elements.
  • Fixed bug in which Zip archives written out of order (with files appearing in the archive before their parent directory) were not read correctly.
  • Fixed stall which would occur when running certain script processes from the "Commands" panel (but worked OK when run directly from the Scripts menu; go figure).
  • Made a change to invalidate the Open File by Name directory cache more aggressively in some situations (such as when switching a Git branch), which will improve the accuracy of searching in the wake of such events.
  • Fixed crash which would occur when opening a document from a Zip archive while running on certain versions of macOS.
  • If for some reason you want non-ASCII Unicode spaces to be visible all the time when "Show Invisibles" is turned on, and not only when "Show Spaces" is also turned on, you can use the following expert preference to accomplish this:
  • defaults write com.barebones.bbedit OnlyShowInvisibleUnicodeSpacesWhenShowSpacesIsTurnedOn -bool NO
  • Fixed bug in Unix Shell Script syntax coloring in which a # inside of a bracket pair inside of a parenthesis within a string would cause confusion.
  • Fixed bug in which case-sensitive link checking did not report case mismatches. (This is enabled by turning on the HTMLLinkChecker_WarnIncorrectPathnameCase expert preference.)

New in BBEdit 14.6.6 (May 24, 2023)

  • Fixes:
  • Fixed bug in which using the Grep cheat sheet in the Multi-File Search window would enter the selected text into the wrong edit field.
  • Suppress keyboard equivalent display in contextual menu items which correspond to available menu commands.
  • Fixed bug in which PHP quoted heredoc and nowdoc strings were not colored correctly.
  • Made a change so that changing the setting of "Show matches" in the Find window no longer causes items to move within the window's frame.
  • Fixed crash which would occur in some situations when editing documents that were being compared (which includes applying differences).
  • Fixed bug in which the Swift parser would go one character too far when scanning docstrings, which created a problem when the character after the end of the docstring was something important, like the closing parenthesis of an @available(...) structure.
  • When using Pretty Print or hierarchical HTML formatting, fixed bug in which indentation and additional lines were added to text inside of pre, script, and certain other "protected content" elements.
  • Added "Svelte" as a built-in recognized language (handled using the HTML mechanics, language server preconfigured to use svelteserver).
  • If font ligatures are explicitly disabled by the expert preference, ensure that excessively clever fonts (glares at Hasklig and Fira Code) do not display ligatures.
  • Fixed bug in which getters and setters, as well as return type declarations in getters and setters, would confuse function and fold generation in TypeScript files.
  • Updated the C-family keyword lists.
  • Fixed cosmetic bug in which the magnification indicators in the status bar didn't correctly reflect the document's current magnification, in cases where the document was being display in a Differences window as the result of a "Compare Two Front Windows" command and its magnification was set to something other than 100%.

New in BBEdit 14.6.5 (Apr 7, 2023)

  • Fixes:
  • Fixed bug in which the "Enter Full Screen" command would appear twice at the end of the View menu.
  • Worked around misbehavior of rust-analyzer when generating completions in some situations by advertising (and implementing) LSP insertReplaceSupport.
  • Fixed regression in which XML documents were inappropriately treated as HTML5, which (among other things) would cause odd folding behavior.
  • Added a mechanism for resolving conflicting Spaces behavior.
  • The default behavior works around a misfeature in the OS which causes the macOS application switch to select an inappropriate Space when activating the application while the Find window is open; but creates a situation in which choosing "Find" (or Cmd-F, by default) or "Multi-File Search" (Cmd-Shift-F, by default) will activate the Space containing the Find/MFS window if it is already open. To work around that issue and have the windows move to the active Space instead, use the following Terminal command:
  • defaults write com.barebones.bbedit MoveModelessWindowsToActiveSpace -bool YES
  • Fixed bug in which the recent items menu (at the bottom of the sidebar) in Notebook windows did not show the correct names of the items.
  • Fixed bug in which pattern errors were not correctly reported in codeless language modules.
  • Fixed bug in which files which were locked due to a Finder lock would lose their locked-ness if the underlying server volume was unmounted.
  • Worked around macOS file system API behavior which would cause Finder tags not to be shown for files on remote server volumes and (evidently) some direct-attached external volumes.
  • Fixed bug in which soft-wrapping width calculations were incorrect when printing with line numbers shown for documents with a small total number of lines.
  • Fixed bug in which the "Save Clipping" and "Save Selection as Clipping" commands allowed "/" in the clipping or set name, which resulted in an error when trying to create the set/clipping.
  • Fixed bug in which switching from a color scheme which was missing some color settings (resulting in the use of the "Plain text" color from the scheme) to a color scheme which had those settings, and back to the first scheme, would result in the second scheme's settings persisting inappropriately.

New in BBEdit 14.6.4 (Feb 24, 2023)

  • Changes:
  • When command-clicking in the title bar of a project, BBEdit will add the project to the path menu in cases where the project window is already displaying a document (and so the path menu would show only the path to the document). This solves the problem of not being able to quickly get to the project's location in the Finder.
  • The "last saved" indicator in the status bar below the text area includes a marker if the document has unsaved changes. (This may be easier for some folks to see than some of the other available indicators, which include the "dirty dot" in the window's close box, the highlighted icon at the top right of the text area, the border of the "x" close widget in the sidebar, and the mark next to the document's entry in the Window menu.)
  • Fixes:
  • Fixed crash which would occur on macOS 13.x when trying to truncate a note's title for display in the navigation bar, and the title looked enough like an URL to trigger a bug in the OS.
  • Fixed regression in which opening the completion panel (or one of its cousins) would cause a space switch.
  • Improved accuracy of the "looks like HTML" test, which in turn improves correctness of fold generation when processing incomplete and unqualified snippets of HTML code.
  • Fixed regression in which Extract would not find all occurrences of very short patterns which occurred multiple times on the same line, e.g. ".".
  • Fixed crash which would occur when navigating differences after having made certain specific edits in one of the files being compared.
  • Updated the list of ISO language codes used by the "New Document" command and HTML syntax checker.
  • Corrected some omissions from the global attribute list which were causing incorrect error reports from the HTML5 syntax checker.
  • Fixed crash which would occur when closing a document while its selection (or contents) were being recited by the speech system, and then subsequently quitting the application while waiting for speech to finish.
  • "Open File by Name" will not search files/folders listed in the "Open Recent" history. If you would prefer that it do so, turn on the appropriate expert preference:
  • defaults write com.barebones.bbedit OFBNIncludesRecentItems -bool YES
  • Updated the XHTML syntax checking to allow "https" values in the xmlns attribute.
  • Fixed bug in which requests from the Service menu made while the application was not running usually didn't have any effect after startup was completed.
  • AppleScript "display notification" events targeted at the application are now processed in-application so that they appear as expected.
  • Fixed bug in Markdown coloring, in which a link definition at the very end of the file (with no trailing line break) didn't get colored.
  • Corrected appearance of text-input highlighting (for CJK and others) when the text color scheme uses a dark background color.
  • Since rls is no longer supported or developed, the default LSP server configuration now specifies rust-analyzer. Use brew install rust-analyzer to install it. See the rust-analyzer web site for more information.
  • Fixed bug in which changing the "Related files" navigation bar preference didn't immediately affect open windows.

New in BBEdit 14.6.3 (Jan 19, 2023)

  • Additions & Changes:
  • This update consists only of fixes for reported issues.
  • Fixes:
  • Fixed bug in which Extract operations (single or multi-file) would generate a search results list entry for every match found, even though the results were never displayed. This made the Extract operation run more slowly than necessary, and (in extreme cases) caused excessive memory consumption during the operation.
  • Fixed bug in which deleting a rectangular selection in a soft-wrapped document would subsequently cause a great deal of consternation.
  • Fixed bug in which typing in a rectangular selection would fail to correctly maintain the selection ranges if the selected text was interrupted by lines that were shorter than the lines containing the selection range (including empty lines). This fix also allows typing into multiple selection ranges of varying lengths (such as might be generated by "Find and Select All" for a Grep pattern).
  • When running on macOS Ventura, it is possible to install an alternative diff tool to use for file comparisons. This provides the means to work around a bug introduced in macOS 13.0 (FB11508082), which installed a version of diff with pathological performance characteristics when comparing very large files.
  • If you encounter performance problems if this sort, we recommend that you install the GNU diffutils package which includes diff(1). You can build it from source, or you can use brew
  • install diffutils to install it using Homebrew. (Or use your preferred package manager.)
  • Fixed bug in which the application would hang in some situations where an LSP server crashed during startup. (This often happened when opening an R file and the R languageserver package wasn't installed.)
  • Fixed small memory leak which would occur when cancelling a file transfer connection in progress from the "Save to FTP/SFTP Server" command.
  • Fixed bug in which the Emacs status display was out of sync with the actual command.
  • Worked around macOS behavior in which items dragged from iCloud Drive to the application's Dock icon would report a -1700 error when opening (but could be opened easily enough by other means).
  • Updated the copyright year.
  • Corrected the bbedit(1) usage and man page help for the "--paths" long-form argument (which was being misreported as "--paths-file").
  • Set "Move to Active Space" for the Find and Multi-File Search windows.
  • Corrected some missing summaries for Text Factory operations.
  • Sometimes, image files can end up with a com.apple.TextEncoding extended attribute, which tricks BBEdit into opening them as text files. Although the best solution is to prevent the xattr from being added in the first place, if that isn't feasible, you can set an expert preference: defaults write com.barebones.bbedit CrossCheckForImageFilesWithTextEncodingXattr -bool YES
  • Fixed mishandling of a specific text encoding conversion error, which resulted in a -8785 error being reported when using "Reopen using encoding" or otherwise trying to transcode files.
  • Made a change to improve measurement accuracy when computing the replacement-glyph width for certain invisible characters in monospaced documents.

New in BBEdit 14.6.2 (Dec 13, 2022)

  • Additions:
  • Added an expert preference to globally shut off font ligature support, in cases where you don't want BBEdit to ever try to use ligatures (even when your editing font supports them):
  • defaults write com.barebones.bbedit DisableAllFontLigatures -bool YES
  • Changes to this setting require application restart in order to take effect.
  • Fixes:
  • Corrected tooltip display in the Multi-File Search window source list for items that have had their paths elided.
  • Change the factory default setting of the HTMLSyntaxChecker_WarnForIgnoredBlocks expert preference so that #bbpragma ignore_errors doesn't generate a warning.
  • When using cmark-gfm for Markdown previewing, BBEdit will request the table, strikethrough, and tasklist rendering extensions.
  • If a variable in a persistent include statement isn't properly delimited, the application will not attempt to perform a substitution with that variable's value, and will generate a warning. This is consistent with the documented behavior, and protects against unexpected outcomes.
  • Fixed bug in which the "do not contain" Process Lines setting was not stored correctly when used in a text factory, and as a consequence was not honored when the factory was applied.
  • Made a change to improve drawing performance in the text area.
  • Improved the appearance of the indicators used for language server configuration status, as well as for error/warning status in the navigation bar for documents managed by a language server. The different states are now distinguished by shape as well as by color.
  • Fixed crash which would occur when editing arguments to command-line arguments in the Markdown renderer preferences and language server configuration panel.
  • Avoid expanding folders in the project list when opening a document under typical conditions, since it's not really necessary and can be disruptive.
  • Fixed bug in which Git "Show Working Copy Status" for the active document would only list status for files in the same directory (or lower) as the source file, as opposed to the entire working copy as intended.
  • Put in some armor plating at the site of a crash reported during computer shutdown.
  • Fixed bug in which using Next Document/Previous Document in a notebook with the SurfNextPreviousInDisplayOrder expert preference turned on would navigate the documents in alphabetical order, rather than in the order shown in the sidebar.
  • Added Gemfile and Gemfile.lock as exact-match mappings for the Ruby language module.
  • Extended the minimum interval before shell worksheets issue a completion notification.
  • When using Cmd-down-arrow or Cmd-End to move the insertion point to the end of the document, make sure the scrolling honors the overscroll setting (from the Editing preferences).
  • Fixed crash in the CSS scanner which would occur with malformed files that contained only open braces (or when all the open braces occurred at once, which would happen after doing a Sort Lines on a CSS file).
  • Worked around macOS security UX bug (FB11749589) which would cause the OS to report a strange error when using a command which itself required BBEdit to ask Terminal to run a ".command" file. (This included "Run in Terminal", "Run in Debugger", and installing the command-line tools under certain conditions.)
  • Fixed a bug in which the remembered file/folder items for multi-file searching and other operations was stored in such a way that the macOS security subsystem would prevent BBEdit from using those items on a subsequent application launch. (This primarily affected the Mac App Store version.)
  • Note that this change will not affect previously remembered search targets; so if you run into a "not permitted" error when doing a multi-file search or similar operation, remove the item from the list, re-select it, and thereafter you should be good to go.
  • You can avoid the issue entirely by granting BBEdit sandbox access via the Application preferences.
  • Made a tweak to the text ranking function used for Open File by Name and others.
  • Made a change to improve editing performance in files of significant size when using font ligatures.
  • Updated the preferences search metadata to include references for the Show Invisibles character settings.
  • Made the Git working copy commands available in situations where they were disabled before. If the active document is not in a Git working copy (or the application does not otherwise have context to figure out what the active working copy is), BBEdit will prompt you to choose a working copy before proceeding.
  • When using "Run in Debugger" for a Perl script with a #! line, ignore the #! line so that -d actually makes it through to Perl. (Note that this may cause a different version of Perl to run than when simply using "Run" or "Run in Terminal". If this creates an issue for you, manually run the Perl script using Terminal and the -d option, or contact Tech Support for assistance.)
  • Adjusted validation of datetime attribute values to be less strict (and compliant with the current recommendations).
  • Fixed a bug in which the range of the vertical scrollbar in text areas was not correctly set in some edge cases.
  • Fixed regression in which documents created by the "Hex Dump" commands didn't have the correct title.
  • Documents created by the "Hex Dump" commands are no longer marked dirty at creation, so there's no prompt to save them when closing (unless you make a change).
  • Fixed bug in which the FTP/SFTP browser window progress panel would sometimes fail to go away when an operation was complete. (This typically occurred during "new file" or "new folder" operations on the server, but could happen at other times as well.)
  • When running on macOS 13.0 and later, add ssh-rsa and ssh-dss as allowed SSH key algorithms when connecting, to work around server compatibility issues introduced by security changes in the version of SSH included with macOS.
  • Fixed bug in which long search strings/patterns chosen from the search history or saved patterns menus would not wrap correctly in the Find and Multi-File Search windows, if a proportional font was in use.
  • Fixed bug in which keyboard equivalents for clippings wouldn't respond correctly in situations where the clipping(s) in question were in a set that had previously been inactive.
  • Fixed sporadic crash which would occur when making changes in the Clippings folder while the Clippings palette was open.
  • Added friendlier mode line synonyms for SQL and variants: sql, ms-transact-sql, mysql, my-sql, postgresql, plsql, and pl-sql.
  • Fixed bug in which saved Spotlight searches didn't appear as available locations in the Multi-File Search window or for Text Factory application.
  • Fixed bug in which the "Default" option in the CSS Border markup sheet didn't do anything useful. It now reads "(not set)" and choosing it will remove an existing value for the border style.
  • Made a change to work around macOS misbehavior which would cause the Find and Multi-File Search windows to move to the active Space when switching Spaces, whether or not the appropriate expert preference had been set. (As a result of this change the expert preferences are no longer consulted, so changing them will not affect the behavior.)
  • Fixed bug in which Zip archives and tarballs in the Clippings folder (or subfolders) were not filtered out of the Clippings menu.
  • Fixed crash that would occur soon after startup, when the application support folder was in a shared location (Dropbox), and had a PreferenceData folder in it, and that PreferenceData folder had previously been automatically copied to the supported location in the application's sandbox container, and the sandbox container had been deleted since the last launch of the application.
  • Added MarsEdit 5's bundle ID to the sandboxing entitlements, so that its "Edit in BBEdit" support works correctly. (You can find MarsEdit at https://www.red-sweater.com/).

New in BBEdit 14.6.1 (Oct 12, 2022)

  • Fixes:
  • Enabled ligatures by default for Monoid and Monoisome.
  • Fixed the likely source of a submitted crash log.
  • Made a change to work around Radar 100658961, which would sporadically cause inconsistent enabling of buttons in the Find window (and probably other things too).
  • The application will honor the value of NSMenuShouldUpdateSettingsTitle when running on macOS 13.0 and later, if you're into that sort of thing.
  • Restored control of font smoothing based on the old expert preferences (as well as the AppleFontSmoothing system preference for which there is no GUI in macOS 12.0 and later).
  • Corrected display of zero-width and certain non-breaking space characters.
  • Fixed regression in which changes to a project's site settings weren't actually saved into the project.
  • Start Xcode project discovery on a background thread, so that if Spotlight is completely broken such that mds is hung and blocking API calls, the application won't hang at startup.
  • Fixed bug in which clicking on a color swatch in the Preferences window and then bringing an editing window to the front would fail to disconnect the Preferences swatch from the color panel, such that changes in the color panel would affect both the editing window (intentional) and the setting in the Preferences window (undesired).
  • When doing character-based soft wrapping to the window width, omit the em-width margin at the end, to allow for more accurate wrapping points.
  • Fixed bug in which soft-wrapped text in proportional fonts was not rewrapped correctly while editing.
  • Fixed crash which would occur after dragging a rectangular selection, either when attempting to undo the operation, or when closing the document subsequently.
  • Made a change to correct missing display of certain gremlins when using certain fonts.

New in BBEdit 14.6 (Oct 4, 2022)

  • Additions:
  • The bookmark menu in the FTP/SFTP connection panel gets "Add Bookmark" and "Manage Bookmarks" commands, so you can perform those operations before connecting, if desired.
  • Added settings to the "Editing" preferences to specify alternative characters for Show Invisibles, for tabs and for line breaks. The arrows next to the respective edit fields will open the macOS character panel. There are some restrictions; you can't use letters and numbers, for example. You should use punctuation, since that is generally more readable. The factory defaults are "∆" (U+2206, "INCREMENT" option-J on US keyboards) for tabs, and "¬" (U+00AC, "NOT SIGN", option-L on US keyboards) for line breaks.
  • Added "Show Notes" to the Dock menu; this will open the Notes window.
  • Changes:
  • The low-level text rendering in BBEdit's editing engine has been reworked to improve performance and OS compatibility (including future macOS releases).
  • This change also marks the triumphant return of font ligatures (when supported by the display font in use), and brings improvements to Unicode character rendering.
  • Finally, the rework includes workarounds for longstanding macOS bugs and performance regressions (Radar 34909871, FB5433254, FB7654002, FB9979006, FB10429697, FB9971063) which manifested as a constellation of symptoms, including:
  • application hangs at startup (usually displaying "waiting for macOS…" in the startup progress panel);
  • application stalls when coming to the foreground after more than a minute of non-use in the background;
  • failure to render character glyphs in the editing area, such that windows appeared to be blank;
  • use of a (system-determined) display font instead of the one specified in the Editor Defaults preferences.
  • slower than expected application startup time;
  • unpredictable rendering of emoji and other Unicode surrogate pairs
  • Since (with the new text rendering) Unicode "private use area" characters are no longer quite so toxic, the DisplayPrivateAreaGlyphs expert preference is now on by default.
  • Made changes so that Open File by Name doesn't completely tie up the application in cases where building the search cache takes a very long time. In such situations it'll be the same amount of time before you get search results, but the application will remain responsive for other uses in the meantime.
  • When running on macOS 13.0 and later, the "Preferences" menu command reads "Settings", and the title of the Preferences window is likewise changed to "Settings" as well. (We don't make the rules, that's just how it is.) The help book and user manual are not dynamically mutable, and so they will continue to refer to "Preferences" for quite some time.
  • When using Zoom In or Zoom Out for a "Preview in BBEdit" window when running on macOS 11.0 or later, BBEdit will ask the web view to magnify the contents, so that (if necessary and appropriate) the contents will reflow.
  • Made some changes to improve the printing experience: progress is now provided for printing text documents, and the process is window-modal so that if you are spooling something long, you can continue working in other documents meanwhile.
  • Fixes:
  • Made changes to reduce the amount of directory rescanning for the directory caching used in Open File by Name and some other places.
  • Made a change to conserve memory used by marker data and other structures.
  • Changing a setting in a project's Site Settings panel will clear the deployment state, so that you don't have to remember to use "Re-Deploy Entire Site".
  • Fixed bug in which completing a macOS system text replacement (if allowed in the Completion preferences) would not correctly replace any leading word-break characters in the replacement trigger.
  • Fixed error when opening files via a symlink on an SFTP server.
  • Improved performance when sorting a very large number of items in the FTP/SFTP browser window listing.
  • Made a change to multi-file search and Text Factory processing so that files are processed only once in cases where overlapping folders (or projects) are specified as search targets.
  • ":" is allowed as an identifier character in Unix shell scripts, which fixes function detection when a package-qualified function name follows Google's bash scripting style guide.
  • Fixed bug in which auto-pairing would behave strangely in certain cases (usually by advancing the insertion point past the next paired item rather than inserting a pair of the typed character).
  • Disqualify Java .hprof files from consideration as HTML or XML (or as text files, for that matter).
  • Fixed bug in which Perl variable coloring extended further than desired in cases like "$foo->@{'abc', 'def'};"
  • Racket files are treated as a special case for the Lisp/Scheme/Clojure language module, including special treatment of #|...|# block comments and #; s-expression comments.
  • Fixed bug in the Unix Shell Script parser in which hashes ("#") in the middle of a string were treated as comment delimiters, which generally did not have the desired outcome.
  • Fixed display bug in the "Installed Languages" panel in which the "Menu" column did not immediately reflect the use of "Show All" or "Hide All".
  • Fixed bug in which the soft wrap indentation setting was not saved with a document's state; consequently it would reset to the preference default when reopening the document.
  • Fixed crash which could sporadically occur when closing the text document that the Find window was busy searching, and then activating the Find window again. (This usually happened only with very large files, but could conceivably happen any time, with the correct sequence of operations and timing.)
  • Fixed bug in which adding an item to the Language-Specific Settings list in the Language preferences would not scroll it into view.
  • Turn off the "Soft Wrap Text" option when presenting the output of Hex Dump {File, Front Document}, since wrapping is not useful in that case.
  • Fixed bug in which backslashes in Go raw strings were improperly treated as character escapes.
  • Made a change which might improve page/sheet margin accuracy when printing. (Or it might not; there's really know way to know for sure. Try it!)
  • Worked around an AppKit bug on macOS 11.0 and later which prevented the startup progress bar from filling correctly.
  • Fixed bug in which a return type declaration in a TypeScript function would confuse the function scanner.
  • document objects returned by the scripting interface are specified by their in-application unique ID, which is valid for as long as the document is open in that run of the application. This improves performance in the scripting interface, and works around a macOS bug (Radar 100322030) in which references to document 1 would not resolve correctly in situations where the script made rapid sequential changes to the window list.
  • Added a name to the credits. (Might be yours; might be someone else's.)
  • Made a change so that extended file system security attributes are preserved when using "Save a Copy" for a document already extant on disk.
  • In the case of quitting with a Differences window open, any files that were only open in that differences window will reopen each in their own window, rather than in a window with a hidden sidebar (which was confusing).
  • LSP workspace discovery now recognizes a directory containing a StandardML "*.cm" or "*.mlb" file as an eligible workspace root, in the absence of any other recognized markers.

New in BBEdit 14.5.2 (Aug 26, 2022)

  • Changes:
  • When BBEdit prompts you to unlock a file for which you don't have write privileges, the alert has a "Don't ask again for this file", which (if you click "Unlock") will set a preference so that you don't get prompted again for that file.
  • When using "Run in Terminal" or "Run in Debugger", BBEdit needs to have sandbox access, or else the operation is likely to fail. This is now checked at the time you choose either command, and if granting sandbox access is necessary, the application will advise you accordingly (and walk you through the process, as needed).
  • Fixes:
  • Fixed crash which would occur when using a "Copy Path" command from the contextual menu in the sidebar of a disk browser and one (or more) of the selected items was inside of an archive (Zip or tar).
  • Fixed regression in which the "Search in " command on the Search menu didn't behave as intended when the Multi-File Search window was already open.
  • Fixed crash which would occur when closing a window after performing certain (reasonable, but not necessarily conventional) document selection operations in the sidebar.
  • Addressed some small memory leaks identified by static analysis tools.
  • Fixed hang which would occur when clicking in the popup menu at the top of the sidebar in a Disk Browser window.
  • Quieted 100013 (EACCES) error report when using "Keep historical backups" and saving a file which requires privilege escalation to write.
  • Fixed bug in which diagnostics returned by LSP were not reported for files located in iCloud Drive.
  • Fixed bug in which creating a note inside of a closed collection (by using "New Note") didn't twist the collection open and select the created note.
  • Generate placeholder HTML for cases when the preview HTML generator (e.g. for Markdown) is missing.
  • Fixed empty "Kind" column in FTP/SFTP lists.
  • Worked around macOS behavior (FB10022175) in which certain Shortcuts that were pinned to the menu bar did not appear in the Services menu when they should have.
  • Worked around a bug in macOS (FB11058506) which would return the wrong icon for folders whose name begins with a period.
  • Added sh and sh-script to the list of modes recognized for the "Unix Shell Script" language.
  • Fixed bug in which a contextual-menu click in the status bar would move the insertion point to the beginning of the document.
  • Removed the trailing space from the default comment delimiter for YAML so that uncommenting doesn't try to strip whitespace after the #.
  • Fixed a bug in which dragging on the trackpad to select text didn't work when the "Force Click and haptic feedback" system preference was turned on, and a deep click was started while dragging.
  • Fixed bug in which editing the options or comments of a text factory action did not mark the document as needing to be saved.
  • Made a change to work around a bug in CrowdStrike which causes pathological file system performance during routine operations performed by the built-in crash recovery mechanics. If your employer requires you to use a product like this, consider a career change (or at least a better employer).
  • Corrected a progress string to correctly reflect the origin of the delay requiring the progress dialog.
  • Made a change so that the progress dialog for LSP "Find Definition" is window-modal rather than application-modal, in situations where the server takes long enough to complete the operation that the progress dialog needs to appear at all.
  • Fixed bug in which irrelevant settings were created for Markdown and other languages when customizing their settings using the "Language-specific settings" section of BBEdit's Language preferences. Among other things, this led to the setting of "#" as the line comment string for Markdown, which is not appropriate.

New in BBEdit 14.5.1 (Jul 13, 2022)

  • Additions:
  • Added a --tail option to the bbedit command-line tool. When opening a file, --tail instructs BBEdit to place the insertion point at the end of the file, and turn on Tail Mode. In this fashion, you can use bbedit --tail /path/to/some/file as an alternative to tail -f /path/to/some/file.
  • --tail only makes sense when used for files, and cannot be used for pipes or standard input.
  • Changes:
  • If an .editorconfig file has a tab_width value specified, BBEdit will use that in preference to indent_size (since BBEdit does not have a notion of separate widths for tabs vs. indentation). In the absence of tab_width, BBEdit will use indent_size as before.
  • Fixes:
  • Projects (once again) allow expansion of symlinked folders, with appropriate safeguards against circular link chains.
  • Fixed regression in which empty ("self-closing") XML tags would cause incorrect fold generation in HTML documents.
  • Added the tail mode property to the scripting dictionary.
  • Fixed bug which would cause pathological performance problems when editing files managed by a codeless language module which used literals (rather than patterns) for strings, blocks, and comments.
  • Fixed crash which would occur when quitting, if "Restore unsaved changes" was turned off, and the Multi-File Search window was open, and one or more of the documents being closed had unsaved changes.
  • Fixed regression in which pcre2 would complain about patterns that were too large.
  • Fixed crash which would occur when closing a document's only window while a long-running live match was in progress on that document from the Find window.
  • Made a change so that the extract scripting verb is handled correctly when passed a single item (such as text 1 of text
  • document 1).
  • When figuring out the common ancestor of all open documents, "Open File by Name" will no longer include notes in that computation (which can throw things off).
  • Made a change to (maybe) work around a macOS bug (FB10429697) in which the font server would cause a stall when activating the application.
  • Worked around a bug in Apple Mail (FB9978404) in which it would fail to accept text dragged from within an editing window.

New in BBEdit 14.5 (Jun 29, 2022)

  • Additions:
  • When using a language server that supports symbol renaming (specifically, the textDocument/rename command), you can right-click on a symbol, and if the server thinks you should be allowed to rename the symbol, a "Rename" command will appear on the contextual menu. The "Rename Selected Symbol" command on the Edit menu does this as well.
  • Choosing this will prompt you to enter the new symbol name, and confirming the entry will perform the rename operation. Symbol renames potentially may affect multiple files; if so BBEdit will open them as needed.
  • Changes performed by a symbol rename are undoable in each file, if desired.
  • If an LSP completion returns additionalEdits data (such as a statement to include a header file necessary to resolve the completed symbol), BBEdit will apply those edits as needed, after inserting the completion. (Each individual additional edit is undoable.)
  • Added support for LSP "Code Actions". If the server supports them at all, these are offered contextually based on the insertion point/selection range when right-clicking in a text document. BBEdit will ask the server what it supports, and the server may respond with a list of operations that are appropriate for that location in your source file.
  • If the server returns such a list, BBEdit will present the operations on the "Code Actions" submenu of the contextual menu.
  • Not all language servers support this feature; and not all servers even document what code actions they do support. And even then, the list of available operations for any arbitrary point in code is not guaranteed. If you aren't seeing the operations you expect when right-clicking in a text document, we recommend filing a bug report with the server developer.
  • If a language server includes "quick fix" information in a diagnostic (error/warning) that it returns, BBEdit will add a "Fix" button to the diagnostic's item in the popover list. Clicking this button will apply the changes supplied by the language server. The diagnostic's display message will also include the titles of the available fixes.
  • Added "Tail Mode": when turned on, BBEdit will move the insertion point to the end of the file if it is changed while BBEdit has it open. (When in Tail Mode, BBEdit will change the selection range but will not scroll the file to the end unless the file was already scrolled to the end at the time the file was reloaded.)
  • This can be quite useful for log files, and thus it is on by default for files whose filename extensions map to the "Log File" language. You can also turn it on (or off) per-file via any of the usual mechanisms: View -> Text Display, Text Options menu command, or the Text Options panel. (The setting is available for any locally opened file, whether or not it maps to the "Log File" language.)
  • The "Tail Mode" setting is persistent, so a file for which you've manually turned Tail Mode on (or off) will maintain the setting when closed and reopened.
  • If you want to turn off Tail Mode for the "Log File" language, an expert preference command will do this:
  • defaults write com.barebones.bbedit "EditorTailMode_Log File" -bool NO
  • The Find and Multi-File Search windows get a button for exchanging the contents of the "Find" and "Replace" fields. By default, you can use Control-shift-F in the window as well, and this is configurable in the "Menus & Shortcuts" preferences.
  • The Find, Multi-File Search, and Pattern Playground windows get an additional cheat sheet for the "Replace" field. This provides a quick reference for constructing Grep replacement patterns.
  • Additions/changes in the Find Differences dialog.
  • When choosing a file or folder, the file panel has a "Show hidden items" option (behind the "Options" button). You can use this to choose dotfolders or dotfiles more easily.
  • In the "Folder Comparison" tab, "Compare hidden folders" replaces "Skip (...) folders". The new option instructs BBEdit to examine the contents of dotfolders when doing a folder comparison.
  • The bbdiff tool gains a --compare-hidden-folders option which maps to this option, and the scripting interface gains a compare
  • hidden folders option as well.
  • Added a simple language module for Solidity.
  • Added a command to copy a shell-escaped file path, to the "Copy Path" submenu on the Edit menu, as well as the "Copy Path" contextual submenu for disk browsers and sidebars.
  • Added a new completion symbol type to the language module API: kBBLMSymbolTypeColorSpecification. This is intended for use with generated completions which themselves represent a color specification (such as a CSS color value). If you generate a completion of this type, you may (optionally) set kBBLMCompletionColorSpecColor to an NSColor value, and that will be used to color the badge in the completion list.
  • If you make a selection range that looks like a valid color specification (hex, CSS color name, and various others), and the Colors palette is open, BBEdit will update the color palette with the appropriate color value.
  • When you select a color from the color panel, BBEdit will ask an available language server (if one is engaged for the current source file) to provide an appropriate textual representation of the color. If the server returns multiple representations, BBEdit will present the completion panel so that you can pick one; if only a single answer comes back, BBEdit will insert it.
  • Added finer-grained control over invisibles display: it is now possible to explicitly turn on (or off) display of spaces and line endings when "Show Invisibles" is enabled. The Editor Defaults preferences, Text Options sheet, Text Options panel, and Text Display submenu of the View menu are updated accordingly. The additional settings are available via the scripting interface, as well as via EditorConfig and Emacs mode-line variables (x-show-tabs/x-show-line-breaks).
  • Added settings to the "Editing" preferences to specify alternative characters for Show Invisibles, for tabs and for line breaks. The arrows next to the respective edit fields will open the macOS character panel. There are some restrictions; you can't use letters and numbers, for example, nor can you use whitespace or line breaks. You should use punctuation, since that is generally more readable. If you try something and it doesn't work, try something else.
  • The factory defaults are "∆" (U+2206, "INCREMENT" option-J on US keyboards) for tabs, and "¬" (U+00AC, "NOT SIGN", option-L on US keyboards) for line breaks.
  • Some Windows editors (including cross-platform editors that got their start on Windows, not that we're naming names) allow Cut or Copy to cut/copy the entire line containing the insertion point, in situations where there is no selection at the time you choose the command.
  • In order to make life easier for platform refugees, BBEdit allows this behavior by turning on the "Cut/Copy entire line for insertion point" setting in the Editing preferences. It's off by default, because standard macOS behavior is to only enable Cut or Copy when there is actually a selection.
  • Added alternate (option-key) menu items for the Tidy "Clean Document", "Reflow Document", and "Check Accessibility" commands. Using the alternates will run the commands using the previously selected options (or factory defaults, if used for the first time).
  • Added a support folders property to the application object in the AppleScript interface. This returns a record of user parameter pairs, keyed by the folder's name (e.g. "Clippings"), each value being a file URL to the folder. Note that this does not guarantee that any given folder exists.
  • Added two new filter terms for file/folder filters: "Any Path Component" and "Every Path Component". These can be used to test any (or every) component of the file or filter's path using any of the available string tests.
  • Added an option to Zap Gremlins (UI, text factory, and AppleScript): "Convert fullwidth forms". This converts Unicode fullwidth forms (U+FF01 through U+FF5E, inclusive) to their ASCII equivalents.
  • When using any of the Subversion working-copy commands (Show Working Copy Status, Commit Working Copy, Update Working Copy), you can (if you wish) limit the recent menu to only working copy roots (i.e. directories which themselves have an .svn directory). Use the following expert preference to do so:
  • defaults write com.barebones.bbedit SubversionChooseWorkingCopy_HideSubdirectories -bool YES
  • Added "Replace Tiled Window" to the Window menu when running on macOS 12 and later.
  • Changes:
  • The "Editor Defaults" preference pane gets an advisory notice explaining the behavior of the settings; namely, that they establish the defaults for new documents (and for documents that don't have saved settings), and that changes to the settings in the preferences pane don't affect currently open documents.
  • The "Text Options" command now opens the popover attached to the "gear" in the navigation bar, if the navigation bar is visible (and the "Text Options" item is enabled). The old sheet is still used, but will only appear if the popover is not available.
  • Tweaked layout in the Commands panel to fill up the window space a little bit more.
  • The Unix Script Output log, as well as file-specific log files resulting from "#!" script execution, are now autosaved, so there is no need to save any changes to those logs before closing them.
  • Locating the PreferenceData folder in Dropbox or iCloud Drive is no longer supported. (It was never really a good idea, but BBEdit used to allow it.) If BBEdit detects such a folder when starting up, it will copy the folder's contents to the appropriate local location, and use the latter going forward.
  • Made changes to improve the performance of "Open File by Name" when the data source is a directory of significant size (such as a disk browser or instaproject). The first search can still require significant time; but changes in the directory which affect the search results will no longer require the entire cache to be discarded, improving subsequent performance.
  • When cancelling a multi-file search/replace operation in progress, BBEdit will immediately cease collecting any accumulated results. This improves behavior when a search/replace operation generates a large quantity of results very quickly.
  • When generating "smart" quotes while typing or auto-pairing, BBEdit will follow the settings for quote characters in the "Keyboard" system preferences.
  • Made a change to significantly improve performance when soft-wrapping long documents to the window width. (The improvement is only available when a fixed-width font is in use.)
  • There are some limitations: the math doesn't work for single characters which break the fixed-width font contract and render at twice their width (i.e. most CJKV characters and emoji).
  • Made a change so that Grep pattern matching considers surrogate pairs as a single character. This improves correctness when using p{...} for classes of characters which may include combining surrogate pairs.
  • If for some reason the previous behavior is desirable, you can restore it by using the following expert preference command:
  • defaults write com.barebones.bbedit DisablePCREUTFMatching -bool YES
  • composer.json is recognized as a file which defines a workspace root (for LSP purposes).
  • Allow system-generated icons for declared file types which BBEdit can edit (but for which it does not have a unique icon type).
  • Added a distinctive icon for notebooks.
  • Made some structural changes to how BBEdit supplies document icons to macOS, taking advantage of updated support in the OS itself.
  • When navigating placeholders ("()") using the Tab key or the commands on the Go menu, BBEdit will ignore anything that looks like a placeholder in which the delimiters are separated by more than a single line break. If you prefer the previous behavior, you can restore it using this Terminal command:
  • defaults write com.barebones.bbedit AllowMultiLinePlaceholders -bool YES
  • Added the vertical bar ("|", U+007C) to the list of characters used as token break points when computing sub-line differences.
  • Changed the order of operations when determining a file's text encoding so that an applicable EditorConfig coding or charset value will override an xattr in the file. This also means that EditorConfig encoding testing (the AllowEditorConfigReadEncoding expert preference) is on by default now.
  • When using EditorConfig to determine a file's encoding (if specified), BBEdit will first check its extended coding value if one is present, before checking the standard charset value.
  • When Auto-Indent is turned on, "New Line Before Paragraph" and "New Line After Paragraph" will indent the inserted line by the same indentation as the line on which the command was invoked.
  • If you try to save changes to a file that was opened from (or moved to) the Trash, BBEdit will alert you so that you know it's about to happen.
  • Added settings to the "Preview" preferences (previously "Preview Helpers") to control Markdown conversion to HTML for previews and export. (These settings have been available for some time as language-specific Markdown settings; this change makes them more discoverable.)
  • Removed the vertical grid lines from the "Preview Helpers" browser list.
  • When opening a worksheet without a saved working directory, BBEdit will set the working directory in the worksheet's shell to the directory containing the worksheet (or, if appropriate, the directory containing the project document in which the worksheet is embedded).
  • Fixes:
  • Made a change so that BBEdit only requests the current shell login environment once, the first time it's needed. This improves performance when doing anything within BBEdit that involves running a Unix script or command.
  • Made a change so that shell worksheets will use zsh if fish is your default shell. (Fish can't be used in shell worksheets.)
  • Reworked the shell worksheet internals to improve efficiency.
  • Made a change to improve the performance of code for certain clients which involves repeatedly scanning a directory to enumerate its contents.
  • Fixed crash which would occur when a system appearance change occurred after having used and closed a source control form window or a "Show Documentation" output window.
  • Improved the accuracy of guessing Objective-C variations in C/C++ source and header files.
  • Updated PCRE to 10.40.
  • Fixed bug in which placeholder text that should have shown up in the simple entry field sheet's text box did not appear.
  • Made some internal changes to reuse existing code and improve performance.
  • Fixed bug in which Open File by Name would make inappropriate git-ignore requests, which would cause git to report a fatal error and exit, subsequently breaking git-ignore filtering in the Open File by Name window and possibly elsewhere.
  • Fixed a thread-safety issue in the FTP (not SFTP) client code which might be responsible for sporadically reported stalls at the end of file upload transfers.
  • Make sure that the title of a Preview in BBEdit window keeps up when the name of the document changes.
  • Added a note about language servers to the Read Me.txt in the application support folder.
  • Updated the default worksheet stationery to correct some anachronisms.
  • Corrected the math used for calculating the line number column width when printing, and guarantee a minimum of four digits worth of space, so that no change in column width will take place until the next power of ten (10,000).
  • Made a change to slightly improve startup performance when recovering a very large number of autosaved documents.
  • The HTML5 syntax checker will no longer inappropriately report autocomplete as an invalid attribute for .
  • Made the character inspector behave a little better with rectangular selections.
  • Fixed various bugs in string and comment scanning in codeless language modules that used literal delimiters (as opposed to grep patterns).
  • Fixed bug in which a language server log file would not get created if the language had a slash in its display name.
  • Removed a conflict-named "URL" property from the FTP Info AppleScript record (the document's URL property has the same value in it, if it was opened via the built-in FTP/SFTP support.
  • Aliases/symlinks to folders are no longer eligible to be twisted open in disk browsers and project windows. This prevents confusion and madness when browsing directories in which symlinks are used to create loops in the directory graph.
  • When evaluating whether a file about to be opened into a project's sidebar is in a project directory, the process now guards against loops in the directory graph created (intentionally or otherwise) by the use of symlinks or aliases.
  • Improved completion behavior compatibility with language servers which don't comply with the published specification. (glares at the TypeScript language module).
  • Fixed bug in which specifying an end-of-line character offset in Go to Line Number would not move the insertion point to the requested location.
  • Fixed crash which would occur when trying to open a legacy BBEdit plug-in.
  • Fixed bug in which question marks in Ruby source files were inappropriately colored using the number coloring in certain situations.
  • Corrected the badging of Ruby class definitions in the function menu.
  • Made a change so that line breaks are no longer escaped when using "Use Selection for Find (grep)". This avoids semantic changes in multi-line patterns which use (?x).
  • Fixed bug in restoration of a previously used "Preview in BBEdit" window position, in cases where it was on a different screen than the default position.
  • Fixed bug in which an assigned keyboard equivalent for "Open Text Options" in the Navigation Bar shortcuts didn't actually do anything.
  • When syntax checking HTML5 documents, unencoded ampersands are now allowed, provided they're not "ambiguous" (which is a term defined by the standard).
  • Fixed a bug in which hiding items in results lists (such as warnings) would cause the vertical scrollbar to be miscalibrated when subsequently expanding and closing top-level items.
  • Made a change to slightly improve performance when changing display settings for very large results lists (specifically, turning on/off the "Errors", "Warnings", and/or "Notes").
  • Fixed bug in which choosing a saved pattern in the Find window did not update the live match display.
  • Added search terms to the "Editing" preferences pane so that the "Collapse folds below level" option is discoverable via the search box.
  • Fixed elusive crash which would occur when clicking in the text area of a document being closed immediately after dismissing the "Do you want to save changes" alert sheet.
  • Fixed bug in which using "Cut & Append" or "Copy & Append" would update the Clipboard window with the appended text, rather than the complete contents of the current clipboard (which were correct despite the display).
  • Fixed crash which would occur when ingesting a .paths file with home-relative paths in it.
  • Fixed crash which would occur when changing a display option (such as "Show Tab Stops") via the View => Text Display menu when the window also included an image document.
  • Fixed bug in which escaped newlines in some situations would confuse the Python function scanner.
  • Corrected layout of items in the printing panel addition.
  • Fixed bug in which items in the "Preview Helpers" browser list were editable. (Editing them accomplished nothing.)
  • Made "Copy Path" and friends in disk browser windows do something useful for items inside of Zip archives.
  • Fixed memory leak when using the Tidy commands which brought up sheets.
  • Made some changes to significantly improve performance in the HTML parser, which in turn improves performance when loading extremely large HTML and XML files (and scanning for functions/folds in such files).
  • Made some refinements to the strategy that Open File by Name uses to figure out where to look for files, so that it's a able to make a better educated guess.
  • Fixed bug in which making a case-only change to the name of an open document would fail to update the UI correctly, and would potentially lead to misbehavior if a document was subsequently created or opened from the same location with the old name (e.g. after deleting the renamed file).
  • Fixed bug in which Text Factory windows with enough items to scroll would sporadically display the wrong selection in the popup menu button (even though the backing data was correct and the factory would work as intended).
  • Fixed bug in which changes to menu key equivalents in the Menus & Shortcuts preferences weren't reflected in the "Commands" command until after the application had been quit and relaunched.
  • Made the keyboard equivalent column in the "Commands" window a little wider, to accommodate equivalents with a lot of modifiers.
  • When relaunching the application after installing a package, do so in a fashion which doesn't cause a new instance to appear in the Dock.
  • Pressing return or enter in the "Run Unix Command" panel will now dismiss the panel and run the command text, rather than simply taking keyboard focus off the edit box. (As before, you can use Option-return or Option-enter to enter a line break in the command text.)
  • Improved behavior when attempting to use a defective font (bad line height, and/or bad advancement metrics). In these cases, BBEdit will fall back to an appropriate system default font, based on whether the requested font was fixed-pitch or proportional.
  • Fixed bug in which right-clicking on a non-selected item and choosing Quick Look from the contextual menu would result in the first selected item being displayed in Quick Look.
  • Fixed bug in AppleScript access to project collections by index, in which non-collection items were included in the index calculations.
  • When requesting project items from the scripting interface, if you require an object reference to the item, rather than the "best" representation (which might be a URL), use "as reference".
  • Fixed bug in which closing a window containing multiple documents would ask to confirm changes an "untitled project", if any of the documents in the window had been moved or deleted.
  • MySQL doesn't explicitly forbid string literals to cross line boundaries, so MySQL syntax coloring will no longer end string literal coloring at the first line break.

New in BBEdit 14.1.2 (May 10, 2022)

  • Fixes:
  • Made a change so that BBEdit will no longer return language servers located in /usr/bin. This is a read-only location and macOS 12 leaves a stub version of clangd there, which appears to hang when started on some systems.
  • Avoid crash which would occur in some (unidentified) circumstances when attempting to make a backup copy of the current preferences while quitting.
  • Made a change to how script/filter/clipping keyboard equivalents are loaded and saved, to hopefully reduce the chance of data loss caused by iCloud Drive.
  • Made a change to how FTP/SFTP bookmarks are loaded and saved, to hopefully reduce the chance of data loss caused by iCloud Drive.
  • Made a change to how saved Grep patterns are loaded and saved, to hopefully reduce the chance of data loss caused by iCloud Drive.
  • Corrected line layout cosmetics in the Bookmarks setup pane.
  • Made changes to improve cascading behavior when creating new windows.
  • Implemented a fast path for returning commonly requested text document properties in response to AppleScript requests. This is particularly beneficial for very large files.
  • If the shell in use is not a shell that BBEdit knows how to talk to, then BBEdit will fall back to zsh rather than try to talk to the shell (which usually ends in tears).
  • Cleaned up error logging in cases where a language server is configured but not found.
  • Corrected behavior of end-range adjustment when a line break is at the end of a selection when using "Print Selection".
  • Fixed crash which would occur when using "Show Symbol Help" with some language servers that implemented an older (deprecated) protocol response.
  • Adjusted the logic for detecting web browsers (for the "Preview in" submenu) so that it's more likely to find applications that are actually web browsers.
  • Corrected behavior of the title bar menu when switching between documents on disk and untitled documents (or notes) in the same window. This also includes behavior improvements in the title bar menu when a Note is displayed.
  • macOS does not support removing image metadata from certain image file types (such as GIF and .ico), and will return a specific error if asked. If this occurs during site deployment, BBEdit will ignore the error and upload the image file as-is.
  • Fixed bug in which turning on the "Use ASCII equivalent" option for Zap Gremlins in a Text Factory would not perform the desired operation.
  • Added code to guard against a nonreproducible crash which seems to indicate a drag-and-drop operation was in progress.
  • Fixed bug in which the "Close & Delete" command would sometimes inappropriately read "Remove Note". (It still worked correctly, though.)
  • Fixed bug in which clicking on a newly added file in a project didn't cause the file's entry in the Project list to gain a close button.
  • Fixed bug in which documents opened via the built-in FTP/SFTP support were inappropriately registered with language servers (which themselves usually have no idea what to do at that point).
  • Fixed crash which would occur when a system appearance change occurred after having used and closed a source control form window or a "Show Documentation" output window.
  • Fixed crash which would occur when switching application appearance (from light to dark, or vice versa) after having closed the Find and/or Multi-File Search windows.
  • Fixed bug in which "Preview in BBEdit" window positions were not correctly restored.
  • Made a change so that simple window frame (position/size) changes mark a document's state as "dirty" without any other state changes being required; thus if you do nothing other than open a document into its own window, move/resize it, and then close it, the next time you open it, the window will be in the location at the size you left it.
  • Added some tests to guard against a reported (but not reproducible) crash.

New in BBEdit 14.1.1 (Mar 16, 2022)

  • Changes:
  • Added help to the Go/Line Number sheet and the cursor position popover, reprising the info in the user manual about how to specify ranges, character offsets, and relative line offsets.
  • The built-in Perl language module is preconfigured to use pls for LSP features.
  • To install the server, use "cpanm PLS" (this in turn requires you to have cpanm installed, which you can do with "brew install cpanm") and we recommend using perlbrew to manage a newer Perl installation than macOS provides.
  • Additional setup instructions are available at the language server's GitHub project page.
  • Fixes:
  • Fixed bug in which incoming LSP diagnostics were ignored if the file was open, but its full directory path contained any encoded URL-unsafe characters which required decoding.
  • Fixed bug in which non-Markdown documentation returned by language servers (for completion, symbol help, and parameter help) did not display correctly when in dark mode.
  • Made a change so that shell worksheets will use zsh on macOS 10.15 and later if fish is your default shell. (Fish can't be used in shell worksheets.)
  • Fixed (nonreproducible) crash which would occur while converting legacy bbcolors format color schemes and the file system API said no.
  • Fixed bug in which using the "Open" command with a note selected would point the panel at the Notes folder in the notebook, rather than some other appropriate location.
  • Fixed 13219 error reported when trying to open certain symlinked directories (like /etc) via the Open panel or command line.
  • Fixed bug in which dragging items between notebooks was either disallowed or dysfunctional. (The intended behavior is that dragging a note from one notebook to another will copy it; moves are not currently supported.)
  • Fixed bug in which using "bbedit --new-window" to open multiple files would open each file into its own window (rather than all into a single new window, as intended).
  • Fixed bug in which using the space bar to toggle a menu item's visibility in the "Menus & Shortcuts" preferences did not take effect immediately.
  • Fixed bug in which a comma was included between the image file name and the image comment when generating a Markdown image reference via drag-and-drop of an image file.
  • Fixed bug in which cancelling a long-running or hung #! script would cause the application to hang.
  • Made a change which might (emphasis intentional) work to prevent macOS from termination the application process when it decides to, other than at the user's request.
  • Fixed bug in which an instaproject's window title would inappropriately remove the filename extension from the root folder name (which was inconvenient if the folder name ended in a decimal number, for example).
  • Corrected the ordering of the Notebooks section in the "Open Recent" menu.
  • Made a change so that the crash reporter doesn't come up with a report window in cases where the application was exited abnormally because of some event other than a crash. (Such events would include force-quit, kill from the command line, and unwarranted process termination by the OS.)
  • If the Software Update window is open, there will be a corresponding entry on the Window menu, so that you can activate the window if you lose track of it.
  • Fixed bug in which the navigation bar icons in Live Preview windows were not correctly laid out.
  • Fixed bug in how certain errors returned by macOS were reported.
  • Made a change to allow working around broken language servers that do not exit when receiving an exit protocol notification. If BBEdit hangs when quitting because of such a server, there are two things you need to do:
  • Report a bug to the server implementor, because the server needs to be fixed to behave correctly.
  • Run this Terminal command:
  • defaults write com.barebones.bbedit ForceQuitLSPServerAfterExit_SERVERNAME -int 2
  • where SERVERNAME is replaced with the file name of the server executable on disk.
  • So, for example, to work around this bug with the terraform-ls language server, you would use:
  • defaults write com.barebones.bbedit ForceQuitLSPServerAfterExit_terraform-ls -int 2
  • The numeric parameter is the maximum number of seconds that BBEdit will wait before terminating the language server's process. This value is capped at 10 seconds; in practice, for any broken server, "1" or "2" will do.
  • Step #2 is strictly intended to be a temporary solution for any broken server, and should not be used for longer than it takes the server developer to fix the bug and release an update.
  • Fixed bug in which "Hex Dump Front Document" was inappropriately enabled when an image view was active, and would crash when chosen. (Hex Dump Front Document isn't supported for images yet, but you can still use Hex Dump File.)
  • Worked around macOS bug which would cause the list of revisions in svn or git "Compare Revisions" dialogs to be scrolled up by the height of the list header when the dialog appeared.
  • Fixed crash which would occur in the Tidy library when doing a "Clean Document" or "Reflow Document" and certain content malformations were present. (The Tidy library has also been updated to 5.8.0.)
  • Fixed crash which would occur when trying to use "Edit Markup" in a document fragment with a synthetic root tag (created by using a #bbpragma statement).
  • Fixed layout glitch in the Scripts palette and others which display folder-backed menu contents with keyboard equivalents.
  • Fixed bug in which toggling the "Enable language server" option did not correctly enable/disable the appropriate controls without first closing and reopening the language server options panel.
  • Fixed bug in which closing the Find or Multi-File Search window via its close button would activate the window immediately behind, in cases where the search window was itself not the active window.

New in BBEdit 14.1 (Feb 16, 2022)

  • Additions:
  • BBEdit can create and open multiple notebooks. Use File -> New -> Notebook to make a new one; and open them from the Finder or elsewhere as usual.
  • Notebooks can reside anywhere you like. If using a file sharing service (Dropbox, iCloud Drive, etc) you should take care to ensure that the notebook is open in only one running BBEdit at a time. Any notebook you create is supplementary to the built-in shared notebook.
  • Open notebooks are listed in the "Search in:" list in the Multi-File Search window.
  • You can arrange notes in a notebook's sidebar by clicking on the popup indicator on the right-hand side of the sidebar header. There are options for arranging by name, modification date, and creation date.
  • When a note is the active document, or is open in a window by itself, the "Close & Delete" command on the File menu will read "Remove Note", and choosing it will close the note and remove it from its notebook. As always you can assign a keyboard equivalent to this command using the "Menus & Shortcuts" preferences.
  • Image files are browseable in disk browsers and projects, and openable into ordinary window sidebars. The image view includes metadata details, and a "Remove Metadata" button is available for deleting image metadata if desired. (BBEdit will create a macOS version snapshot of the image file before doing so, if possible.) BBEdit will attempt to pick a background color (shade of gray) that provides reasonable contrast with the image. If desired you can adjust the background color using the slider adjacent to the image, and BBEdit will remember this setting per-image.
  • The File Info item (in the navigation bar) and "Get Info" command (from the menu bar or contextual menu) will show an image thumbnail and the image metadata in respective tabs in the info popover.
  • For non-image files, the "Metadata" tab in the "Get Info" will display (in a vaguely human-readable presentation) the file system and/or Spotlight metadata available for the item.
  • When deploying a web site project, a new option is available: "Remove image metadata". This will remove all metadata from the uploaded image file (without affecting the local original). It's off by default.
  • "Process Lines Containing" provides the option to invert the match test, such that lines which do not match the provided search string or pattern are collected, rather than those which do. If desired you can get this behavior by selecting "not containing" in the "Process Lines Containing" panel, or, if scripting, providing the "inverting test: true" parameter.
  • Added "BBEdit Retro" (light and dark) built-in color schemes. If you prefer monochromatic text, or if you want to see what life was like in BBEdit before version 4.0 was released in 1996, these are for you.
  • Emmet expansion works for CSS/SCSS (as determined by the document's language, and/or the location in the document).
  • Added support for doing useful things with paths files which are written out by FindAnyFile. The file format and semantics are described here.
  • Multi-File Search can use a paths file as a list of files to be searched. Drag one in to the "Multi-File Search window" or use the "Other" button as needed. (You can search multiple paths files in a single search, if desired.)
  • The bbedit(1) and bbfind(1) tools can likewise use paths files as input, as a list of files to be opened/searched (respectively). Relevant details are in each tool's man page.
  • BBEdit can load codeless language modules written using YAML or JSON. This may lower the barrier to entry, since (depending on your individual predilections) either is simpler to read (and write) than XML property lists. The keys and values remain as documented.
  • Made a change so that filename extensions are hidden for some types of items in the Multi-File Search source list.
  • Added a parameter to the odoc scripting event, so that when opening a .paths file, the client can specify whether it should be treated as text (opening into an ordinary document view) or as a list of paths to be opened into the front window. The default is false, so that .paths files opened via conventional means open as text documents.
  • Applications which generate paths files can add this Apple Event keyword to the odoc event: #define keyOpenAsPathsFile 'PthF' // typeBoolean/typeTrue/typeFalse
  • If you are using macOS Monterey (12.x), Shortcuts.app will offer a couple of useful actions: "Create Text Document" and "Create Note". These will do what their names suggest, and create the respective item using contents provided in the shortcut action.
  • If you are running on macOS Monterey (12.x) and an LSP server returns Markdown documentation in response to reqeuests from the "Show Symbol Help" or "Show Parameter Help" requests, BBEdit will display that in preference to the plain text.
  • When displaying completions obtained from a language server, the completion panel will display documentation provided by the server, if any was provided.
  • Changes:
  • Reworked the appearance of the "Commands" window a little bit.
  • Rearranged the "New" submenu on the File menu, so that there are fewer separators. Things that don't relate to the creation of text documents (or notes) are below the separator and in alphabetical order.
  • Font selection for text views (for Editor Defaults and other places) limits the maximum font size to 144pt, to eliminate confusion caused by miskeying in the font panel's size field, which itself can specify an arbitrarily large size.
  • For documents in languages for which a language server is installed and running, "Show Symbol Help" on the Edit menu will show detailed information based on the start of the selection range in the document. (This is based on the LSP "hover" feature, for those who are curious.) As always for LSP features, not all servers support this feature, nor is help guaranteed to be available at any given point in the document.
  • When using "Show Blame" (Git) or "Show Annotation" (Subversion), the resulting annotation will place the insertion point at the beginning of the line that was selected in the source document (if there was one).
  • When removing a note, BBEdit will rename the file in the Trash to reflect the title displayed in the application, to make it easier to identify (and if necessary rescue) the note file.
  • For brand-new preferences, "Wrap around" for text searches defaults to "on". (This is consistent with macOS behavior). You can always turn it off in the Find window, if desired.
  • It's possible to select text in the Clipboard window. (Be careful what you wish for.)
  • Made a change so that the Clippings palette remembers which clipping sets were twisted open across invocations (and runs of the application).
  • #! menu commands implemented by language modules (e.g. "Run" for Python) documents will present progress in a window sheet, rather than application-modally.
  • Made an internal change so that multiple language modules which support LSP can share a single server instance, if desired. For example, all of the C-family languages use clangd; JavaScript and Typescript both use typescript-language-server; and PHP and "PHP in HTML" both use intelephense. With this change, these languages are configured to respectively use a single server instance, instead of starting one server per language. This reduces memory and CPU utilization for supported languages and servers.
  • If you really need BBEdit to display glyphs for characters in the Unicode "private use area" (which isn't really possible, unless you've got a custom font), you can use this Terminal command: defaults write com.barebones.bbedit DisplayPrivateAreaGlyphs -bool YES
  • This will take effect the next time you start the application.
  • Made the green background used in function menu and completion item badges a little darker, to improve contrast.
  • When hovering over a saved search set in the Multi-File Search window source list, a tooltip will appear that displays the items contained in the search set. (NB: search sets are a deprecated feature; we recommend that you use projects instead.)
  • Made the Symbol Help panel a little wider.
  • Fixes:
  • Fixed crash which would occur at startup when the conda configuration script ("conda.sh") existed but could not be read. This typically occurred in Mac App Store builds in which sandbox access was not granted.
  • Fixed a bug in which Mac App Store builds might not be able to discover whether conda is installed, unless sandbox access had previously been granted.
  • Fixed bug in which a 12610 error would occur when trying to save changes in a Zip archive when using the Mac App Store build and sandbox access had not been granted.
  • Fixed bug in which the second Zip-related error to occur would cause the application to exit quietly.
  • Fixed a crash which would occur when a file system API would sometimes unexpectedly "soft fail" by returning a "success" result without actually providing the requested data.
  • Made a change to guard against the possible cause of a (non-reproducible) hang reported while making a selection in a Differences window.
  • Fixed memory leak when using the "Commands" command, which would occur if there were any saved Notes.
  • Guard against a nonreproducible crash when a file system API unexpectedly returns nil ("should never happen").
  • Made various internal changes to improve the efficiency and OS compatibility of the machinery that runs Unix shell scripts and does other Unix-y things.
  • Made some systemic changes to improve the performance of some text transformations: Add/Remove Line Numbers, Process Lines Containing, Process Duplicate Lines, Prefix/Suffix Lines, and Strip Trailing Whitespace.
  • Reduced the transient memory requirements of the "Precompose Unicode" transformation when applied via a menu command or the AppleScript interface.
  • Fixed bug in which clicking in a popover's trigger location when that popover was already open (e.g. clicking on the gear for Text Options) would close the popover, and then immediately reopen it.
  • Improved progress reporting when uploading files by dragging them to the FTP/SFTP browser window.
  • Fixed bug in which right-clicking on an item in a disk browser would also cause it to be viewed in the display area.
  • Adjusted the vertical alignment of icons used in menu item titles when running on macOS 11.0 and later.
  • The Perl function scanner will no longer allow anonymous functions (basically, sub followed by a brace with nothing but whitespace in between) to confuse function and fold generation. Such constructs are also included in the function menu, appropriately named.
  • The Ruby language module will color %i(...) and %I(...) literals as it does other compound literals.
  • Made a change so that svn "Revert" or git "Discard Changes" will ask Time Machine to create a file version for the file being reverted, so that it's possible to use "Compare Against Previous Version" to rescue an inadvertent revert.
  • Made a change so that Open File by Name and "Commands" take less time to come up when the Open Recent history includes files on remote file systems (e.g. SMB/NFS).
  • Added missing file filter terms to the scripting dictionary.
  • Fixed malformed alert messages when using "Compare with Base" and similar Subversion commands for items not in the repository (or scheduled for addition).
  • Fixed bug in which typing into an empty untitled document would reset its editing and display options to the defaults for its initial language (usually "Text File", unless changed in the Languages preferences), thus discarding any options changes made just before typing.
  • Fixed bug in the Java function scanner which would cause fold generation to break in cases where a new keyword was placed in an infelicitous location.
  • Fixed bug in which some Git commands were incorrectly disabled for the active document.
  • Made a change to improve performance and reduce memory utilization in the code which locates ctags files.
  • If the built-in updater gets an error trying to move the BBEdit application to the trash, it'll ask if you want to try deleting it immediately instead. (This may still fail, since moving to the trash often fails because you don't have permissions to modify /Applications. But in cases where it fails because something's wrong with your Trash, this change may help.)
  • Made a change to the built-in updater to preflight the availability of a Trash folder for the application. If this fails, BBEdit will not offer to self-update, since the chances of the updater being able to successfully move the application are slim to none.
  • Fixed bug in which some failed POSIX API operations would report the wrong error code.
  • Fixed bug in which the window title bar icon did not always change when it should have.
  • Fixed crash which would occur when searching recent files/folders during an "Open File by Name" operation and one or more items no longer existed on disk.
  • Made a change to guard against (potential) recursive alias loops in installed frameworks, which would cause a crash during startup.
  • Fixed bug in which the note that was selected when closing a notebook was not necessarily the note that was selected when reopening the notebook.
  • Projects and notebooks now include a mechanism to guard against unintentional simultaneous use from multiple computers.
  • Fixed bug in which using the "Open" command with a notebook active would set the file panel's directory to a location inside of the notebook.
  • Made a change to address a crash that was sporadically reported during application startup (although we were never able to reproduce it and still aren't sure how it happened, but that's just how it is sometimes).
  • Fixed a couple of small memory leaks.
  • Fixed crash which would occur when closing a document (or its window) while in the midst of tracking a click on a status or navigation bar item.
  • Fixed bug in Markdown syntax color run generation, which in some situations would cause coloring to malfunction during certain edits.
  • Fixed bug in which deleting a Note didn't delete its associated outboard metadata file.
  • Corrected typo in the Menus & Shortcuts preference pane.
  • Made a change so that unidentified files over 2GB in size are not considered eligible for guessing as HTML or XML.
  • Made a change to effect a small performance improvement in the HTML/XML syntax coloring scanner.
  • When using the "Include" or "Persistent Include" command to insert an include-file reference, BBEdit will set the file panel to open on an appropriate includes folder, if possible.
  • Updated the C++/Objective-C++ keyword list with some new entries from C++20.
  • Added direct, objc_direct, and objc_direct_members to the Objective-C/C++ keyword list.

New in BBEdit 14.0.4 (Dec 17, 2021)

  • Fixes:
  • Fixed regression in which double-clicking a lone selected file in the FTP/SFTP browser window would not open it as was intended.
  • Fixed a cosmetic issue with the layout of the Preferences window sidebar when running on pre-11.0 versions of macOS.
  • Made a change to the "Get Info" panel so that spaces are allowed at the beginning and/or end of a file name, as when renaming items in the Finder.
  • Fixed crash which would occur when trying to use Quick Look to preview items in a Disk Browser window's sidebar.
  • Fixed bug in which the active conda environment (if used) was not properly propagated to #! script execution via the "Run" command when in Free Mode. When running a Python script this would usually result in the wrong interpreter version being used, and/or packages unexpectedly not being found.
  • When verifying the suitability of a compiled executable, BBEdit now allows 64-bit x86_64 (Intel) binaries to qualify when running natively on arm64 (M1). This allows things to keep working when you haven't updated your installed tools yet. (But you should.)
  • Worked around macOS 12 behavior change which caused menu keyboard equivalents for some items to be incorrectly "translated" for users of non-English keyboard layouts. This broke both display and invocation of those equivalents for those users.

New in BBEdit 14.0.3 (Dec 3, 2021)

  • Additions & Changes:
  • BBEdit 14.0.3 does not add any new features. (It doesn't take away any, either.)
  • Fixes:
  • Fixed bug in which the HTML syntax checker would report certain correctly formed content types as invalid.
  • Fixed bug in which printing a note would not show its given title in the printed document header.
  • Made a change so that the test for Emmet availability doesn't slow the application down unnecessarily. (Among other things this means that the "Expand Emmet Abbreviation" command won't be enabled until the work is done.)
  • Fixed bug in which PHP functions with a namespaced return type declaration would not appear in the function menu.
  • BBEdit declares to macOS that it doesn't need any adjustments to display area to account for the menu bar notch on Macs that have them.
  • When running on macOS 11.0 and later, restored breathing room between the check box and the item title in the Multi-File Search window's list of search sources.
  • Fixed bug in the Objective-C function scanner in which method implementations with comments in the method signature would not be listed correctly.
  • The Perl language module now generates folds for all brace blocks, not just the outermost block in a function.
  • Added registry.npmjs.org to the Little Snitch policy list, so that when running node-ish things there's an explanation.
  • Fixed bug in the FTP/SFTP browser window, which double-clicking on a directory for which you didn't have read permissions would dutifully report an error, and then the internal state of the browser window would get confused, in such a way that future directory navigation in the browser would open a new browser window.
  • On macOS 11.0 and later, refined the alert behavior so that Esc can be used to dismiss single-button alerts without affecting the alert layout; this also corrects layout in the "application error" dialog box.
  • Resolved a behavior change in which dragging a .webloc file into an editing window would insert the (XML) contents of the file, rather than (as intended) the URL location specified by the file's contents.
  • Added mobileconfig to the built-in list of filename extensions mapped to XML.
  • Fixed bug in the Go and Swift language modules in which line comments which ended at the end of the file instead of at a line break were not correctly colored.
  • When doing an "Open Selection" with a partial path inside of a file belonging to a web site project, BBEdit will try to resolve it against the project's "Templates & Includes" directory, if possible.
  • Made a change to guard against a crash reported when choosing items from the Window menu (which we can't reproduce, but it seems real enough so there you go).
  • Fixed bug in which deleting a (local) document's backing file and then using "Save As" to save the document in the same location, without making any changes, would not actually write the file out.

New in BBEdit 14.0.2 (Oct 22, 2021)

  • Fixes:
  • Made a change so that BBEdit no longer queries Xcode to locate clangd and sourcekit-lsp for language services. In order to use (or continue using) those language servers, install (or symlink) them into a location in your $PATH, or symlink them into BBEdit's "Language Servers" support folder.
  • Added some default initialization parameters for clangd so that it's more likely to find necessary includes for generic C-family programs in the absence of a compile_commands.json.
  • Modified the SGML parsers so that non-XML applications can string together dashes all day long inside of declarations. This corrects an issue in which fold generation in HTML files (and similar, such as Vue.js) didn't agree with the syntax coloring/checking.
  • Fixed bug in which backtick pairs would confuse the R function scanner.
  • Fixed bug in which non-leading-digit decimal numbers preceded by an equal sign ('=') were not correctly colored in R source files.
  • Fixed crash which would occur when dragging a disk file from the Finder (or another source) into an empty Notes sidebar (i.e. no previously extant notes).
  • Fixed regression which caused the input data provided to a "Run Unix Filter" text factory operation to be empty.
  • Added a guard against a crash which could conceivably occur when restoring application state and reopening a project's scratchpad document. (This was not reproducible, but was reported once.)
  • Fixed bug in which LSP workspace/configuration requests which omitted the scopeUri parameter were essentially ignored. Now, if scopeUri is absent, BBEdit will return results based on looking up the * (generic wildcard) configuration.
  • Fixed internal exception which would occur when calling for LSP signature help and the server (in this case Intelephense) returned a response that wasn't compliant with the protocol specification.
  • Fixed bug in which "Previous Function" and "Next Function" were a little too literal in how they operated, making them less than completely useful for navigating around in Markdown documents.
  • Removed "]" from the list of line-quoting characters used to reflow lines during Hard Wrap, so that it doesn't get stripped out in situations where it's used as a multi-line closing delimiter.
  • When right-clicking to perform "New Text File" in a project sidebar, BBEdit will now bring itself to the front when necessary, so that the macOS save panel doesn't activate in the background. Saved you a click.
  • Fixed regression in which having the "UseTabKeyAsCompletionTrigger" expert preference turned on would interfere with the desired operation of the "Allow Tab key to indent text blocks" setting in the Keyboard preferences.
  • Fixed crash which would occur when clicking the "Disconnect" button in the FTP/SFTP browser window while an SFTP transfer was in progress elsewhere (such as when saving a file).
  • Fixed crash which would occasionally occur when the application was starting up.
  • Revised the prompt text for the case when "Install Command Line Tools" is unable to create either (or both) of /usr/local/bin/ or /usr/local/share/man/man1/.
  • Fixed -1701 error which would be reported when dropping an image file into an HTML or Markdown document if you also had a Document attachment script configured which did not implement the documentWillInsertTextForDroppedImageFile entry point.
  • Fixed bug in which changing a language-specific color scheme setting would apply to all currently open documents when the setting being changed was not for the prevailing application appearance.
  • Made a change to the sorting of items on folder-backed menus (such as Scripts), so that the "base" name (less the path extension) is considered alone.
  • Ensure that keyboard focus starts in the web content view when opening a "Preview in BBEdit" window.
  • Fixed bug in which balanced parentheses inside of Perl function signatures would confuse the function scanner.
  • Fixed bug in which the legacy "Use TextWrangler application icon" setting would get "stuck" even after changing the new application icon setting to a different value.
  • Made a change to further (slightly) improve performance of "is a text file" testing.
  • Made a change so that the Open File by Name cache for the active project is a little bit less aggressive about dumping the cache when a file-level change is made that doesn't involve a text file being added, removed, or renamed.
  • Fixed crash which would occur when opening the about box, if for some reason the text of the credits couldn't load. (This can happen if the application package is damaged or has been manipulated, or if something is broken in the OS at a very low level.)
  • Fixed a bug in which completions available from a language module were not correctly calculated when the completion point was in an embedded language (e.g. PHP in HTML), an LSP server was active for the document's language, and the document was opened using the built-in FTP/SFTP support.
  • Made a collection of changes intended to work around various bugs (historical and upcoming) in the macOS Save panel (Radar 83546662, FB7416680, FB9404516, FB9652216).
  • macOS 12.0 "Monterey" (honk if you love cheeses) brings fundamental changes to the crash reporting mechanics. We hope you never have to see it, but BBEdit's internal crash reporter has been updated so that it will work correctly.
  • Replaced the "BBEdit wasn't quit normally" alert with "It looks like BBEdit crashed or was force quit during startup", to resolve unwanted appearances of the alert in cases where macOS kills the application process without quitting it normally.
  • Made a change to text filter execution so that any output on stderr no longer causes standard output to be discarded. (Any parseable errors will still result in a results window, and any unparseable output on stderr will still get logged to the Unix script log.)
  • Added some additional Python keywords: async, await, case, and match.
  • Corrected the default-file-name behavior of "Save a Copy" when used with an untitled document.
  • Fixed bug in which successively reloading a multi-file search results window would cause the background notification to report an increasing (by the number of previously collected results) number of matches each time.
  • Fixed a typo in the flake8 pattern description in the bbresults man page.
  • Updated cmark (used for built-in Markdown preview generation) to version 0.30.2.
  • Made a change to ensure that the Clippings menu is up to date when the OS requests a menu update while we're waiting for an automatic clipping set change to finish.
  • Fixed bug in which switching a file's language didn't clear any existing LSP diagnostics. (This was only noticeable when the new language didn't have an LSP server configured.)
  • Worked around a behavior of AppKit (not a bug, shhhh, there are no bugs in AppKit) which caused long lines with more than a few tabs in them to wrap at unexpected points when displayed in the Pattern Playground, Rescued Documents, and/or Clipboard window.
  • Fixed bug in which clicking a line number in the line number bar would open the issue popover, if an LSP-generated issue existed on that line and "Show Issues" was turned off.

New in BBEdit 14.0.1 (Sep 1, 2021)

  • Fixes
  • Fixed crash which would occur on M1 machines while logging automatic disconnect from FTP servers.
  • Fixed bug in which the application icon in the about box didn't update if the about box was open when changing the "Application icon" setting in the Appearance preferences.
  • Fixed bug in which the keyboard equivalent assigned to "Open Issues Panel" would fail to do so and only beep.
  • Fixed bug in which notes didn't appear in the "Commands" panel unless they were open, and then only with their internal file names. With this fix, all notes are available via the "Commands" panel, and are searchable using their note name.
  • Fixed bug in the keyboard shortcut prefs UI in which clicking on a menu item's keyboard equivalent, or on the "click to set" indicator, would have no effect in situations where a menu item in the list had previously been hidden by turning off its check box.
  • Assigning a menu key equivalent will no longer prompt you in cases of a conflict, when the conflict is with an explicitly hidden menu item.
  • Fixed bug in which typing in the list of commands in the Menus & Shortcuts preferences would usually only beep and/or toggle the visibility of the selected command(s), rather than selecting a suitable command by name. You can (still) use a press of the space bar to toggle the visibility of the selected commands(s).
  • Corrected display of note names during state restoration at startup.
  • Fixed cosmetic issue with the Language and Character Set popups in the "Defaults" tab of the project site settings panel.
  • Fixed bug in which using Quick Look on a note item would display the backing file name as its title, rather than the note title.
  • Returned the reporting of AppleScript "point" properties (such as a window's position) to its previous form, since even now AppleScript can't deal with the modern representation, and isn't likely to ever do so.
  • Fixed bug in which the "Export Notes" command was tagged as requiring a license. (It's intended to be available in Free Mode, so that you can get out any notes that you created during evaluation, if desired.)
  • Made a change so that if the Conda interface service crashes for some (unknown) reason during startup, the application will no longer hang waiting for it to finish starting up.
  • Worked around a bug in the Microsoft CSS language server, which would crash because it got its feelings hurt by not having a validProperties workspace configuration provided. This could also be worked around by specifying a custom JSON configuration.
  • Added --login to the arguments for starting ksh, so that it runs correctly as a login shell.
  • Fixed bug in which the SpellingWordCompletionThreshold expert preference value defaulted to "0", which had the side effect of disabling completions from the system dictionary. It now defaults to "3", as intended, and "0" may be used to allow dictionary lookups for words of any length.
  • Corrected omission of "New Note (with Selection)" from the Menus & Shortcuts preferences.
  • Fixed bug in which automatic language guessing for text pasted into empty untitled documents didn't work when the document's language was "Text File".
  • Made the "Installed Languages" sheet a little wider by default.
  • Fixed bug in which changes to the "Wrap around" setting in the Find window didn't take effect immediately when changing the setting; so a series of steps which involved changing the setting and then activating another window without performing a search or closing the Find window would result in the previous setting getting used.
  • Fixed bug in which triple asterisks or underscores used for emphasis in Markdown weren't colored correctly.
  • When dropping a package (that is, a directory whose macOS "package" bit is set) on to the application to open it for editing, BBEdit will once again make the package folder twistable-to-browse. (BBEdit will now also twist open the dropped folder/package itself in the resulting project window. Saved you a click.)
  • Fixed bug in which the "Rename" contextual menu item in project and Notes window sidebars (and the resulting panel) did not correctly reflect when the clicked item was a collection.
  • Made a change so that errors that occur during autocompletion computations aren't reported immediately, but are instead logged in order to avoid interruptions while typing. (Errors that occur during manually invoked completions will still get reported when they occur.)
  • Updated the search tables for preferences so that you can find the "Early Access" option using the search box.
  • Fixed bug in which automatic completion would fail with (and report) a -50 error, when editing in documents using languages with an LSP server, but which were not eligible for server assistance (due to being opened via the built-in FTP/SFTP support or not actually existing on disk, as when created using the command-line tool).
  • Adjusted the behavior of the built-in JSON formatter so that it doesn't reorder values when generating output.
  • Made a change to increase performance and reduce memory usage when performing a "Find Differences" operation involving folders with a very large number of files.
  • Fixed performance regression which would cause multi-file Find Differences to take longer than necessary when "Show identical files" was turned off (which is the default setting).
  • Fixed bug in which using "Un/Comment" on an empty (no characters) line would crash rather than applying the line comment string.
  • Corrected background colors in the "Replace All" text factory action settings, so that the color matches the color scheme in use for the active application appearance.
  • Made a change to improve performance of some text transforms.
  • Fixed bug in which "Print Selection" would not print the correct range of text in some situations, including when the document was soft-wrapped.
  • Fixed bug in which case transformations on words/sentences would make a mess of the output when the case transformation resulted in words/sentences of a different length (such as when transforming Turkish text).
  • Made a change to reduce CPU usage while waiting for AppleScript execution to finish.
  • When interpreting a TSV file, BBEdit will now ignore quotes in columns, so as to avoid issues caused by (intentionally) unbalanced quotes in column data.
  • Fixed bug in handling of the bbedit(1) tool pipe case in which --language wasn't correctly interpreted when --note was in use.
  • Added a tooltip to the "Server" column in the Installed Languages list, to improve accessibility there.
  • Fixed bug in which project items would sometimes not display their titles initially when the project was opened.
  • Fixed bug in which dragging a title bar icon from an untitled document's window into the Notes window sidebar did not create a new note, as intended.
  • Dragging an untitled text document's window title bar icon to the text area of another document will now insert the original document's contents into the destination, as intended.
  • Removed vestigial "Included files menu" option from the custom language settings, and corrected the title for the "Related files menu" option.
  • Fixed bug in which clicking the "Remind Me Later" (for updates) or "Skip this Version" (for upgrades) button in the Software Update notification window would fail to dismiss the window in cases where the application was in the background when clicking on the button itself. This also set up a situation where future clicks on those buttons would have no effect to dismiss the window, although it could still be closed via the close button.
  • Made a change so that automatic software update checking (if enabled) takes place as intended while the application is running, rather than only at startup.
  • Fixed bug in which turning off all of the items in the "Navigation Bar" section of the Appearance preferences didn't hide the navigation bar, due to the presence of a vestigial setting that isn't configurable from the UI.
  • Fixed bug in which Un/Comment wouldn't work correctly for "Text File" documents when the default delimiter was in use.
  • Fixed a potential case in which the application could remove its own sleep state during startup, which would happen if the application got sent to the background (by the user or by the OS) before state restoration began.
  • Fixed bug in which a failed connection attempt during save of a file opened via the built-in FTP/SFTP support would leave the progress sheet up, rendering the window subsequently unusable.
  • Fixed alert cascade which would occur when certain errors occurred during automatic saving of text documents, such as encoding and modification-date mismatches.
  • Made changes to improve arrow-key navigation across characters which are composed of surrogate pairs (including emoji).
  • Made a change so that document autosave (such as notes, scratchpad, and crash recovery) doesn't end inline input. This prevents UI and input disruption when using inline input (such as composite diacriticals in Roman languages, as well as in CJKV).
  • Fixed bug in which the "Zoom Window Full Screen" command(*) didn't actually zoom the window to fill the screen it was on. (Also applies to "Zoom All Windows Full Screen".)
  • (*) This is one of the "special" commands on the Miscellaneous menu, which doesn't appear in the menu bar but are provided as hooks for keyboard assignments.
  • Fixed bug in which the computed replacement text in the Pattern Playground didn't display any emoji that resulted from the computation.
  • Fixed bug in which "New Note with Selection" was available on the in-application contextual menu when using a feature-limited ("Free Mode") license.
  • Made a collection of changes to further speed up batch file operations (multi-file search, Text Factory operation over a folder, and others).
  • Made changes to improve the experience when clicking the "Buy License" button and a previous-version serial number is stored in preferences. The upgrade prompt panel includes a "Copy" button to copy the serial number, and clicking the "Upgrade" button will take you to the upgrade form with the serial number field prefilled. (This does not apply to App Store versions.)
  • Made a change to improve performance of filename-to-language mapping; this will be most noticeable during large batch operations (such as multi-file search or folder comparisons).
  • Made a change to improve performance of batch operations involving text file reads when the file's encoding couldn't be determined by other means.
  • Enacted the following changes to improve behavior when running Unix scripts via #! menu and other means when Anaconda is in use.
  • By default, BBEdit will always run python when you use the "Run" command (or other means) to run a Python script which does not explicitly specify the interpreter in its #! line. You can control this behavior in the custom language settings for Python, if desired.
  • When running Unix tools and scripts, if Anaconda virtual environments are in use, BBEdit will ensure that $PATH is set up appropriately, working around some unexpected behavior of the macOS runtime environment.
  • When locating Unix tools and scripts (to support "Check Syntax", "Run", and preview generation), BBEdit will check $PATH from the virtual environment before the user's login $PATH or other sources.
  • Fixed bug in which Anaconda setup wasn't recognized when the shell configuration had been done by an older version of Anaconda.
  • Fixed bug in the Go function scanner which prevented functions with array return types from appearing in the function menu.
  • Fixed drawing glitch in the "Currently Open Documents" sidebar header which would occur when resizing the sidebar while running on macOS 11.
  • Fixed a bug in which state restoration would inexplicably fail in cases where the Notes window was open and the front window when quitting the application, and the "Open File by Name" window was left open when previously quitting the application.
  • Tweaked the vertical positioning of the "Reload" button in the preview window navigation bar when running on macOS 11.
  • Added some missing values to the list of values for the meta name attribute, to suppress warnings.
  • Fixed bug in which using "Save All" would sometimes report an "unexpected internal error".
  • Fixed bug in which the splitter position stored by using "Save Default Window" for results windows (including search results) and disk browsers was not applied correctly when making new windows.
  • Made changes to work around Dropbox deleting macOS extended attributes (which BBEdit uses to store notes metadata) when syncing the shared notebook, in cases where BBEdit's support folder has been relocated to Dropbox.
  • Convert line breaks to spaces in function names used for the function menu and other places (in case of generation by a language module).

New in BBEdit 14.0 (Jul 20, 2021)

  • Additions:
  • BBEdit 14 enables the following new and/or enhanced features for source code editing:
  • Improved language-specific completions while typing;
  • On-demand display of function parameters and (if available) documentation;
  • In-editor highlighting of errors, warnings, and notices from "linters" and syntax checkers;
  • Reformatting of entire documents and/or selection ranges;
  • Enhanced "Go to Definition";
  • Navigation to declarations, definitions, and symbol references (reverse lookup), where applicable;
  • Interactive symbol search via "Find Symbol in Workspace" and "Go to Named Symbol".
  • BBEdit 14 implements these additions and enhancements via new built-in support for the Language Server Protocol (often referred to as "LSP", not to be confused with Lightspeed Pascal).
  • (Note: Despite the term "server", nothing is transmitted over a network, nor does any data otherwise leave your computer by means of LSP support.)
  • Complete information on BBEdit's support for LSP is documented here: Language Server Protocol Support in BBEdit 14.
  • You know that thing where you have a whole bunch of untitled documents open, because it's so easy to make one and type some notes, and then just leave it open? And you rely on BBEdit's amazing crash recovery and document restoration to not lose your carefully kept notes? You can keep doing that if you want, but we have a new feature to make the whole thing faster and easier: Notes.
  • Notes are mostly like ordinary text documents, except that you don't have to remember to save them or even make up a name if you don't want to. BBEdit keeps notes all together in a "notebook". Notes exist on disk as text files; there's no secret file format involved.
  • Although notes are stored as text files, some of BBEdit's commands for working with text files are disabled or modified when a note is active, in order to avoid confusion. (For example, you can't relocate a note file since that would break lots of things, but you can use "Save a Copy" to save a copy of a note's contents as an ordinary text file somewhere else.)
  • There are many ways to make a note, so you can use whatever fits your workflow and style:
  • Choose "Note" from the "File → New" menu. This makes a new empty note, into which you can type or paste text.
  • Choose "Note (with selection)" from the "File" → New menu. If you have a range of selected text in a BBEdit text document, this command is enabled and choosing it will create a new note with the selected text.
  • Choose "Note (with Clipboard)" from the "File → New" menu. If this command is enabled, choosing it makes a new note with the contents of the Clipboard.
  • Choose "Save as Note" from the File menu. This command is available for untitled text documents (which have never been saved to disk).
  • Right-click on some selected text in a BBEdit editing window and choose "New Note (with selection)" from the contextual menu.
  • Right-click on some selected text in another application, and choose "New Note in BBEdit" from the Services submenu of the contextual menu; or from the Services submenu of the  menu.
  • Open the Notes window (on the Window menu), and use the "+" button at the bottom of the sidebar, or the contextual menu in the sidebar, to add a new empty note.
  • With the Notes window open and its sidebar visible, drag a file or some text into the sidebar. If you drag a file, the original file is left undisturbed.
  • After installing the command line tools, pipe some text into bbedit --note; BBEdit will create a new note from the text. Additional details are available in the bbedit(1) man page.
  • The "Notes" command on the Window menu opens the Notes window, which displays all of the notes that you've created. Drag notes in the sidebar to rearrange them; you can also use the "+" menu or contextual menu in the sidebar to create Collections to organize your notes.
  • When you create a note, and as you edit it, BBEdit will change the note's title based on the text at the beginning of the note. If you would like to make a note's name "sticky", right-click on it in the Notes window sidebar and choose the "Rename Note" command from the contextual menu. The name you apply there will become that note's name forever (or until you "Rename Note" again), and subsequent edits to the note's content won't affect the note's name.
  • To permanently delete a note, use the "Remove" command in the Notes window's sidebar contextual menu. You can right-click on any note to remove it; or on a selected range of notes; or on a selected range of collections and notes. (Removing a collection will remove all of the notes within it.) You'll need to confirm that you wish to permanently delete the note(s), since the operation is not undoable. When you delete a note, BBEdit will place the note's backing file in the Trash, so if you change your mind you can open the file and recover its contents.
  • If for some reason you need to export all of your notes, use the "Export Notes" command on the File menu. This will create a folder with all of your notes in it, with subfolders for collections. This command is always available if any notes exist.
  • Use the "Notes" item in the list of search sources in the Multi-File Search window to have BBEdit search your notes when doing a multi-file search (or replace, or extract).
  • You can quickly go to a note using the "Open File by Name" window; enter all or part of a note's title, and matching notes (and other files) will appear in the results.
  • If you are using Anaconda via the conda or miniconda tools, BBEdit will list your available environments on the "#!" menu, and you can change the active environment (which has effect only within BBEdit) by choosing it from the menu.
  • The following notes and limitations apply:
  • Scripts and filters that you run from the #! menu's commands, as well as from the Scripts menu, Apply Text Filter, and text factories, will use the additional environment variables contributed by the current virtual environment.
  • This includes, but is not by any means limited to $PATH, and so switching virtual environments may alter the behavior of Unix script operations in ways that only make sense if you keep this in mind.
  • Shell Worksheets do not participate in virtual environment awareness or switching.
  • Added "Repeat Last Command" to the Edit menu. This command literally repeats the previous menu command selection. This includes base menu commands as well as items on the Scripts, Clippings, Apply Text Filter, and Stationery submenus.
  • Note that that choosing the Repeat command only repeats the selection of the previous menu command, not necessarily its effects. If the state of your document or the application has changed so that the previous command would be disabled, "Repeat" will be disabled.
  • The only repeatable commands are the ones that also appear in the "Commands" command window. Therefore, items on the "BBEdit" menu are not repeatable, nor is the "Repeat Last Command" command itself, nor is the "Commands" command.
  • Some menu commands will not affect the "Repeat Last Command" state, specifically: commands on the Window menu, Close commands, and "Next Document"/"Previous Document" will leave the Repeat Last Command state alone. So (for example) if you did "Change Case" on a document, and then switched to another document, "Repeat Last Command" would repeat the selection of "Change Case".
  • The factory default keyboard equivalent for "Repeat Last Command" is Command-Y. As always you can adjust this in the "Menus & Shortcuts" preferences.
  • Added "Automatic completion" to the language-specific preferences, in the "Editor" tab. You can employ this as desired, either to turn completion off by default and then re-enable it for specific languages, or (more likely) turn off automatic completion for Markdown and other content- oriented (vs code-oriented) languages.
  • Added the extract command to the scripting dictionary.
  • The Clipboard window makes a triumphant return. (Choose "Show Clipboard" from the Edit menu to make it visible.)
  • When dragging an image or an HTML file into a Markdown document, BBEdit will generate appropriately formatted Markdown references. (As when doing this in an HTML document, you can bypass the behavior by holding down the Option key while dragging and dropping.)
  • BBEdit now displays Finder tag information for files in sidebars. You can control this using the "Show Finder tags in sidebar lists" setting in the Sidebar preferences.
  • File (and folder) filters include a new term: "Any Finder tag". You can enter the name of a single Finder tag in the string field, and if the file has any Finder tags applied and any of the applied tags matches the tag name you entered (using any available string test), the file or folder will match the filter.
  • "Remove Blank Lines" is now available as a text transformation on the Text menu, in text factories, and via the AppleScript interface. This transformation will remove blank (only whitespace) and empty (no characters before the line break) lines from the document. This saves you the trouble of having to come up with a Grep pattern to do the same work, as well as the effort of trying to misuse "Process Lines Containing" for the job.
  • Added "Alternate Case" to the available options for Change Case (in the menu command, submenu, text factories, and scripting interface). This option will force the character case of everything in the processed range, starting with lower case and alternating between upper and lower; and resetting at sentence boundaries. hErE'S aN eXaMpLe Of WhAt ThIs LoOkS lIkE. sOmEtImEs It's CaLlEd "sPoNgEcAsE".
  • The "Replace All" panel for text factory windows now provides a "history" menu button, providing access to the Find window's history. That way, if you've spent time sorting out a search/replace pair in the Find or Multi-File Search window, you can easily reuse it in a text factory without resorting to copying and pasting it like some kind of cave dweller.
  • You can now control whether any given language appears in the Languages menu (as used in the status bar and in the "Text Options" panel). In the "Languages" preferences, click the "Installed Languages" button to see the list; you can use the check box in the "Menu" column to show or hide the language. Hiding a language from the menu does not affect BBEdit's ability to open files in that language.
  • When "Show matches" is turned on in the Find window, a status line appears at the bottom of the window to indicate the live-match results.
  • BBEdit will now provide docset information to Dash when you use "Find in Reference". Most of BBEdit's factory-supplied languages specify a default docset list, derived (where applicable) from information provided by the developer.
  • Custom language settings (in the "Languages" preferences) have a tab for "Dash". In here, you can customize (or set up) the list of Dash docsets that BBEdit will request when using Dash for "Find in Documentation".
  • The Languages preferences pane now has settings to control the default language. There are separate settings for new vs. existing documents, the latter which affects files that already exist, but which don't carry any metadata (such as a mode line, EditorConfig file, or filename extension) to identify their language.
  • Added two commands to the Text menu: "Reformat Document" and "Reformat Selection". These are enabled when the current document's language module supports reformatting intrinsically, or if the language module has a configured running language server which supports the respective capabilities.
  • Added "Expand Emmet Abbreviation" to the Edit menu. If you have Emmet installed (see below), this command will ask Emmet to expand the abbreviation on the line containing the insertion point, based on the line's contents and the position of the insertion point.
  • This feature requires that Emmet be installed, which you can do using "npm install emmet"". That means you must also have Node and npm installed. You can do this using Homebrew (use "brew install node") or some other utility; or by downloading the installation package from the Node.js web site.
  • As long as the emmet package has been installed as of application launch, BBEdit will be able to run Emmet.
  • Added JSON formatting support to the factory-supplied JSON language module. Choose "Reformat Document" from the Text menu to reformat the document's text.
  • Added built-in support for R syntax coloring, function navigation, and folding.
  • Added a built-in language module for Lisp (its base keyword set comes from Common Lisp), Scheme (whose keyword set is derived from MIT scheme), and Clojure.
  • Added built-in support for Go: syntax coloring, function navigation, and folding.
  • Added a built-in language module for Rust.
  • Added a built-in language module for TOML.
  • Added built-in support for syntax coloring and function navigation in Arduino source files. The "Arduino" language is treated similarly to C++, so that counterpart navigation and other relevant features behave as they would for such files.
  • Note: If you previously were using an outboard Arduino codeless language module, we recommend that you remove it from your Language Modules folder, or else it will override the built-in support.
  • Added "Vue.js" as a distinct language setting, to allow separate filename extension mappings and language server configuration for Vue.js source files.
  • Added a language module for USDA, the ASCII interchange format for Universal Scene Description files.
  • Added Grep syntax coloring to the text factory "Replace All" sheet (when "Use Grep" is turned on).
  • Added support for ~~strikethrough~~ syntax coloring in Markdown documents, as defined in GitHub-flavored Markdown.
  • Added an adjustable splitter to the Pattern Playground window, so that the Search Pattern area can be enlarged.
  • Packages can now contain a Custom Keywords folder and thus contribute additions to any language's built-in keywords.
  • Changed the HTML syntax coloring scanner so that "sloppy" comments which contain runs of dashes are allowed, as long as they begin with "".
  • Added support to Markdown module for syntax coloring of footnote references and footnote definitions, as supported by some flavors of Markdown.
  • A footnote definition must start at the beginning of a line, and looks like [^theName]: the footnote text.
  • An inline footnote reference is just [^theName].
  • URLs from inline links in Markdown documents are now listed in the includes menu at the top right of the editor window. Selecting one of these URLs from the menu will do the regular thing: try to open the contents of that URL in a new document.
  • If the system trackpad preference for "Look up & data detectors" is set to "Force Click with one finger", then doing so on a word in a text document will open the Dictionary panel on that word.
  • Added the ability to drag files (not folders) from an FTP/SFTP browser window to the Finder (and other applications that want files). When the item is dropped in its destination, BBEdit will download the file as indicated.
  • This is intended strictly as a convenience.
  • The "Add Items" file panel for projects gets a "Show hidden items" check box, which allows you to add normally invisible files/folders to the project.
  • Added "Show in Project List" to the contextual menu for a single item in the Currently Open Documents list of a project window.
  • The Appearance preferences provide the following options for which application icon to display in the Dock:
  • Default: the factory application icon;
  • Classic: the icon used in BBEdit versions 11-13;
  • Legacy: the icon used in versions of BBEdit first shipped in the 20th century;
  • TextWrangler: the TextWrangler application icon.
  • Added the ability to use wildcard filename extension mappings, both in the custom mapping list (Languages preferences) as well as in the defaults for a language module, in its BBLMFilenameExtensions list.
  • Added "Precompose Unicode" to the Text menu. This command will convert decomposed Unicode pairs (such as a letter followed by a combining accent or diaresis) into a single Unicode character, where possible. Precompose Unicode is also available as a Text Factory operation as well as via the AppleScript interface.
  • "Open in New Window" is available when right-clicking on an item in the Project section of the list, as well as in the Notes window, for documents that are not otherwise open in the current window. Likewise, for documents that are open in the current window, "Move to New Window" and "Open in Additional Window" are available on the contextual menu in the Project section (or Notes window sidebar).
  • Text factory windows get a contextual menu; you can cut, copy, paste (if you previously cut or copied a text factory operation), and enable/disable selected items.
  • Added "Open Issues Panel" to the Navigation Bar section of the Menus & Shortcuts preferences; this keyboard equivalent can be used as a substitute for clicking on the diagnostics indicator in the navigation bar. In addition, using this keyboard gesture while the insertion point is in the middle of an underlined issue range will open an issue panel at that location.
  • Added omni*js as a default mapping to TypeScript, to support Omni Automation composition.
  • Added a new script attachment point, to provide additional control over the text generated when you drop an image file into a BBEdit editing view.
  • The entry point for the script is documentWillInsertTextForDroppedImageFile, and the parameters are (listed in the order supplied):
  • a reference to the BBEdit document on which the image file is being dropped;
  • a reference to the image file being dropped;
  • the text generated by BBEdit for the drop, if any. This will always be present, but may be the empty string.
  • Unlike the other "will" attachment points, documentWillInsertTextForDroppedImageFile should return a value. This can be one of:
  • the proposed text, which inserts what BBEdit would have inserted anyway had this script not been present;
  • the missing value pseudo-value, which will abort the drop operation (and insert no text);
  • some customized string, generated at the script's sole discretion.
  • Note that BBEdit will wait for this function to return, so any work that it does must take minimal time (or be done asynchronously, perhaps in an "ignoring application responses" block).
  • Changes
  • The "BBEdit Backups" folder now lives inside of the application's sandbox container, within the "Documents" folder. You can get there from the "Document Backups" command on the Folders submenu of the BBEdit application menu. Existing BBEdit Backups folders (including those in Dropbox, iCloud Drive, and the previous location in ~/Documents/) are recognized and used in place; there is no need to relocate them.
  • "Reveal in Finder" and "Reveal in Project List" have been renamed to "Show in Finder" and "Show in Project List", respectively. They still do the same thing, though.
  • Added a "System Diagnostic Folders" entry to the Folders menu, for quick access to diagnostic logs generated by macOS.
  • "Entab" and "Detab" have had their names changed to "Convert Spaces to Tabs" and "Convert Tabs to Spaces", respectively. This is more verbose but less abstruse.
  • The "none" indicator for unset keyboard equivalents in the Menus & Shortcuts preferences now reads "click to set", thus making it clear(er) that you need to do something to change an unassigned keyboard equivalent.
  • The "Counterparts" navigation bar item has been renamed, and reworked. It's now called "Related Files", and the Appearance preferences have been changed to reflect that. The Related Files menu contains includes (as detected by the language module's function scanner, if any) as well as related "counterpart" files in the same directory. The "Includes" navigation bar item has been retired (and the Appearance preferences have changed to reflect that, too).
  • Although BBEdit will avoid activating the "Unix Script Output" window when it's already open, you may find it desirable to do so anyway. If so, an expert preference exists for this purpose: defaults write com.barebones.bbedit AlwaysBringUnixScriptOutputToFront -bool YES
  • When using a Unix command to generate HTML for previewing, BBEdit will set the current working directory to the directory containing the document, if possible. That way, processes which depend on being able to find data relative to the file can use getcwd(3) to find the appropriate location.
  • File transfer progress for open/save via FTP/SFTP is now window-modal when possible.
  • The Expert Preferences help is now exclusively served on our web site, at https://www.barebones.com/support/bbedit/ExpertPreferences.html. The button in the "Expert" preferences pane will take you there, as will the Expert Preferences link in the help book.
  • Made a change so that shell worksheets don't show the language setting by default. (The language for worksheets is always "Unix Shell Worksheet".)
  • If for some reason you need to show or change the language of a shell worksheet (which affects only its display, not its behavior), you can do so with an expert preference: defaults write com.barebones.bbedit ShowLanguageSettingInShellWorksheets -bool YES
  • The old path overrides for git and svn are surplus to requirements and are no longer supported. If BBEdit can't find those tools in your $PATH, fix your shell environment configuration as needed. If you need to disable Git or Subversion support entirely, turning the appropriate menu off in the "Menus & Shortcuts" menu does that.
  • Made a change to behavior when using "Save Default Text Window"/"Save Default Project Window" as follows: if the "Automatically show sidebar" preference is set to "as needed", BBEdit will store the current sidebar visibility of the window as part of the default window layout. Otherwise, if the sidebar preference is set to "Always" or "Never", then BBEdit will set the default sidebar state to be visible ("Always") or hidden ("Never"), respectively.
  • BBEdit will always apply the font configured in the "Editor Defaults" preferences when opening an existing document, even if a different font was manually set in the document. That way, if you save changes to a file, close it, and subsequently change the default font setting, the new font setting will be in effect the next time you open that file, rather than the previous default. If you prefer the previous behavior, go to the Editor Defaults preferences and turn off "Override document setting".
  • Added a setting to the Editing preferences, to explicitly collapse folds below a specified level when opening a document. This setting is off by default.
  • When running on macOS Big Sur, the "Don't Save" button (or its equivalent) in the "save changes before closing" alert is now tagged as a "destructive action" button. The OS may elect to color this button accordingly and/or implement behavior changes to prevent its accidental use. (At this writing, there is no visible difference in the button's appearance.)
  • Slightly tweaked the table layout in the Find Definition sheet for multiple results.
  • Gave item badges for the completion/function/Find Definition/Go To Named Symbol lists a white border to increase legibility on dark backgrounds (in dark mode or when selected).
  • Turned off "Check spelling as you type" by default for JSON and SQL. If you need this back on, you can add a custom language preference setting in the Languages preferences.
  • The Includes menu will show icons for other include-file reference types, based on their name.
  • Changed the factory default application appearance setting to "Use system appearance" rather than forcing Dark Mode. As always you can change this in the Appearance preferences. Existing preferences are unaffected by this change.
  • Made BBEdit's clipboard processing aware of "transient" items placed on the system clipboard by utilities such as Typinator, TypeIt4Me, TextExpander, and others. Under those circumstances, BBEdit will avoid rotating the clipboard ring so as not to disturb the other contents of the ring.
  • Changed the behavior of "Compare Two Front Windows" so that instead of always putting the newer document on the left, it will always put the front window's document on the left. In this way, if you want to alter the position of the compared documents, it's as simple as altering the front-to-back order of the desired windows.
  • Changed the behavior of "Un/Comment Lines", so that if any lines in the selection range are uncommented, then all lines in the selection range will be prefixed with the line comment delimiter -- including lines which are already prefixed. If all lines are prefixed with the line comment delimiter, then BBEdit will remove the first occurrence of the line comment delimiter on each line, thus returning things to their previous state. This behavior is consistent with the "toggle comments" behavior of Xcode and others.
  • Made some changes to how status bar items are laid out below the text area, so that they occupy a little less space. This allows the Text Encoding and Line End status bar items to be on by default. (As always you can adjust which items are visible using the Appearance preferences.)
  • The document modification date status bar item will display only the time, in cases where the modification date is "today". If the document was last saved on a different day, the status bar will show the date and time.
  • When you are running in Free Mode and choose a command that requires a paid license or active subscription (the latter only in the Mac App Store), BBEdit will now bring up its license panel, which provides a better experience than the previous alert.
  • When aging out rescued items from the "Rescued Documents" window, BBEdit will place them in a "Rescued BBEdit Documents" folder in the Trash, so that their origin is a little less mysterious. (Reminder: you can control document rescue behavior in the "Text Files" preferences.)
  • When doing an Extract operation (from the Find or Multi-File Search window), with Grep turned off, BBEdit will now extract the entire line containing the match, rather than just the exact match. Because when your spouse needs to process a gigabyte of CSV data across two dozen files in under ten seconds, you do what you have to do.
  • Increased the maximum width of the Window palette, again.
  • Changed (and normalized) the nomenclature: "Spaces per tab" is now used instead of "Tab width: xxx spaces" in the Editor Defaults preferences, Text Options sheet, text options popover, and the font panel.
  • Added a stepper control to the tab width in the font panel (View => Text Display => Show Fonts) and modernized the control layout.
  • Added stepper controls to the tab width setting in the "Text Options" sheet and the Editor Defaults preferences.
  • If a search/replace string pair is added to the history as the result of an Extract operation, the history menu will so indicate.
  • Changed "Find in Reference" on the Search menu to "Find in Documentation", which is less ambiguous now that "Find References to Selected Symbol" exists.
  • Added qualifying terms (AND, OR) to the file filter editor settings.
  • Updated the built-in cmark to version 0.30.0 (the current as of this writing).
  • Language module developers: language modules (compiled and codeless) support a new (and recommended) property key: BBLMFilenameExtensions. This is an array of strings, and is intended to replace the legacy BBLMSuffixMap array of dictionaries.
  • Each string in the BBLMFilenameExtensions array is a filename extension (which by definition does not include a period) which should map to the language being described.
  • For backward compatibility, BBEdit will continue to recognize and load the legacy BBLMSuffixMap array, but you should not use it for new modules.
  • Language module developers: string constants in the language module API have been redefined as global symbols rather than macros, so that they get stored in a single global section rather than being replicated every time "BBLMInterface.h" gets included. You will need to add "BBLMInterface.mm" to your project.
  • Language module developers: if you would like to specify a default docset list for BBEdit to use, add a BBLMDashDocsets value to your language module's property list, with an array of strings. Each string is a docset name, and the list is provided to Dash in the order that you specify it.

New in BBEdit 13.5.7 (Jun 16, 2021)

  • Fixes:
  • Made changes to work around a weird intersection of font metrics and floating-point math which would sometimes cause printed text to fail to indent after the first tab.
  • Fixed bug in which changing a document-specific print setting in the print panel would fail to take effect immediately, in situations where the setting was being changed to match the global preference.
  • Made a change so that the Open Recent submenu doesn't try to repopulate itself in response to a simple keyboard equivalent match (since the menu itself doesn't have any keyboard assignments possible). This will help when there are a large number of recent items stored on slow remote file servers.
  • Fixed bug in which Esc didn't work to dismiss sheets in certain situations when "Enable meta sequences" was turned on in the Keyboard preferences.
  • Fixed a case in which closing a results or Disk Browser window with an unsaved document would inappropriately prompt to save changes to the document in cases where the document was open in (at least) one other window.
  • Made a change so that file changes in node_modules or directories hidden by .gitignore no longer invalidate the Open File by Name window cache.
  • Fixed a typo in the "hex digit" character class example in the Grep cheat sheet.
  • Fixed crash which could occur when trying to dismiss the Multi-File Search window (via Esc or Cmd-W) immediately after opening it.
  • Fixed hang which would occur when using Cmd-left-arrow (and probably other cursor movements) more than 2GB into a file.
  • Added some armor plating to prevent an reported event-handling crash that we can't reproduce.
  • Updated the HTML5 syntax tables to allow some attributes and values for that were previously reported as errors.
  • The HTML5 syntax check will no longer complain about the value attribute missing a value in the input element.
  • Fixed crash which would occur when clicking in the text of a file being displayed in a Differences window, when the underlying file had been deleted and the file had been in /tmp on macOS 10.15 and later.
  • Fixed a few memory leaks.

New in BBEdit 13.5.6 (Apr 29, 2021)

  • Additions/Changes:
  • "Open Selection" via the contextual menu for folders in a project window's sidebar will open a new instaproject window for each selected folder, even if one is already open.
  • Fixes:
  • Made a change to reduce the amount of time required to start a multi-file search when one or more data sources was a collection of discrete files (such as a project, Xcode or otherwise).
  • Made a change to prevent a crash which could occur when saving a document opened via the built-in FTP/SFTP support, after the connection had previously been closed.
  • Fixed a pair of bugs that conspired to cause a crash, after following a fairly convoluted process that involved opening a document from an FTP/SFTP browser window and subsequently using "Save [a Copy] to FTP/SFTP Server" on the same server.
  • Fixed bug in connection management in the "Save to FTP/SFTP" panel which would cause the panel to connect to the wrong server when disconnecting from one server and reconnecting to a different server.
  • Fixed bug in which using the "Find Selected Text in " menu command would report a -1708 error when the previously selected set of search sources consisted solely of "Open Editing Windows" or a subordinate window.
  • Added NS_OPTIONS to the keyword lists for Objective-{C,C++}.
  • Fixed bug in which Unicode characters which could not be mapped to Mac Roman were not always correctly reported when trying to save a file in that encoding. (And in cases where they weren't reported, they were usually mismapped.)
  • Fixed bug in which dragging text from another application without holding the Option key down would, at the originating application's sole discretion, delete the text in the original.
  • Fixed bug in which the application did not correctly reopen previously open documents in cases where it was unable to restore a Sleep State file saved by a previous normal quit, but a Saved Application State file did exist.
  • Made a change to handle mis-encoded results from perldoc when using "Find in Reference".

New in BBEdit 13.5.5 (Mar 26, 2021)

  • Fixes:
  • Worked around a performance bug introduced by macOS Big Sur which would cause unnecessary extra drawing work to be done in the sidebar, even during something as simple as blinking the insertion point.
  • Corrected fold generation for function bodies in languages backed by codeless language modules that use a function pattern with an explicit function capture group.
  • Fixed bug in which wildcard language mappings were incorrectly tagged when cached, which would subsequently cause problems with similar-but-different filename mappings.
  • Fixed a bug coloring comments in the Swift language module.
  • BBEdit will now save backup copies of its sleep state and crash-recovery snapshots, to guard against potential cases where the default copies aren't available.
  • Fixed bug in which the "Zap Gremlins" text factory operation would report an error if "Replace with HTML Entity" was selected.
  • Made a change to work around an app store behavior in which the application receives "transaction completed" notifications for subscriptions which are evidently missing from the local receipt. This would in turn cause some customers to be prompted for their App Store credentials at application startup.
  • Fixed bug in which differences which ended at the end of either document being compared did not display sub-line differences.
  • Corrected the layout of slider controls in the Appearance preferences when running on macOS Big Sur.
  • Fixed a latent bug in which the ctags system was not correctly set up when sandbox access was available, which could lead to subsequent unexpected behavior.
  • Fixed crash which would occur when interacting with the clipping set list in the Setup window after making a change in the Clippings folder while the Setup window was open.
  • Fixed a layout bug in the Bookmarks setup pane.
  • Made a change to guard against inappropriate sudden termination by the OS. If this condition is detected, BBEdit will attempt to write out its sleep state and avoid the "wasn't quit normally" alert at next startup.
  • Fixed crash which would start with using "Close All Documents" while a Differences window was active, and subsequently trying to use the menu system.
  • Fixed a layout glitch in the "Line Spacing" slider in the Editing preferences when running on Big Sur.
  • Changed the behavior of the lorem ipsum generator when generating sentences, so that it emits two line breaks between each sentence (thus turning each into a "paragraph").
  • Made a change so that BBEdit no longer tries to use Source Code Pro if it is installed and a default font is not otherwise chosen. (There are too many broken versions of Source Code Pro out there.) BBEdit will use Inconsolata if it is installed; and if it is not, BBEdit will use Menlo.
  • If you were previously using Source Code Pro and you find that the font changes, go to the Editor Defaults preferences and select Source Code Pro as your preferred font.
  • Fixed bug in which using "Save {a Copy} to FTP/SFTP Server" would cause subsequent document saves to unnecessarily require a new connection, in cases where a connection was already open to the server via an FTP/SFTP browser.
  • Fixed bug in which the "Product Info" button was inappropriately hidden in the license panel.
  • Fixed bug in which using bbedit -w /path/to/some/file to start the application would result in the command-line invocation returning prematurely (before the document in question had been closed).
  • Fixed bug in which the placement of tick marks in the vertical scrollbar didn't take the overscroll ("extra vertical space") preference into account.
  • Fixed performance bug in which resizing the sidebar in windows containing a large number of documents which in turn had Soft Wrap Text turned on and were set to wrap to the window width would (inhales deeply) stall the application and frequently fail to resize the sidebar.
  • Using the "PreferredFilenameExtension" expert preference set to an empty string will now suppress addition of a default filename extension when saving a new file (that being the originally intended behavior). We recommend that you avoid this unless absolutely necessary, since macOS relies heavily on filename extensions to determine file types and application associations.
  • Made a change so that compressed file names which have an interposed numeric filename extension (e.g. "system.log.0.gz") are now recognized as text files for purposes of file filtering in the Open panel and other places, as long as the file name that remains after stripping off the compression extension and numeric extension is recognized as a text file name. (As a reminder, files whose name extensions aren't known to BBEdit can be added to the list in the Text Files preferences, or mapped to a language in the Languages preferences, as appropriate.)
  • Added "TextWrangler" to the search metadata for the Appearance preferences pane, so that the "Use TextWrangler application icon" option comes up in the search results.
  • Fixed bug in which the "Unix Shell Script" language module would generate incorrect syntax coloring information when the range of text being colored ended with a backslash; this in turn would lead to other symptoms down the road, such as crashes when trying to generate rich text for Services and other uses.

New in BBEdit 13.5.4 (Jan 6, 2021)

  • Changes:
  • Changed the default location for the "BBEdit Backups" folder, from Documents into the application support folder proper. This avoids various bugs and misfeatures in macOS 11 that are triggered by having items in the Documents folder.
  • The previously supported locations are still supported.
  • As always you can get to this folder in the Finder by choosing "Document Backups" from the Folders submenu of the BBEdit application menu.
  • Fixes:
  • Adjusted the behavior of "automatically wrap files with long lines" so that it is less likely to do so on files that don't actually require it.
  • Added atomic to the keyword list for Objective-C/C++.
  • Fixed a bug in which using a status (or navigation) bar item's keyboard equivalent while it was open would cause unexpected behavior in the menu.
  • Fixed bug in which the Get Info panel showed incorrect information for the owner and group in the Permissions tab.
  • Fixed bug in which "Reload from Server" for a remote document would fail to correctly decode the data provided by the server in cases where the document itself had been reopened from a cached local copy during state restoration.
  • Undid a change intended to work around a macOS bug (FB8925588) because the change appears to trigger even worse behavior in the OS (namely, causing the OS to set up a new sandbox container and break symlinks to existing BBEdit support folders). The workaround has been refined so that the OS will not create a phantom "BBEdit" placeholder in your home directory. (If there is one there already, leave it alone - deleting it will end in tears.)
  • Worked around a bug in macOS 11 (FB8925588) which created a bogus symlink to a nonexistent "BBEdit Backups" folder; when trying to save a document with "Keep historical backups" turned on, this resulted in an inappropriate prompt for sandbox access.
  • Fixed bug in which "Reload from Server" did not update the internal knowledge of the file's modification date on the server, such that a subsequent save would incorrectly report that the file on the server may have been modified.
  • Made a change to improve performance when dragging (or pasting the contents of) an extremely large file into an empty untitled document.
  • Made a change to reduce the amount of memory required when inserting a file's contents by dragging it into the text area in an editing window.
  • Fixed bug in which codeless language modules would fail to correctly generate folds in some cases, primarily when the closing block delimiter appeared at the very end of the file without a line break or whitespace after it.
  • BBEdit will forego live highlighting of selected text, as well as live highlighting of matches in the Find window, if the document is over 256MB in size. The limit is adjustable, but you rarely (if ever) should need to do so.
  • The expert preference for changing the size limit is: defaults write com.barebones.bbedit LiveMatchSizeLimit -int N (N is an integer value, expressed in megabytes.)
  • Fixed bug in which files requiring HTML conversion for deployment were skipped if all of the deployment preprocessing options (check syntax/links, update images/placeholders) were turned off.
  • Made a change which might prevent macOS from abnormally terminating the application during restart/shutown operations.
  • The HTML5 syntax checker will no longer report an error for the loading attribute in img and iframe elements, as long as the provided value is either lazy or eager.
  • When opening a file that is determined to be all ASCII characters, BBEdit uses the "Default text encoding for new documents" setting to choose the document's encoding, unless the setting is one of the UTF-16 values. If the setting has been changed to "Unicode (UTF-8, with BOM)", however, this has the unintended consequence of subsequently adding a UTF-8 BOM to the file when saving, which may be undesirable.
  • Therefore, if the default encoding setting is "Unicode (UTF-8, with BOM)" and BBEdit is opening an all-ASCII file, the document's encoding will be set to "Unicode (UTF-8)" (i.e. without a BOM) in order to preserve fidelity with the representation on disk.
  • Fixed bug in which using the "Restore Defaults" button in the Text Colors preferences did not reset the preferences UI to reflect the default state.
  • Fixed bug in which the window title bar icons of non-text documents (such as text factories) couldn't be dragged.

New in BBEdit 13.5.3 (Dec 15, 2020)

  • Additions:
  • If you need to completely disable the search history in the Find and Multi-File Search windows, you can do so now, using the following expert preference command:
  • defaults write com.barebones.bbedit DisableFindAndReplaceHistory -bool YES
  • If BBEdit was quit abnormally (crash, force quit, system panic, meteor strike or other force majeure, etc), then the next time you start the application, it will prompt you to confirm whether or not you'd like to reopen any documents that had previously been open. Generally "Reopen Documents" is the desirable course of action, but you can skip this. (If you elect not to reopen, BBEdit will still restore auto-recovery snapshots of any unsaved/untitled documents.)
  • Changes:
  • The Expert Preferences help is now exclusively served on our web site, at https://www.barebones.com/support/bbedit/ExpertPreferences.html. The button in the "Expert" preferences pane will take you there, as will the Expert Preferences link in the help book.
  • Fixes:
  • Fixed crash which would occur when trying to use "Save As" with a shell worksheet.
  • Fixed bug in which folder comparison would fail to identify matching pairs of files correctly.
  • Fixed bug in which opening multiple documents with the same name simultaneously would result in the documents' entries in the Currently Open Documents list not having the proper path qualifiers.
  • Made a change so that underscore isn't auto-paired when typing at the end of an inline link in Markdown documents (as well as in some other similar contexts).
  • Fixed bug in which items which were drawn truncated in sidebars and the Multi-File Search sources list should have shown tooltips for the full paths, but didn't.
  • Made changes to improve performance when using "Save {As, A Copy} to FTP/SFTP Server", primarily by using an existing connection when possible.
  • The HTML5 markup checker will no longer emit a warning for Twitter card meta name attributes.
  • Some applications (looking at you, Joplin) try to open BBEdit by invoking open -a /path/to/BBEdit.app and including one or more URLs on the command line. You really shouldn't do this, but because we're such nice people, BBEdit will try to open anything in the argument list that looks like a file path or file:// URL, as long as it actually exists on disk.
  • Fixed bug in which turning on the "Counterpart button" navigation bar preference would cause the Counterpart button to appear in scratchpad documents (where it has no business being).
  • Made a change so that the "--resume" option to bbedit(1) behaves as desired when using iTerm 3.4 or later.
  • Corrected the appearance of the Setup window toolbar when running on macOS 11.
  • Fixed bug in which encoding errors encountered during a "Reopen Using Encoding" operation would report an inappropriate additional error alert.
  • Fixed bug in which application state restoration would attempt to connect to remote FTP/SFTP servers even when it was not necessary in order to reopen a remote document.
  • When opening a document, or pasting text into an empty document, BBEdit will turn soft wrapping on if the document's average line length exceeds a suitable threshold. This helps preserve performance in the "I just pasted thirty megabytes of JSON into a new window" case.
  • Made a change to limit the maximum amount of text passed from an editing view's text selection range to the default search string of "Open File by Name".
  • Fixed bug in which using the "Text Options" command to set a document's language to (none) would not make the desired change.
  • Fixed bug in which a per-language soft-wrap indentation setting was not correctly applied when opening an existing document.
  • Made a change to fix a reported crash when saving an FTP/SFTP document back to the server, possibly while overwriting a document of the same name after using "Save [a Copy] to FTP/SFTP Server".
  • Fixed bug in which an encoding mismatch reported during save of a document to an FTP/SFTP server would mess up the process, usually saving the document even when "Cancel" had been clicked, and in any case leaving the application stuck with a "Saving to server" progress panel.
  • Fixed bug in which file filter terms based on the file name and/or path components (i.e. most of them) did not work correctly when filtering the contents of compressed archives.
  • Made a change so that if the shell unexpectedly exits behind a shell worksheet (such that it indicates ), the next command will restart the shell.
  • Fixed a layout bug in the completion panel which would cause the names of completion items to be truncated prematurely.
  • Fixed a layout bug in the completion panel when the available completions were all very narrow and/or there was only a single completion available, when running on macOS 11.0.
  • Added default block-comment delimiters to the PHP language module.
  • Worked around a bug in macOS 11.0 (FB8925588) in which the OS appears to want to create a phantom "BBEdit" folder in the user's Documents folder, with an alias (probably a symlink) pointing to a nonexistent BBEdit Backups folder.
  • If for some reason you need quick access to your BBEdit Backups folder (which is only created and populated if you previously turned on historical backups in the Text Files preferences), you can get to it by choosing "Document Backups" from the Folders submenu of the BBEdit application menu, or from the list in the "Folders" toolbar item in the Setup window.

New in BBEdit 13.5.2 (Nov 10, 2020)

  • Additions:
  • The Mac App Store release now runs natively on Apple Silicon. (App store rules prohibited submission of Apple Silicon builds before now.)
  • Fixes:
  • Fixed bug in which pseudo-definitions in built-in tags files were inappropriately included in the results of "Find Definition" (both the direct command and on the contextual menu).
  • Adjusted the HTML/XML function/fold scanner so that fold stack overflows (which can happen in hideously malformed documents) will now only cause fold generation to cease, rather than abandoning the entire function scanning process.
  • Fixed bug in which a fold range was not generated for foldable constructs at the end of Python files in some circumstances.
  • Made a change to guard against a crash while examining error output from ssh during SFTP connection attempts.
  • When saving a document opened by the built-in FTP/SFTP support, BBEdit will now "block" the window with a small progress panel. This eliminates an opportunity in which it was possible to close the document while communications with the server were in progress, but before the file had been saved.
  • AppleScript shutdown items that tell the application to quit will no longer crash the application. (Note: the application is already quitting; shutdown items do not need to tell the application to do so.)
  • Fixed crash which would occur when comparing two files, and either of them got deleted before the Differences window appeared. This usually happened as the result of using bbdiff as a helper tool without specifying the "-w" option.
  • Fixed bug in which it was possible for the application to load an ancient Sleep State file if a current one is unavailable.
  • Fixed a crash which might occur when clicks were sent to a text view which was in the process of going away. (It's still not clear how this is even possible, but the crash log never lies... OR DOES IT?)
  • Fixed bug in which "Find & Select All" did not properly unwind character escapes in the search string when doing a literal search; so if the search string contained any escaped special characters, no matches were found.
  • Corrected the appearance of the Setup window toolbar when running on macOS 11.0.
  • Worked around a bug in macOS (FB8554298) in which a certain sequence of events beginning with choosing the "Open" command with a file active, followed by trying to use "Save" or "Save As" to save a file into the same directory, would cause the Save panel to malfunction and render the application unusable.

New in BBEdit 13.5.1 (Oct 28, 2020)

  • Additions:
  • BBEdit offers a new item for the Services menu: "Compare using BBEdit". For any two selected file items, this will start a Find Differences operation. (The items must both be files or both be folders, and when comparing files, both files must be recognizable by BBEdit as text files.)
  • Fixes:
  • Fixed an error in the Markdown cheat sheet.
  • Corrected sort ordering of the list in the Rescued Documents window, so that the most recently created rescues come first.
  • Fixed crash which would occur when trying to report "These files are identical" using a sheet in the document's window.
  • Fixed bug in which live highlighting of selected matches would not start a new search in some situations (involving clicking into a blank line and then back on to a match for the most recently searched string).
  • Added an entry to the Markdown cheat sheet for titled image placement.
  • If bbedit --maketags cannot locate a suitable ctags, it will now report and exit rather than crashing.
  • Fixed a crash which could occur during multi-file Find Differences when attempting to identify identical files.
  • Fixed bug in which untitled document rescue didn't take place when "Make backup before saving" was turned on.
  • Added some armorplating at the site of a nonreproducible crash.
  • Made a change so that PDFs are explicitly excluded from consideration as possible text files, unless the OpenPDFsAsText expert preference is explicitly turned on. This improves file filtering performance in a variety of circumstances.
  • Fixed a bug in which significant latency in saving FTP/SFTP documents via the built-in support would lead to a subsequent (inaccurate) warning about the document having been modified on the server. (This would occur upon a later attempt to save.)
  • Made a change to work around a macOS bug (FB8811175) in which sandboxed processes were not allowed to send Apple Events to BBEdit, because its application property list file exceeded 50KiB in size. This broke automation operations initiated by Automator, MarsEdit, Keyboard Maestro, and probably others.
  • Fixed crash which would occur when parsing certain .editorconfig files.
  • Unrecognized tags will no longer interfere with "Balance Tags", as long as they are either properly balanced container pairs or written using the self-closing XML syntax.
  • Fixed bug in which the application would unexpectedly quit in cases where an error occurred while starting a multi-file Replace All operation using the Multi-File Search window.

New in BBEdit 13.5 (Oct 15, 2020)

  • 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.
  • 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 "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.
  • 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).

New in BBEdit 13.1.3 (Jul 30, 2020)

  • Fixes:
  • Fixed bug in which clicking on links with a target="_blank" attribute would misbehave in live preview windows.
  • Fixed bug in which the Search menu would display incorrect information or crash the application when pulled down after certain search sources had been selected in the Multi-File Search window.
  • Added code to report a specific error code when encountering an unexpected condition during a Grep search which would otherwise generate a crash log.
  • Made a change to improve performance when restoring application state for windows containing an extremely large (hundreds) number of documents.
  • When saving application state (when quitting or automatically for crash recovery), BBEdit will record the names of untitled documents, and display those names during subsequent state restoration.
  • Fixed 10003 error which would be reported when using process lines containing, process duplicates, or sort lines via the AppleScript interface, with the source data being a string provided by the script itself (rather than a reference to something open in BBEdit), and requesting output to a new window.
  • Fixed bug in which selecting a window containing multiple documents (under the "Open Editing Windows") heading as a search source would cause the Multi-File Search window to subsequently (and incorrectly) mark all Open Editing Windows for searching.
  • Made changes to improve visibility of the text selection range when it overlaps with highlighted differences in a Differences window.
  • Fixed a bug in which an escaped backslash immediately before a closing quote in a PHP string would confuse function scanning and fold generation when the PHP was itself contained within a processing instruction inside of an HTML document.
  • Corrected a bug in which the Unix Shell Script language module would miscolor single-quoted strings ended by character escapes which occurred inside of variable expansions which in turn occurred inside of single-quoted strings.
  • Fixed bug in which font names and sizes specified in .editorconfig files (specifically, "x-font-name:" and "x-font-size:") did not properly override the Editor Defaults font/size settings.
  • "Normalize Options" will now take EditorConfig settings into account, insofar as the global defaults may be overridden by a nearby .editorconfig file.
  • Fixed bug in which the JavaScript function scanner would generate folds for strings which didn't cross a line boundary, resulting in those strings being hidden when using "Collapse All Folds."

New in BBEdit 13.1.2 (Jul 17, 2020)

  • BBEdit 13.1.1 was released only into the Mac App Store to address a specific issue encountered by Mac App Store users with active subscriptions.
  • Fixes:
  • Fixed bug in which the YAML coloring would get confused by the use of "&value" or "*value".
  • Open File by Name will now search for files in nested Xcode projects referenced by the currently active project (if there is one).
  • Fixed crash which would sometimes occur when closing a document containing a character set declaration that didn't match its actual text encoding, and opting to save, and clicking the "Save Anyway" button, and with the "Restore unsaved changes" application preference turned off.
  • Fixed bug in which the "#TITLE#" placeholder didn't get replaced with the title entered from the "New Document" dialog, when using a page template other than "Default Page".
  • Fixed bug in Unix shell script coloring in which "

New in BBEdit 13.1.1 (Jul 17, 2020)

  • BBEdit 13.1.1 was released only into the Mac App Store to address a specific issue encountered by Mac App Store users with active subscriptions.

New in BBEdit 13.1 (Jun 4, 2020)

  • The Markdown custom language preferences (via Languages -> Language-specific settings) provide control over the default Markdown renderer, used for Preview in BBEdit as well as exporting to HTML. In this fashion you can select from available options without having to install filters in the Preview Filters support folder.
  • BBEdit has built-in support for cmark as well as "classic" Markdown (Gruber's original Markdown.pl script). In addition, if you have Discount, MultiMarkdown, cmark-gfm, or Pandoc installed, BBEdit can use those as well. If a particular tool is not installed, its corresponding option on the menu is disabled.
  • Finally, the "Custom" option provides the means to specify your own rendering command and arguments. There are some rules that you must follow.
  • The command name must be available in $PATH. You can specify a fully qualified path, but this is discouraged.
  • The command arguments must be separated by spaces. (Because they are separated by spaces, the arguments must not contain spaces.)
  • The tool you're using is run as a BBEdit text filter, so it must read the Markdown to be processed from standard input, and output the HTML to standard output.
  • (To customize the settings, go to the "Language-specific settings" list in the Languages preferences, and use the "+" menu to add an entry for Markdown, if necessary.)
  • There's a new command on the Text menu: "Run Unix Command". This opens a sheet into which you can enter a Unix command line, and choose where the output goes (either replacing the front document's selection/contents as a text filter would, or to a new document).
  • This can be extremely useful for quick (or simple) "one shot" Unix commands that aren't worth the effort of writing a filter.
  • As with a text filter, the document's selection is provided as standard input; if there is no selection, the document's entire contents are provided.
  • The panel also remembers the commands you've used previously; these are available via the usual history menu adjacent to the text field.
  • Underneath the "Run Unix Command..." command is a submenu which provides quick access to the history of commands.
  • Added language-specific settings for Python, to provide explicit control over:
  • which Python to use (python or python3, or a custom one of your choosing);
  • whether to allow the document's "#!" line to override the choice of interpreter;
  • whether to use flake8 for syntax checking.
  • (To customize the settings, go to the "Language-specific settings" list in the Languages preferences, and use the "+" menu to add an entry for Python, if necessary.)
  • When using a custom interpreter, you must specify it in one of two ways:
  • a simple command (e.g. "python"); this will look for the interpreter in your PATH. (The explicit "python" and "python3" options will do this.)
  • a fully qualified path to the executable (e.g. "/usr/local/bin/python3").
  • Note that you cannot use a partial path, since GUI applications have no useful notion of a working directory and so there is no basis for resolving a relative path.
  • Whether you enter a full path or just a command name, BBEdit will validate that the command you specified exists before enabling the "OK" button.
  • Added a new text transformation: "Convert Escape Sequences". It's just below "Zap Gremlins" on the Text menu, and is also available in text factories.
  • This command transforms text by replacing various commonly used character escape sequences with their actual characters
  • Control characters: this will replace the same set of character escape sequences that BBEdit's text searching uses: "n", "r", "t", "f", and "\".
  • Hex escapes: "xNN" and "x{NNNN}", where each "N" is a valid hex digit.
  • Unicode escapes: JavaScript-style "uNNNN" and "u{NNNN}", where each "N" is a valid hex digit.
  • HTML entities: any valid and well formed HTML character entity, named or numeric.
  • Percent escapes: URL-encoded character sequences (interpreted as UTF-8).
  • It's now possible to add custom filename extension mappings by dragging files into the list in the Languages preferences. If BBEdit can guess a file's language based on its contents, it will; otherwise you can change the language mapping using the popup menu in the list. If a filename extension is already known to BBEdit, the dropped file will be ignored, as will duplicate filename extensions when dropping multiple files.
  • Added a color scheme setting to the Appearance preferences. This mirrors the setting in the Text Colors preferences, but is more convenient for one-stop shopping when experimenting with the application's overall appearance.
  • The Appearance preferences have a "Use the TextWrangler application icon" setting now, to help smooth the way for former TextWrangler users who need that little extra taste of home. This will change the application icon in the Finder (if possible) as well as in the Dock (while the application is running).
  • Non-App-Store builds get a "Sign Up for News" command on the Help menu. Fill in your name and email address, and we'll add you to our news notification list and let you know when important and/or interesting things are happening. The information you provide here is protected by our privacy policy.
  • In the "Text Files" preferences, you can add filename extensions for files that BBEdit doesn't intrinsically know about, but which should be treated as text files. Use the "+" and "-" buttons to manipulate the list; or drag a file to the list to add its extension. (You can drag more than one file at a time, if you like.) Note: If a file already has a language mapping in the "Languages" preferences, BBEdit will know that it's a text file, and you do not need to add it here.
  • Added a switch to the sidebar preferences, which forces use of the system's list item highlight color for sidebar lists, when (and only when) Dark Mode appearance is in effect.
  • Added an "Extra Large" size option to the status bar item size settings in the Appearance preferences.
  • Added a command to the "Paste" submenu of the Edit menu: "HTML". Some applications put a specific HTML data type on the clipboard; you can use this command to paste it in to an editing view as text.
  • If the HTML on the clipboard doesn't contain any line breaks, BBEdit will run the HTML through its "gentle hierarchical" formatter before insertion.
  • If you prefer to paste the HTML exactly as it appeared on the clipboard, this Terminal command will change the relevant expert preference: defaults write com.barebones.bbedit PrettyPrintPastedHTML -bool NO
  • There is also an adjacent "HTML and Select" command, which will select the pasted HTML.
  • As with all other menu commands, you can set (or change) the keyboard equivalent for these commands using the "Menus & Shortcuts" preferences.
  • Added two new commands to the "Paste" submenu on the Edit menu: "File Paths" and "File URLs". These are useful after having previously used the "Copy" command in the Finder (or in any other application that allows copying file references to the Clipboard), and will paste the appropriate file paths/URLs into the front document.
  • The HTML Tidy commands are available (once again, if you remember them going away five and a half years ago) on the "Tidy" markup submenu. The Tidy transformations (clean, reflow, convert) are available as Text Factory actions.
  • Added a new Text Factory operation: "Delete Non-Matching Text". This operation works similarly to using the Extract button in the Find window; but rather than creating a new document with the extracted text, the document's contents are replaced with the results.
  • Thus, using this operation will delete any text which was not matched by the search string (or pattern), and the remaining text in the document will consist of all matches of the search string (or pattern), separated by line breaks. As with the Extract operation, this is not terribly useful for literal matches, but quite powerful when using Grep and a suitable replacement pattern.
  • Added a GUI setting to the JavaScript language-specific settings to control whether anonymous items appear in the function menu.
  • Pattern Playgrounds will now highlight all matches for the entered search pattern (using the same color for non-selected matches that Live Search uses).
  • BBEdit will use the "Keywords" color from the current text color scheme to highlight backslash escapes for text in the Find and Multi-File Search windows. (This applies when "Grep" is turned off.)
  • Added a check box to the Find window: "Show matches". This controls whether BBEdit attempts live-matching of the search string/pattern in the window immediately behind the Find window. Turning it off restores the pre-13.0 behavior and may be useful if you find live matching to be a distraction, as well as in cases where the display of live matches takes a noticeable amount of time.
  • Added support for a number of type-string identifiers in Python 3, including f'formatted strings', r'raw strings', b'bytes', and fr'formatted raw strings'. The type prefix is not case sensitive.
  • Also note that illegal combinations of types, such as fu'formatted unicode strings', are ignored. A hint is provided in the syntax coloring: if the prefix is colored along with the rest of the string, then it is legal.
  • Added 'nonlocal' to Python module's list of keywords (for syntax coloring)
  • Added a long (but not exhaustive) list of built-in class, type and function names from Python 3.8 to the Python language module. These are "Predefined Names," not keywords, and will thus be colored appropriately.
  • The Markdown module now recognizes callout comments, and will list them on the function menu. Since Markdown has no intrinsic notion of comments, you instead use the HTML comment syntax, namely: .
  • Callouts are case-sensitive and must be all upper case in order to be detected.
  • Added some pattern modifier examples to the Grep cheat sheet.
  • Holding down the Option key while choosing an item from the Folders submenu will open that folder in BBEdit (as a disk browser or instaproject, depending on the expert preference).
  • The "Unix Shell Script" language module has been rewritten, to fix bugs and add features. New and notable is support for listing functions and callout comments in the function menu; and folding of multi-line brace blocks, strings, and heredocs.
  • You can check the syntax of Unix shell scripts via the "Check Syntax" command on the "#!" menu, if you have the shellcheck command-line tool installed.
  • Enhancements to the CSS function menu:
  • @font-face rules are listed.
  • Class, ID, and element selectors are highlighted using different colors and symbols.
  • Added support for listing callout comments on the function menu.
  • Callouts are case-sensitive and must be all upper case in order to be detected.
  • Made some improvements to CSS/SCSS syntax coloring
  • property names are now detected more reliably, and given a distinct color.
  • custom properties and vendor-specific properties (whose names are recognized) are given distinct colors. These can be adjusted in the Text Colors preferences, in the list under "CSS".
  • added some missing properties to the list, so that they get colored correctly.
  • Added support for listing callout comments on the function menu in HTML and XML files.
  • Callouts are case-sensitive and must be all upper case in order to be detected.
  • Project-based web site deployment (the "cloud" icon below the sidebar) offers an option to deploy to a local folder (as contrasted with using an FTP/SFTP server).
  • Added commands to the Window menu to support the "Tile" and "Move" commands when running on macOS Catalina.
  • Added support for ctl-h as an equivalent for Backspace when using Emacs keyboard emulation; and the Shift key is allowed to modify certain Emacs navigation gestures to extend the selection.
  • Added a new color setting to the "Text Colors" preferences: "Keyword argument names". This is currently used only for Ruby, but since there are other languages which have syntax for keyworded function arguments, this may be used at the language module implementor's discretion for other languages.
  • The bbfind command-line tool gains the ability to perform Extract operations, via the "-x" option. See man bbfind for more information.
  • You can now set a language-specific preview template to use in "Preview in BBEdit" windows. This is done by creating a file in the "Preview Templates" support folder whose name is of the form "DefaultTemplate_LANGUAGE.html", where "LANGUAGE" is the name of the language on the Languages menu. So for Markdown, for example, the default preview template would be named "DefaultTemplate_Markdown.html". The default template will apply when there is no previous template setting for that document.
  • If you want text documents with unsaved changes to automatically save when switching BBEdit to the background, you can now do this with an expert preference: defaults write com.barebones.bbedit WriteChangesWhenSentToBackground -bool YES
  • Note: This option operates separately from BBEdit's built-in crash recovery, and you should not rely on this option to replace the built-in crash recovery.
  • The following restrictions apply:
  • A document must exist on disk (be backed by a text file) to be saved when sending BBEdit to he background; untitled documents will not be saved.
  • Documents opened via the built-in FTP/SFTP support will not be saved automatically when sending BBEdit to the background.
  • Documents opened via the "Edit in BBEdit" features of various applications (such as file transfer applications) will not be saved automatically when sending BBEdit to the background.
  • Documents opened from Zip archives or tarballs will not be saved automatically when sending BBEdit to the background.
  • Only text documents are saved automatically when sending BBEdit to the background; shell worksheets and text factories are not. (Project documents already automatically write themselves out as needed.)
  • The bbresults tool gains a new built-in pattern option: gcc, for handling GCC-style diagnostic output which includes an error:, warning:, or note: qualifier between the line/column and the message text.
  • Added two new Clippings placeholders: "#PATH#" and "#FULLPATH#". These placeholders will insert the document's path, if the document exists on disk. "#PATH#" will abbreviate the path with a tilde if the document is in your home directory; otherwise both "#PATH#" and "#FULLPATH#" will insert the document's fully qualified path.
  • Added a new option to the Keyboard preferences to control whether Option-up-arrow and Option-down-arrow move by paragraphs (see below). This option is off by default to support existing customers; changes to it take effect immediately.
  • A "paragraph" is defined as the region between two hard line breaks (including the beginning or end of the document), and so if Soft Wrap Text is turned off, turning on this preference basically causes Option-up and Option-down to move to the beginning or end of the current line (or the next non-empty line, if you're already at the end of the current line).
  • Added support for classes to the JavaScript language module. Class declarations and their methods will appear on the function menu.
  • Changes:
  • Moved the "Highlight insertion point" preference from Text Colors to Editing. This is now set separately from the color scheme; and if the setting is present in a color scheme, it is ignored.
  • We have rewritten the internals of "Preview in BBEdit" windows, to use the current version of WebKit. Things should generally work just the same, with the following changes:
  • the Inspector (magnifying glass) toolbar item is now a toggle; clicking it while the inspector is visible will hide the inspector;
  • the "Media Type" setting is no longer available; WebKit 2 does not support it;
  • there should generally be less flashing and scrolling when the preview refreshes (either while editing or in response to the "Refresh BBEdit Preview" command).
  • BBEdit no longer supports opening images for display. Quick Look still works when used in a disk browser or project/editing window sidebar.
  • Various refinements to placeholder processing in the "Update Document" (and friends) command:
  • "#TITLE#" is now a synonym for "#DOCTITLE#"
  • Date/time placeholders with no format strings will now insert a generically formatted date/time: "#DATETIME#", "#DATETIME_GMT#", "#DATETIME_UTC#", "#LOCALTIME#", and "#GMTIME#" all do something now.
  • The "#FILE_EXTENSION" placeholder works now.
  • Added an "Application Support" entry to the Folders submenu on the BBEdit application menu. This will take you to the main application support folder (which contains most of the other folders listed on the menu).
  • When installing the command line tools on a clean macOS installation, /usr/local/bin/ and /usr/local/share/man/man1/ don't exist, and BBEdit can't create them without some help. In this situation, BBEdit will prompt you to confirm, and then will ask the Terminal to run a command file which does the work.
  • Made a change so that (when possible and appropriate) an error alert is presented in the window to which it applies, rather than blocking the entire application.
  • Made a change so that Command-Option-double-click on a selected range does not attempt to select the entire word, but will instead simply search for (and select, if found) the next occurrence of the existing selection.
  • macOS works best when you specify a file name extension when saving a new document. If you don't, the OS will often behave unpredictably when you double-click on the resulting file.
  • For this reason, when creating a new file which has no filename extension, BBEdit will add an extended attribute which tells the OS to open that file in BBEdit specifically. If you wish, you can change the assigned application for that file using the “Open with:” setting the Finder's “Get Info” window.
  • You can prevent BBEdit from adding this extended attribute as follows: defaults write com.barebones.bbedit SaveOpenWithDataInTypelessFiles -bool NO
  • Made the results reporting for Replace All unqualified. (Disqualified? Dequalified? Whatever. No more parentheses.)
  • Qualified path items get a folder icon ahead of the path portion when displayed in the Window and Open Recent menus.
  • Project document and browser windows get the document's icon displayed when listed in the Window menu.
  • When checking syntax in an HTML5 document, the checker allows unknown elements as long as they are properly paired and closed. This quiets noise resulting from the use of Web Components.
  • When choosing "Buy License" from the license panel, if you have a previous version serial number, the application will display that number in the alert. You can copy and paste this as needed.
  • The "Buy License" button for purchasing a new license will now go directly to our web store rather than using an in-application UI.
  • Added an explicit "port" field to the configuration dialog for FTP/SFTP bookmarks, and made it look more like the regular FTP/SFTP connection panel.
  • Made a change to the behavior of "Open Selection" so that it will attempt to resolve absolute and home-relative paths (unwinding backslash escapes, if necessary). If the selection resembles either an absolute or home-relative path but is not valid, Open Selection will proceed directly to opening the "Open File by Name" window without attempting a search.
  • Restored the "grip strips" drag handle indicator to the right-hand side of the action bar (at the bottom of the sidebar) in projects and disk browser windows.
  • Made the about box window vertically resizable.
  • The about box window now indicates when BBEdit is in Free Mode, rather than always saying "(evaluation version)" even after the initial 30-day period has expired.
  • During the evaluation and when in Free Mode, clicking on the indication ("(evaluation version)" or "(free mode)") will open the license panel, which contains more information.
  • If you are using an applicationWillSwitchOut attachment script, please note that the script now actually runs when its name suggests: before the application goes to the background, rather than after as in previous versions.
  • The "violator" used during the initial 30-day evaluation period and when running in Free Mode is now a button. Clicking it opens the License panel (which contains additional details as well as providing a place to purchase).
  • Added a "Can't Find It?" button to the serial number entry panel.
  • Made a change to the Get Info panel so that it selects only the file's "base" name, leaving the extension unselected.
  • Made the right-click highlighting for list items a little less heavy.
  • The "Selected text only" option in the Find window is now disabled and turned off automatically if the target search window doesn't have a selection. This should resolve confusion of the "why doesn't anything happen when I press Enter in the Find window?" sort, in case the option had previously been turned on.
  • By default, BBEdit will use your color scheme's background color as the background for the sidebar and other UI elements when running in Dark Mode. If there's some reason you would prefer it didn't do this, you can set an expert preference: defaults write com.barebones.bbedit UseColorSchemeBackgroundForDarkModeUI -bool NO
  • Fixes:
  • Made a change to line up the disclosure buttons in the settings list in the Text Colors preferences.
  • Fixed bug in which the completion panel didn't alter its appearance appropriately after changing the active color scheme.
  • Fixed crash which would occur when dragging an HTML document into an HTML document, and the dragged file had an unbalanced title tag.
  • Fixed a layout bug in the Pattern Playground window when it exceeded a certain width.
  • Fixed weirdness in the Pattern Playground window when making certain edits in the search pattern field. (I'm sure that the people who wrote NSTextView can explain why it does that, but probably nobody else can.)
  • Adjusted the application document-type registrations to resolve conflicts with additions to the built-in OS document types in 10.14 and later.
  • Site deployment no longer relies exclusively on a file's name extension to determine its language; as when opening a document, any metadata such as Emacs mode variables, EditorConfig settings, or automatic guessing will make this determination more accurate.
  • Fixed a bug in which scroll bar tick marks were only drawn in the active pane of a split editing view.
  • Fixed a bug in which highlighting of search ranges and other "special" ranges didn't work correctly in the inactive pane of a split editing view.
  • Corrected the appearance of the popup menu icons in the HTML markup tools palette.
  • PHP heredoc scanning has been adjusted to be more lenient about the closing delimiter, per the changes introduced in PHP 7.3.
  • Dragging a file item from a Disk Browser window being used to display a Zip or tar archive will now place a copy of the file's data in the drop location, rather than creating a URL clipping.
  • Fixed a crash which would occur if an error occurred while opening a tar archive for reading.
  • Updated the MySQL keyword list.
  • Fixed a bug in which the sidebar layout in instaprojects was incorrect when "Save Default Text Window" had previously created defaults for editing windows, but "Save Default Project Window" had never been used.
  • Removed the #meta# placeholder from the list in the Placeholders sheet, since it didn't actually do anything.
  • Added support for EcmaScript template strings in the JavaScript language module. They are just colored as strings (no sub-range coloring), but embedded expressions, sub-strings and comments should no longer throw off the other syntax coloring, function parsing or folds.
  • Fixed bug in which trying to save changes to files in Zip archives would fail in some archives.
  • Made a correction to the HTML5 syntax checker so that download attributes in "" elements don't report an error when the (optional) value is omitted.
  • Worked around a bug in which macOS would strip the document's existing filename extension from the file name when using Save As, but only on alternate invocations. (Radar 57976122)
  • Made changes to improve the overall speed of drawing tick marks in the vertical scrollbar to indicate live matches (for Live Search, the Find window, and selected text), which benefits very large files and very large numbers of matching occurrences.
  • Fixed a bug in which "@supports" was not colored in CSS/SCSS documents.
  • Fixed a PHP syntax coloring bug in which the character after single-character PHP variable names got colored using the Variables color.
  • Fixed a PHP syntax coloring bug in which the character after the closing brace of a variable interpolation got colored using the Variables color.
  • Fixed a bug in which Ruby class migration declarations would break code folding for the class.
  • Made a change so that angle brackets can be backslash-escaped in Markdown documents to hide them from the syntax colorizer and function scanner.
  • Added MacSpice to the list of applications to which BBEdit is allowed to send Apple Events, to restore its external-editor support to working order.
  • Fixed a bug in which using "Open Selection" with an absolute path selected would do unnecessary work, which could take a very long time under certain conditions.
  • Fixed drawing glitch which would occur in project sidebars when changing the "Status bar item size" setting in the Appearance preferences.
  • Fixed cosmetic glitch in which the icon in the Text Statistics status bar item wasn't dimmed when its containing window wasn't active.
  • Picked some nits in the about box text.
  • Fixed a bug in the about window's path menu in which separator items weren't disabled as they should have been.
  • If an item in the Scripts (or other folder that backs a menu) is an alias or symlink, the name of the alias itself is now used as the title of the menu item, which resolves confusion when the linked item has a name which isn't useful when presented in the menu.
  • "Compare Against Previous Version" is enabled for documents being viewed in a results window, even when the keyboard focus is not on the text view.
  • Fixed a bug in which the text highlight color settings in the Text Colors preferences didn't reflect the system highlight colors, which led to confusion when turning on the "Use custom highlight colors" setting.
  • Fixed bug in which using the "Citation" command from the Markup/Phrase Elements menu would apply the "" tag twice.
  • Preference panes' names are now included in their search terms, so that you can type "shortcut" to find the "Menus & Shortcuts" preferences pane.
  • Added syntax coloring of keyword args (arg:) and hash keys (key:) in ruby files. This uses the "Keyword argument names" setting.
  • Added "extend", "include", "public", "private", and "protected" to the list of Ruby predefined names.
  • Added some zsh keywords and predefined commands to the Unix Shell Script keyword list.
  • Fixed bug in which keyboard equivalents for the navigation bar items in preview windows didn't work.
  • Fixed bug in which using Script Debugger's object explorer would cause the Palettes menu to malfunction and show check marks next to all of the items (except "Colors", attempt no landings there).
  • Made a change so that failed #bbinclude statements will leave the existing internal contents of the include block alone, rather than replacing them with nothing. This improves behavior when previewing or deploying documents with legacy include statements pointing to resources that don't exist anymore. (In the deployment case, BBEdit will still log an error.)
  • Added some armorplating (and logging) at the site of a nonreproducible crash.
  • Fixed a bug in which file names whose extensions were in ALL CAPS OK would not always show the correct icon in FTP/SFTP browser windows.
  • Since the application doesn't open images anymore, if you try to open one from an FTP/SFTP browser window, BBEdit will now ask the Finder to open the item for you.
  • Fixed a bug in the Pascal color scanner, in which certain valid hex sequences were inappropriately colored when they appeared in the middle of other text.
  • Made a change so that BBEdit doesn't try to save a document's print settings when you haven't printed that document via the Print panel (within an open/close cycle for the document). This works around cases in which the OS printing system stalls or hangs the application while trying to retrieve the current printing settings.
  • Fixed crash which would occur when updating an HTML document containing certain placeholders, when the placeholder itself ended abruptly at the end of the document.
  • Made an adjustment so that if the application can't find a sleep state file for the computer on which it's running, but the newest available sleep state is more than a week old, the application will ignore the old sleep state. This reduces the likelihood that long-obsolete sleep state will get restored when relaunching after an event in which the sleep state wasn't saved.
  • Fixed bug in which C++ class and struct definitions escaped detection if they were qualified with final.
  • Improvements to CSS syntax coloring
  • value units, CSS function names, and value names are colored;
  • fixed cases in which value text was colored as a selector if it happened to match a selector name (e.g. "right");
  • added many missing selector and value keywords.
  • Fixed bug in which an unsupported legacy "#mark" comment was not colored correctly and would generate junk in the function menu in CSS files.
  • Fixed bug in which CSS pseudo element selectors would confuse the function/fold scanner.
  • Fixed variable coloring in SCSS files.
  • Fixed bug in which the #script# clipping placeholder didn't correctly set up the Unix shell environment.
  • Markers (created via the "Set Marker" and "Find & Mark All" commands) are now stored with autosave state (for untitled and unsaved documents), so that the markers are preserved as part of crash recovery and state restoration.
  • Made a change so that unsaved and untitled documents remember their display settings (soft wrap, invisibles, etc) during application state preservation and crash recovery.
  • Fixed crash which could occur when bringing up the Multi-File Search window.
  • Fixed bug in which collection items in project sidebars didn't show the correct highlighting when dragging an item over them.
  • Line numbers in the line number bar are now drawn using the "Plain Text" color from the active color scheme, which improves readability with certain background colors.
  • Fixed a bug in which certain edits in VBScript files would cause subsequent HTML in the same file to malfunction.
  • Fixed a bug in which right-clicking on a non-selected item in the sidebar of a project window would cause selected item(s) to open (in cases where the documents had been closed).
  • Made a change to significantly improve the performance of loading large HTML and XML files with large quantities of element pairs.
  • Fixed crash which would occur when printing a list (such as the list of results from a Search Results window).
  • Search results windows created by a single-file "Find All" get a refresh button. This will repeat the search using the same string and options as the original, including "Selected Text Only".
  • Fixed bug in which an unhelpful error was reported in conditions where trying to connect to a remote SFTP server failed because the remote account had a shell configuration or login script which echoed something to standard output.
  • Made a change to improve error reporting during failed SFTP connections when the requested host refuses the connection, or when the host name lookup fails.
  • Fixed bug in which a "//" in the middle of a Swift block comment would confuse the parser and lead to unexpected coloring and/or function scanning behavior.
  • Fixed bug in which errors reported during find and replace operations would sometimes report an incorrect error number.

New in BBEdit 13.0.6 (Mar 11, 2020)

  • Fixes:
  • Fixed a bug in which selecting a viewable file while browsing a Zip or tar archive would not display the file's contents when running on macOS 10.15.
  • Fixed bug in which performing an entab or detab scripting operation on a string would return only the first half of the string, in cases where the the operation did not need to change the input.

New in BBEdit 13.0.5 (Mar 6, 2020)

  • Fixes:
  • A "#!" line at the very beginning of a Swift file is now colored as a comment.
  • Fixed a bug in the Swift language module in which Swift 5 extended string delimiters would confuse the coloring.
  • If you override the script editor bundle ID using the expert preference, and the application specified by that bundle ID can't be found, BBEdit will now report an error instead of crashing when you use "Open Script Editor" or a related command.
  • Fixed bug in which previewing Unix man page source would fail, showing a blank preview and a crash report for the tool responsible for generating the HTML.
  • Updated the PCRE2 copyright year.
  • Fixed a bug in which typing comments at the beginning of a Swift file (either absolutely, or as the first non-blank line) did not correctly update syntax coloring.
  • Fixed bug in which backslash escape sequences weren't properly processed for literal searches performed using the "Live Search" box or the live matching in the Find window.
  • Fixed bug in which using the bbdiff tool (or the GUI) to compare two items would fail if either item was a symlink.
  • Updated to a newer version of libgit2, which includes fixes to the .gitignore parser that are relevant to our interests.
  • Fixed a bug in which Git ignore checking didn't apply when searching a directory that wasn't a Git working copy, but which contained directories that were.
  • Fixed a bug in which performing certain operations within a half a second of dismissing the Save panel when saving a new document (or using "Save As") would allow those operations to occur before the document had actually been saved (and/or would behave strangely).
  • Fixed a bug in Python syntax coloring in which certain characters immediately preceding a numeric value would prevent the number from being colored.
  • Fixed a bug in which turning off "Reopen documents that were open at last quit" and then immediately quitting would frequently result in the application reopening documents that were open at last quit.
  • A "#!" line starting at the very beginning of a JavaScript file is now colored as a comment.
  • Fixed bug in which Git branch names containing non-ASCII characters would display incorrectly in the navigation bar.
  • Fixed bug in which the "Use for Find" button in Pattern Playground windows didn't properly apply the "Case sensitive" setting.
  • Fixed bug in which saving a text document would remove any document-specific customizations to the print panel settings, resetting print behavior to application (and OS) defaults.
  • Updated the JavaScript module's lists of keywords and predefined names to ECMA-262 compatibility.
  • Fixed a bug in which certain characters immediately following a number would cause the PHP color scanner to get confused.
  • Fixed a bug in which the PHP function scanner didn't correctly handle heredoc strings occurring inside of parentheses.
  • Made a change so that BBEdit will load its sleep state or auto-saved application state from the most recent available state, in cases where you're using BBEdit for the first time on a new computer, and state has been migrated or restored from a backup of a different computer.
  • Fixed bug in which the initial setting of "Include space after number" in the "Add/Remove Line Numbers" dialog box did not reflect the default behavior.
  • Fixed bug in which Clang typedef attributes would confuse the C-family function scanner.
  • Fixed a bug in which editing at the beginning of a file managed by a codeless language module would sometimes incorrectly recalculate coloring in the edited (and following) areas.
  • Fixed a bug in which zooming a window (by any of the various means available) would sometimes cause the window to move to a different display on multi-display systems.
  • Changed the way window positions are stored in application state so that there's a better chance that windows will be restored to the correct display when restoring state at application startup.
  • Fixed a bug in Git ignore filtering during multi-file search in which an item in an ignored location wasn't skipped in the case that it was the target of a symlink in a non-ignored location.
  • Fixed bug in which quitting the application with more than one window open in full screen mode would, upon relaunch, get the application stuck in a state where it would consume a lot of CPU when idle. (Due to limitations elsewhere, only the first window that was in full-screen mode will be restored to that condition.)
  • Fixed bug in which the shell execution environment was not set up correctly for the "Run Unix Filter" text factory action, which in turn could lead to inconsistent results compared to using the same filter script from the "Apply Text Filter" menu command.
  • Handled case in which the SFTP server would return "file already exists" rather than "operation failed" while trying to create directories for site deployment, which would in turn cause the deployment to fail.
  • Fixed a bug in which twisting an item open in an FTP/SFTP browser list would cause the selected item to scroll into view.
  • Fixed bug in which the shell environment was not set up correctly for Unix commands run via the #system# clipping placeholder.
  • Fixed bug in which using the Grep pattern menu in the text factory "Replace All" sheet would change the edit field font to the system default, rather than the font set in "Editor Defaults".
  • Fixed bug in which choosing a grep pattern from the popup menu in the "Find & Mark All" sheet would change the edit field font to the system default, rather than the font set in "Editor Defaults".
  • Fixed bug in which certain keywords in an assigned function definition would confuse the JavaScript function and fold generator.
  • Fixed a bug in which the Pattern Playground text fields would allow pasting or dragging of things which were decidedly not plain text.
  • Made a change to update the "date last used" properties of files that BBEdit opens itself, such as through its Open panel or via Open File by Name, as well as new files that you create with "Save As". Such items will now show up in the Finder's "Recents" list, if you use that.
  • Git revision lists now show the author's name, rather than the committer's, so that the revision history in repos using squash-and-merge is more useful than before.
  • Fixed bug in which class parameters would confuse the Ruby function scanner and fold generator.
  • Fixed a bug in which the file types made available in the Markup Builder for the poster attribute in HTML5 video elements were not correct.
  • Fixed a bug in which empty folders, or folders which contained no eligible items, were included in the Markup Builder's file URI attribute value menu.

New in BBEdit 13.0.4 (Jan 16, 2020)

  • Fixes:
  • Fixed a performance bug which would cause functions and folds to be scanned twice when opening a file. This was most noticeable when opening very large documents in languages which supported function scanning or automatic folding.
  • Fixed a performance bug which would cause automatic fold generation to take a semi-infinite amount of time in very large JSON files. (The test case was 391.2MB.) Opening such files will still take a while, but it's likely to finish before the heat death of the universe.
  • Fixed a concurrency issue which could cause a crash in the internals of the ctags subsystem.
  • Fixed a bug in which custom extension mappings were not properly applied to custom keyword files; this caused the customizations to not only not be applied to the intended language, but also poisoned the well so that the custom mappings didn't apply to documents when desired.
  • BBEdit will no longer prompt you to unlock the document when using "Reopen Using Encoding" and the document is locked.
  • Fixed a bug in which dragging a file or folder from an open project's sidebar into another project's "Projects" section wasn't allowed when it should have been.
  • Made a change to work around a bug in the OS which would cause alternate rows in results list windows to be invisible when certain display color calibration profiles were in use.
  • Fixed a bug in which using "Copy Name" for a document displaying a qualified name in the sidebar would copy the entire qualified name, rather than just the document's actual name.
  • Fixed a bug in which hiding the editor view in results windows and subsequently un-hiding it would create a condition where selecting results from the previously displayed file wouldn't have any visible effect, until a result from a different file in the list was selected.
  • Fixed a bug in which the results returned from the "find tag" scripting verb (and related ones) were malformed in a way that would cause the Apple script editor to report a -1700 error even though the operation succeeded. (This issue also caused Script Debugger to hang.)
  • For performance reasons, BBEdit will skip to drawing the "invisibles" (upside-down question mark) glyph for characters in the BMP "private use area" (U+E000 through U+F8FF). The Apple symbol (U+F8FF) is now excluded from that test, because it is sacred.
  • Fixed an application lifecycle bug which would sometimes cause the application to crash when quitting while on macOS 10.15.
  • Made a change so that the OS save panel is less likely to try to override your desires when it comes to filename extensions.
  • When computing qualified display names for documents displayed in an instaproject's sidebar, the set of files considered is limited to those contained in the instaproject's root directory.
  • Fixed a bug in which trying to edit a file filter with a very large number of terms would make the editing sheet unusably tall. The maximum size of the editing sheet is now constrained, and the list will scroll if needed.
  • Made a change so that the built-in update checker windows remember where they were, rather than always centering themselves on the main display.
  • Fixed bug in which reference text windows (resulting from "Find in Reference") didn't have scrollbars and weren't read-only as they should have been. In such windows the Space key once again works for paging.
  • Made a change so that the custom language extension list is sorted by extension (by default).
  • Fixed the appearance of the "+" popup buttons in the Text Encoding and Languages preferences when using Dark Mode.
  • Fixed a few places where popup button icons did not appear correctly when in Dark Mode.
  • Worked around a performance bug in macOS 10.15.2 (FB7493711/Radar 57728108) caused by the font service erroneously deleting its cache data. This was leading to multi-second delays when starting the application or creating/opening a text document (or the Find/Multi-File Search windows). With the fix in place, the first launch of this version of BBEdit or immediately following an OS update will take as long as it did without the fix, but subsequent launches will be at the pre-10.15.2 speed.
  • Made a change to reduce memory utilization in cases where the application is running in a switched-out user account and it has a large file open that is constantly being changed by another process.
  • When comparing an open document whose view has been split, the split is no longer replicated into the Differences window.
  • Any errors detected while loading a codeless language module are now logged to a separate log file: "LanguageModuleErrors.log". This is in BBEdit's Logs folder, which you can get to by choosing the "Logs" command on the "Folders" submenu of the main application menu.
  • Added some values to the list of non-warning-generating values for the rel attribute of the element.
  • Fixed a bug in which right-clicking on a non-selected item to perform a Subversion operation in a results window would instead perform the operation on the selected item, if a single item was selected and displayed in the window.
  • Fixed a crash which could occur when using "Save As".
  • Fixed bug in which closing a shell worksheet left the underlying shell process running.
  • Fixed a hang in the PHP color scanner which would occur when opening a binary file (such as a PDF) which happened to have HTML at the beginning to fool the auto-guesser and which contained nulls after dollar signs.
  • Removed a typoed duplicate from the PHP predefined name list.

New in BBEdit 13.0.3 (Dec 5, 2019)

  • Fixes:
  • Fixed bug in which changes made to the search and/or replace pattern fields in the Pattern Playground by means of the menu buttons (saved patterns, history, cheat sheet) weren't undoable.
  • Fixed bug in which refreshing the results of a Git "Show Working Copy" operation didn't update the results list when there were changes.
  • Fixed a bug in which color schemes which used the system text highlight color (such as BBEdit Light or BBEdit Classic, or any other scheme in which "Use custom highlight colors" was turned off) would use the wrong color when the system was in Dark Mode.
  • Fixed a bug in which the presence of legacy color settings would create a situation in which the color scheme selection was reset to a newly created "Custom Settings" color scheme each time the application started up.
  • Made a change so that errors invoking ctags or readtags don't surface while using the completion interface. (This stifles the 100086 error which will occur on Catalina if your available ctags is a 32-bit binary.)
  • Worked around a bug in the OS (FB7416680) in which the save panel would override an existing filename extension with its own notion of what the extension should be.
  • Fixed a crash which would occur if /usr/bin/diff failed to run. ("This should never happen.")
  • Fixed bug in which quitting the application with a Zip/tar archive browser open would reopen a disk browser window viewing the top level of your computer, rather than the archive that it had been browsing.
  • Worked around a system windowing behavior which would cause the following unexpected behavior: when starting the application in which the saved state specified a window in full screen mode, if the application was started by opening a document that wasn't previously open in that window, the document being opened (and any other such additional documents) would open into a separate window.
  • Made changes to improve performance at startup when doing autosave recovery for a very large quantity of unsaved documents (think: thousands).
  • Fixed a bug in which authenticated saves would fail in cases where the directory requiring privilege escalation was not on the startup disk.
  • Fixed bug in which deleting a file or folder filter that was in use by an open project, disk browser, or the Multi-File Search window would fail to update each window's settings and behavior.
  • Fixed a bug in which entering "~" (or a path beginning with "~") in the directory path would report an error when connecting to an SFTP server.
  • Fixed a bug in which Pattern Playground windows didn't remember useful things (search pattern, replace pattern, case sensitive setting, and scratch contents) when quitting and relaunching the application.
  • EVIDENTLY THE CHOCK LOCK IS TO AWESOME FOR SOME OF YOU TO HANDLE BUT THATS OK THE FLESHY PALM WILL RETURN PS WE STILL LOVE YOU CRAIG NO NOT YOU THE OTHER ONE
  • The HTML5 syntax checker no longer reports an error for crossorigin and integrity attributes in link and script elements.
  • Made a change to allow the property attribute to appear in meta elements, as long as the attribute's value begins with "og:".
  • Made a change to how the FTP browser view calculates the text for the "Kind" column, so that a more useful document kind is displayed in cases where something more generic was displayed before.
  • Quieted console noise when ingesting current format color schemes.
  • Changed the legacy color preference conversion so that it sets the converted color scheme as the active scheme only for the appearance in which it makes sense, rather that applying the scheme setting to both light and dark appearances.
  • Fixed bug in which creating a new file in a closed project folder would cause folder aliases to unrelated locations to twist open (as well as the project folder in which the new file had been created).
  • Fixed a bug in which a crash of the AppleScript runner would leave the application in a state where important menu commands (like Quit) were disabled or didn't do anything.
  • Fixed a bug in which certain scripting verbs which implicitly targeted the active window (cut, copy, paste, undo, clear undo history, insert clipping) would fail when the application was in the background. (Reminder: you generally should not use these because of their implicit targeting; and in the case of the cut/copy/paste verbs, they are inherently unpredictable with respect to the contents of the Clipboard.)
  • Fixed layout bug in the "Commands" window in which long items would get (invisibly) wrapped to the next line, rather than truncated with an ellipsis.
  • Fixed bug in which the fields in the "Replace All" text factory action sheet used the wrong font.
  • Fixed a bug in which an instaproject would get confused if the top-level folder from which it got created was moved or renamed. (The change won't be noticed right away; but eventually it will.)
  • Fixed a bug in which saved markers weren't loaded for files opened via the built-in FTP/SFTP support.
  • Made a change so that only the first click of a multi-click sequence opens the menu that's attached to a popup action button (such as the Cheat Sheet or Saved Patterns buttons in the Find window or Pattern Playground). This fixes a bug in which rapid clicking on different buttons would sometimes open the wrong menu.
  • Fixed a bug in which C++ "raw" strings which contained a double quote would confuse the syntax coloring.
  • Fixed bug in the Unix shell script scanner in which the next character after a "

New in BBEdit 13.0.2 (Oct 29, 2019)

  • Fixes for reported issues, as well as refinements to existing features.

New in BBEdit 13.0.1 (Oct 15, 2019)

  • Additions & Changes:
  • BBEdit 13.0.1 does not add any new features. (It doesn't take away any, either.)
  • Fixes:
  • Fixed misleading references to subscriptions in the non-Mac App Store demo splash window. Versions of BBEdit obtained directly from us use a license code which is a one-time purchase. Subscriptions are used (and available) only in the Mac App Store.
  • Made a change to work around a bug in macOS (FB7348163) which would cause the open/save panel service to crash when trying to use "Save As" or "Save a Copy" on a file whose filename extension wasn't recognized by the OS or BBEdit as a text file.
  • Fixed a bug in which the commands on the "Includes" submenu of the Markup menu weren't enabled when they should have been.
  • Fixed bug in which the "Reveal in Finder" menu command wasn't enabled when it should have been.
  • Fixed a bug in which using the modified "Lorem Ipsum" insert command (to run without prompting) did not apply all of the previously used options.
  • Fixed a hang which would occur when trying to spell-check text (via right-click) in documents backed by certain third-party language modules.
  • Fixed a drawing glitch in text views when switching from "Large" appearance back to "Normal".
  • Fixed a crash which could occur when using the "Save to FTP/SFTP Server" panel and certain errors occurred on the server side. (This was never reproducible, but the cause was clear from the crash logs.)
  • Fixed bug in which the "Entire word" option in the Find window didn't affect the behavior of live matching while enter/editing search strings/patterns.
  • Fixed a crash which would occur after drawing the line number bar in very tall windows on extremely large displays.
  • Fixed bug in which Pattern Playground windows didn't immediately update the display font when it was changed in Editor Defaults.
  • Fixed a concurrency bug which would cause BBEdit to hang when opening a file while certain other manipulations were occurring in background processes.
  • Fixed a bug in which "New Collection" and "Rename in Project" for project items in the sidebar would not operate on the correct item if it wasn't selected when right-clicking.
  • Fixed bug in which the color scheme selector in the Text Colors preferences would indicate the color scheme for the Light appearance rather than the active color scheme, when the application appearance was Dark.

New in BBEdit 13.0 (Oct 4, 2019)

  • Pattern Playgrounds - The "Pattern Playground" window provides an interactive interface for experimenting with the behavior of Grep patterns (regular expressions). This makes the process of creating complicated patterns much less trial-and-error, since you can see exactly what will match, and how, before committing to any irreversible actions.
  • Reduced-size Pattern Playground window, dark mode
  • Grep Cheat Sheet - The Grep Cheat Sheet provides quick access to many common regular expression idioms as well as brief descriptions. It's great not only for learning how to write regular expression ("grep") patterns, but also for experienced Grep users. The Cheat Sheet is available in places where you commonly write Grep patterns: the Find, Multi-File Search, and Pattern Playground windows; as well as in the "Process Lines Containing", "Process Duplicates", and "Sort Lines" dialog boxes.
  • Reduced-size Grep Cheat Sheet menu, dark mode
  • Improved Dark Mode support and appearance switching - BBEdit 13 can automatically follow the system appearance (works great with macOS Catalina's automatic Dark Mode switching), or you can have BBEdit's appearance always be dark (or light). Set separate color schemes for each appearance mode, and they change automatically!
  • Partial screen capture showing the appearance controls in the Appearance application preferences
  • Live searching from the Find window - As you edit your search string and options in the Find window, BBEdit will automatically highlight matches in the editing window right behind.
  • Partial screen capture with the word 'grep' typed in the Find window and matches highlighted in the window just behind it.
  • Apply Text Transform - Use this command to quickly apply any transformation from the Text menu to multiple files or folders.
  • Screen capture of the "Apply Text Transform" dialog box, with a transformation selected
  • The "Commands" Command - This was added in BBEdit 12.5, but it's too cool not to mention it again here. This panel gives you quick keyboard access to any available menu command in BBEdit. Use a handy keyboard equivalent (Command-Shift-U, or set your own) and get a panel showing every available menu command. Type a few characters and quickly get down to the menu command, recent file, clipping, script or text filter you're looking for. Hit Enter or return, and you're off to the races.

New in BBEdit 12.6.7 (Sep 13, 2019)

  • Additions:
  • BBEdit 12.6.7 does not add any new features. (It doesn't take away any, either.)
  • Changes:
  • Made a change to ask the OS-provided print panel to place the page attribute controls (orientation, scaling, paper size) in the panel proper, rather than hiding them behind the "Page Attributes" section in the popup menu.
  • Fixes:
  • Fixed a case in which the application could crash when clicking in a text view, given certain unexpected internal state.
  • Worked around a system windowing behavior which would cause the following unexpected behavior: when starting the application in which the saved state specified a window in full screen mode, if the application was started by opening a document that wasn't previously open in that window, the document being opened (and any other such additional documents) would open into a separate window.
  • Fixed bug in which the default printing timestamp setting was not applied correctly to the Print panel's settings when printing a document.
  • Worked around file system behavior on macOS 10.15 in which files written into TMPDIR and then passed to BBEdit for comparison would disappear when clicking on the file's contents in the Differences window. (For example, temp revision files created by git difftool or svn diff.)
  • Fixed a crash which would occur when quitting the application while open documents were waiting to process a change notification from the ctags subsystem.
  • Fixed a hang which would occur when spell-checking documents and the effective language module indicated that a particular range of text was to be skipped.
  • Fixed a bug in which the cursor would alternate between an I-beam and an arrow while dragging out a text selection.
  • Fixed a bug in which certain edits within a "PHP in HTML" source file would set up a situation in which subsequent edits would cause syntax coloring to get confused (typically manifesting as uncolored text after a certain point in the document).
  • Fixed bug in which trying to save a change to a file in a Zip archive would report a 12612 error if the Zip archive file didn't actually have a file name extension.
  • Fixed a bug in which the internal SFTP client didn't properly clean up after itself when disconnecting. Eventually this would lead to errors when attempting to perform SFTP operations.
  • Fixed a bug in which disk browsers would sometimes fail to open the selected file for viewing, following certain manipulations of the list (such as twisting a folder open or closed, or refreshing an opened folder with a different number of items) and depending on the relative placement of selected items.

New in BBEdit 12.6.6 (Aug 1, 2019)

  • Additions:
  • Added basic support for C++ raw strings.
  • Changes:
  • When searching for text, or using the spelling checker to navigate, BBEdit will ordinarily play the system alert sound when no appropriate match is found. If it detects that the sound is muted, BBEdit will instead show an overlay alert. To skip the sound check and always have BBEdit show the overlay alert instead of beeping:
  • defaults write com.barebones.bbedit AlwaysShowAnnunciatorForNotFound -bool YES
  • This takes effect immediately without needing to restart the application.
  • Fixes:
  • When double-clicking on a folder item in a palette corresponding to a folder-backed menu (Scripts, Text Filters, etc), BBEdit will reveal the folder in the Finder instead of crashing (the latter being not terribly useful).
  • Fixed bug in which BBEdit did not set up Git and Subversion command execution with the current login environment, which in turn would cause commands to fail in specialized configurations which relied on specific customizations made outside of BBEdit.
  • Made a change so that the selection of wrapping points in CJK languages results in better outcomes when using "Soft Wrap Text" or applying the "Hard Wrap" command.
  • Fixed a crash which could occur at application startup, given a certain rare and obscure sequence of events.
  • Fixed a cosmetic glitch which would occur when vertically resizing sections of the sidebar in project windows, in such a way as to change the visibility of the vertical scroll bar and when Dark Mode was in effect.
  • If the "Recent items" setting in the General system preferences is set to "None", BBEdit will no longer attempt to add recent items to the list of recent items used by the system (including the Dock and the "Recent Items" submenu on the Apple menu).
  • Fixed a bug in which a file created using the "New Text File" context menu command in a project sidebar would not get selected in some situations.
  • Restored some old code to active service when running on macOS 10.14, to partially address a reported font-smoothing issue when printing. (Printouts still look strange, but this appears to be due to low-level OS behavior.)
  • Fixed a crash which would occur during multi-file search when encountering Zip archives whose file or directory names contained certain URL-unsafe characters. Such archives are now correctly searched, and are also browseable using a disk browser.
  • Beginning with version 12.5, BBEdit provides the selection range in the active document (or the active document's contents, if there is no selection) as stdin when running a Unix script or executable from the Scripts menu. If the script isn't expecting this and never reads from stdin, this can cause a problem if there is more than 64K of data provided. The result will usually be a 100032 error.
  • If this is a regular occurrence for you, you can turn the feature off using a Terminal command: defaults write com.barebones.bbedit ProvideSTDINToUnixScripts -bool NO
  • This takes effect immediately without needing to restart the application.
  • The "Arrange" commands on the Window menu now consider editing windows and "Preview in BBEdit" windows to be of a single type, so that they get arranged together. This is beneficial when using "Tile Two Front Windows Across" or "Tile Two Front Windows Down".
  • Added some armor plating at the site of a reported (but not reproducible) crash.
  • Fixed bug in PHP syntax coloring in which non-ASCII identifier characters in variable names would end coloring for the rest of the name.
  • Adjusted the C-family function scanner and coloring parser to allow non-ASCII characters in identifiers.
  • Turned the scrolling throttle (ThrottleVerticalScrollingSpeed expert preference) back on by default.
  • Worked around a bug in certain printer drivers (looking at YOU, Canon) which would cause BBEdit to crash when attempting to save the current print options after confirming the print panel.
  • Made a change to the HTML language module so that script tags with type=module treat their contents as JavaScript.
  • Fixed a bug in which matching of the "Language" file filter term was case-sensitive when using the "Is" or "Is Not" operators, and matching using any other operator would fail completely.
  • Made changes to address a concurrency crash in the ctags data file reloader.
  • Fixed a bug in which the application's test for "is the alert sound output muted" would report the wrong answer for certain output devices (such as the Schitt Eitr). This would cause BBEdit to present an overlay alert instead of simply playing the system alert sound (which was the intended behavior).
  • Fixed a bug in which items in tarballs were not sorted for display.
  • If the Mac App Store version of BBEdit notices that you have a license code for the current major version, it will alert you, because Mac App Store builds cannot use license codes. More information is here.
  • Fixed misbehaviors in the FTP browser window, in which the directory popup menu would be left showing an inappropriate item after choosing a bookmark-related command.

New in BBEdit 12.6.5 (Jun 27, 2019)

  • Additions:
  • If the selected range of text looks like a color specification, the Character Inspector panel will display a color swatch for the corresponding color. (For example, try selecting "#EE11DD" or "rebeccapurple".)
  • The Character Inspector now includes the offsets of the selected characters. The offsets are expressed relative to the beginning of the document; so the first character offset is zero.
  • Changes:
  • The old crash reporter makes a triumphant return. Here's hoping you never see it. But if you do, we'll be grateful if you include your email address and a description of what you were doing (if you weren't poking a badger with a spoon). Note: Mac App Store builds do not use our crash reporter; please use Apple's crash reporter and write to Tech Support if you encounter a crash.
  • When doing CamelCase navigation using Control-{left,right}-arrow, navigation (including selection extension, if you are using the Shift key) will treat an underscore as a boundary. If you preferred the previous behavior, this is controllable with an expert preference:
  • defaults write com.barebones.bbedit CamelCaseNavigationIncludesUnderscores -bool YES
  • When using a "Run" command for a file with a #! line, BBEdit will no longer attempt to run the file using the appropriate interpreter for the language (e.g. Python), and will instead ask the shell to run it directly.
  • Fixes:
  • Fixed a bug in the C-family function scanner in which the use of class or function attributes (__attribute__) would confuse the scanner.
  • Made changes to significantly improve the performance of UTF-8 validation (used when reading files from disk). The improvement is most noticeable when opening very large files.
  • Fixed bug in which the built-in reference URL template for HTML was incorrect, so a -4960 error would result if you tried to use "Find in Reference" on an HTML document and you didn't have Dash installed. (You should get Dash, it's a good product: https://kapeli.com/dash.)
  • Updated the reference URL template for C family languages to do searches in the current Apple developer reference.
  • The C-family language module will now color Clang built-ins using the color for "Predefined Names".
  • Fixed bug in which inserting a color into an HTML attribute's value via the Colors palette would inappropriately quote the color value.
  • Fixed a case in which App Store builds would erroneously report that the evaluation period was over when choosing a menu command marked with a star during the evaluation period.
  • Fixed bug in which it was possible to drag things into the summary text area in the Multi-File Search window.
  • Added the SetApp release of MarsEdit to the entitlements, so that its "Edit in BBEdit" handshake will work correctly.
  • Fixed a regression caused by a change in cmark in which generated HTML would omit raw HTML elements that were deemed "unsafe". This often manifested as external CSS and JavaScript not loading when using "Preview in BBEdit".
  • If a folder-backed menu (Scripts, Clippings, Stationery, Text Filters) is hidden, BBEdit will no longer attempt to populate it when the system tries to match a keyboard equivalent. This is a significant performance win if you had previously hidden the Clippings menu but somehow managed to keep around an enormous Clippings folder.
  • Made a change to significantly (by orders of magnitude) improve the performance of fetching stored keyboard equivalents for items in folder-backed menus (Scripts, Clippings, Text Filters, Stationery). So if you do have a huge Clippings folder, the first use of a keyboard equivalent (for any menu command) should no longer cause the application to stall quite so painfully.
  • Fixed bug in which the internal SFTP client would crash if a file transfer (upload or download) timed out. This would typically happen when using a very slow data connection to the server.
  • Fixed bug in which the Software Update window could be resized to an unusably small shape.
  • Made a change to quiet a -50 alert which would occur when an invalid soft wrap mode was (somehow) stored in a document's saved state.
  • Made a change to improve the fidelity of color roundtripping when editing colors in saved editor color schemes.
  • Added null_resettable and null_unspecified to the Objective-C/C++ keyword list.
  • Added char8_t to the C++/Objective-C++ keyword list.
  • Made a change so that SSH_ASKPASS and SUDO_ASKPASS are configured for #! scripts and shell processes that are run from within BBEdit. This allows such operations to fetch an SSH password from the keychain or prompt for it as necessary; and sudo operations in #! scripts will likewise prompt for a password, just as in shell worksheets. Consequently, git and svn operations that may require an SSH password have a greater chance of success than before.
  • Reworked the tooltip mechanics so that the displayed tooltips are accurate for where the mouse is within the window at any given time (including over individual items in the sidebar).
  • Made a change so that tooltips for file names in the sidebar are displayed only if a given file's name is not unique in the list.
  • Made changes to resolve some latent concurrency issues.
  • Made a change to solve a class of concurrency problems in the text engine, which would (in some situations) cause obscure and hard-to-reproduce crashes.
  • Changed the layout of "widescreen" differences results windows so that the Apply buttons are close to the list of differences, as they are in the normal layout.
  • Fixed a concurrency bug which would sometimes cause the application to crash in cases where an external process rewrote a ctags data file that was in use by one or more open documents.
  • Fixed a performance bug in the lorem ipsum generator, such that requests for large amounts of text to take a very long time to complete.
  • Removed number formatting from the quantity field in the lorem ipsum generator dialog. (So you'll generate 20000 paragraphs, not 20,000.)
  • Fixed a bug when running on beta versions of macOS 10.15 in which doing a Git or Subversion revision compare and then clicking on the right-hand text view would cause the display to switch to the "No selection" placeholder. (The underlying issue in the OS may be fixed by the time you see this.)
  • Fixed a bug in which saving changes to a gzipped or bzipped file would write the file as uncompressed text.
  • Fixed a bug in which a nonsense error would occur when trying to compare two files, in very rare situations where the OS was in such a state that it would refuse a perfectly valid and reasonable request to write a temporary file.
  • Fixed bug in which the presence of a com.apple.TextEncoding xattr in a compressed file would cause BBEdit to lose track of whether the file was compressed, and cause any changes to decompress the file.
  • Fixed a bug in which cancelling a hung #! script execution from the UI did not correctly terminate the script process, leaving the application hung as well.
  • Fixed a performance bug in which scrolling a text view would end up requesting a redraw of the entire window, which was invisible but could potentially take a noticeable amount of time (such as with a full sidebar in a tall window).
  • The Markup -> Update menu and the Menus & Shortcuts preferences have been updated to include a "Deploy Site" entry, so that it's possible to assign a keyboard equivalent if desired.
  • Fixed a bug in which certain OS print panel settings weren't being correctly applied when restored from saved state. (Curiously, the print panel would display them as set, but not apply them when actually printing.)
  • Fixed a bug in which error alert dialogs would have a focus ring around the invisible "Cancel" button, which was detectable if you were using Full Keyboard Access.

New in BBEdit 12.6.4 (May 17, 2019)

  • Fixes:
  • Made a change to reduce the chance of a crash occurring when generating sub-line differences results in a Find Differences window.
  • Fixed bug in which the Menus & Shortcuts preferences UI allowed you to hide the "Close Document" command, which usually ended badly. (Among other things, Command-W would fail to actuate "Close Window").
  • Made a change to eliminate application stalls which would occur when saving crash recovery state for documents that were open on spinning disks which had gone to sleep.
  • Added an AppleEvent entitlement so that BBEdit can send document-saved and document-closed notifications to the Mac App Store version of Transmit, in order for the latter's "Edit in BBEdit" feature to work correctly.
  • Made a change so that the "Add" command on the Subversion menu is enabled when a document is in a Subversion working copy, but has not yet been added to the repository.
  • Made a change to work around the presence of an ancient legacy font setting whose presence (and incorrect value) can cause all kinds of unwanted side effects such as inconsistent character spacing, shifting text when clicking on a line, and mismatches between where the click lands and what actually gets selected.
  • When moving autosave data to the trash while creating fresh autosave data, made a change so that if the trash was empty before, it'll continue to appear so in the Dock for the duration of the operation.
  • Made a change so that items in application support folders for folder-backed menus (Scripts, Clippings, Stationery, Text Filters) which are aliases or symlinks to folders will appear on the menu as the name of the symlink, rather than the name of the target. This fixes a crash when trying to use "Save as Clipping" when two or more symlinks pointed to the same target folder; but also helps ensure a consistent presentation between the UI and what's on disk.
  • Added simple color support for backtick strings in JavaScript code.
  • Restored the ability to open items on folder-backed menus (clippings, scripts, text filters, stationery) by holding down the Option key while choosing the item's menu command. (As a reminder: Shift while choosing the item's menu command will reveal it using the Finder.)
  • Added a more descriptive error message for name lookup (DNS) failures when connecting via FTP.
  • Made a change in Mac App Store builds to work around a store issue in which customers in some regions were prompted to log in to the app store each time BBEdit started up.
  • Fixed a bug in which cancelling a process in a Shell Worksheet would crash the worksheet service (leaving the application hanging) if the process being cancelled had subprocesses.
  • Fixed bug in which using "Open in Additional Window" on a text document would clear its Undo state, in situations where the document was not already open in two or more windows.
  • Fixed bug in which Canonize would not correctly interpret non-ASCII characters in the canon table unless the table's file was already open in another editing view.
  • Made a change to prevent the "x" widgets in sidebars from getting stuck in the "hover" state, in situations where the mouse was rapidly moved from the widget to some other part of the window (other than the sidebar).
  • Fixed a bug in which items dragged from a disk browser's sidebar would appear to "slide" from the sidebar's top left corner at the beginning of the drag.
  • Made a change so that legacy filters which included a leading period for "file name extension" terms will (once again) correctly match the file name extension.
  • Fixed bug in which command-line tool installation would fail in cases where the tools had previously been installed. This would typically happen after moving the application.
  • Fixed a bug in the JavaScript color scanner in which it would fail to recognize delimited strings which were immediately preceded by an identifier without any intervening whitespace or other punctuation.
  • Added __contravariant and __covariant to the Objective-C/Objective-C++ keyword list.
  • Made a change so that file filtering for executable text files is more strict than before, so that if (for example) you dump a README in the Scripts folder, it won't appear in the menu.
  • Updated the cmark tool used to generate previews for Markdown documents. (As a reminder: you can use an alternative Markdown converter if you wish; see the "Applying Preview Filters" section in Chapter 11 of the user manual.)
  • Made a change to the file-resolution mechanics in project documents, so that a project will always attempt to resolve a relative reference before trying the stored bookmark. This ensures an accurate result in situations such as Git branch switches, where the bookmark would return a correct but undesired value.
  • Fixed a bug in which changes to the name of the root folder in an instaproject were not reflected in the sidebar list.
  • When running a Python script, if python3 is anywhere in your $PATH, BBEdit will use it instead of python. While this is generally useful in a teaching environment, if you are using a custom Python installation (such as Anaconda), it may prove inconvenient. In that case, disabling automatic use of python3 will help: defaults write com.barebones.bbedit RunUsingPython3 -bool NO
  • Added an expert preference to control whether BBEdit uses flake8 when choosing "Check Syntax" for a Python document. If you would prefer to use Python's built-in syntax checking, you can do so: defaults write com.barebones.bbedit UseFlakeForPythonSyntaxChecking -bool NO
  • When updating the contents of the "Open Recent" menu, if BBEdit sees that the global "Recent Items" setting in the General system preferences is "None", it will also clear the list that the OS uses to update the recent items menus in the Dock and the Apple menu.
  • Made a change to significantly reduce the time required to load ASCII files. This will be most noticeable on very large files.
  • Made a change to improve the performance of some operations which involved examining large quantities of text to determine the number of line breaks.
  • Fixed a bug in which the Ruby function scanner didn't correctly identify the various types of callouts on the function menu. #MARK: is now also correctly identified.

New in BBEdit 12.6.3 (Apr 5, 2019)

  • Fixes:
  • Corrected the appearance of the "Clear Markers" panel when in Dark Mode on macOS 10.14 and later.
  • Fixed a bug in which SFTP file listings did not honor the "Show items starting with “.” option.
  • Fixed a bug in which the "Save [a Copy] to FTP/SFTP Server" listing didn't sort in the same order as FTP browser windows when sorting by name (or using the default sort order).
  • Fixed layout bugs in the "Find & Mark All" panel, and adjusted it to use the default editor font in the text boxes.
  • Made a change to ensure that a file being run using the #! menu is executable (u+x) and not quarantined, since otherwise the system may return a "permission denied" error when trying to run it.
  • Fixed bug in which the primary highlight color was used inappropriately for inactive text views.
  • Made a change to the XPC services that run shell commands to prevent them from terminating if a SIGPIPE occurs while running the command.
  • Made a change so that clients of the current Unix environment (shell commands, SFTP, worksheets) correct certain environment variables which are "helpfully" set to incorrect values, and to remove other environment variables which can interfere with the correct operation of cross-application Unix tools (such as Kerberos).
  • Added public.json to the built-in list of content types that BBEdit recognizes as text files.
  • Fixed bug in which the soft-wrap radio buttons in the "Text Options" sheet were unresponsive.
  • When restoring application state at startup, BBEdit will share FTP/SFTP connections as much as possible; so that it will need to open a single connection for all files opened from a particular server/port/account, rather than one connection per file being reopened.
  • Fixed crash which would occur when choosing certain colors using the color swatches in the CSS markup panels.
  • Fixed bug in which colors from language-specific color scheme settings did not correctly override the global setting.
  • Fixed a bug in which untitled documents with non-unique names did not show the text summary in the Window menu.
  • Fixed bug in which the search results windows for searches done with "Exclude Matches" turned on would use the wrong format for the summary line in the window.
  • Fixed bug in which Multi-File Search results windows did not use a flat list format when "Exclude Matches" was turned on; and cleaned up the display in that case.
  • Cleaned up the summary line in multi-file search results windows for the "no matches found" and "one match found" cases.
  • Fixed a bug in which the SFTP implementation wasn't allowed access to the Keychain, which in turn broke Kerberos authentication (which stores tickets there in some configurations). We drink to numb the pain.
  • Made a change to the scripting terminology so that verbs using the search git-ignored files syntax record in a form that AppleScript can compile.
  • Fixed bug in which pasting text copied from an editor view into one of the text fields in the Multi-File Search window would set the field's language to the language of the original text view, which was confusing (and wrong, when it caused soft wrapping to turn off in the Search For or Replace With fields).
  • When saving a file beginning with #!, in addition to setting its permissions u+x, BBEdit will also clear the OS quarantine so that the file can be run by the Terminal and other applications.
  • Made changes to remove OS quarantine information when saving #! files (either new or existing).
  • BBEdit will always ensure that quarantine is removed before running a file using the #! menu, but will only manipulate its permissions to make sure it's executable when the command actually requires that the file be executed (i.e. not "Check Syntax" or "Show Module Documentation").

New in BBEdit 12.6.2 (Mar 22, 2019)

  • Additions & Changes:
  • Non-App Store builds of BBEdit will no longer prompt for sandbox access at startup. However, it is still possible that sandbox access is required in order for certain behaviors to work correctly.
  • In particular, the OS will unilaterally decide to "quarantine" certain files when you ask BBEdit to open them from the command line; and there are likely to be other misbehaviors caused by assumptions that the OS makes when running a sandboxed application.
  • If this poses a problem for you, go to BBEdit's "Application" preferences, and check the "Sandbox access" indicator. If the status indicates "not allowed", then use the "Allow" button to grant BBEdit sandbox access. This will prevent the OS from adding quarantine to files opened from the command line, and may work around other OS misbehaviors.
  • Adjusted the built-in FTP client to use the MLSD command to obtain directory listings, if the server supports it. If not, BBEdit will fall back to more primitive methods. This corrects cases in which some FTP servers do not return complete listings, most notably omitting files whose names begin with a period (.).
  • On some servers, however, MLSD works, but does not return the same results as the older methods. Therefore, there is a method to disable use of MLSD:
  • # only for "foobar.example.com" - defaults write com.barebones.bbedit FTPDisableMLSD:foobar.example.com -bool YES
  • # only for servers in "example.com" - defaults write com.barebones.bbedit FTPDisableMLSD:example.com -bool YES
  • # global preference - defaults write com.barebones.bbedit FTPDisableMLSD -bool YES
  • We recommand that that you disable MLSD per host whenever possible, rather than globally or per-domain.
  • Fixes:
  • Made a change to the EditorConfig internals to improve performance during large-scale batch operations, such as multi-file search.
  • Made a change to improve the performance of the filename-to-extension language mapper during large-scale batch operations (such as multi-file search).
  • Made a change to reduce overhead when guessing a file's text encoding during large-scale batch operations such as multi-file search.
  • Made a change to resolve confusion caused by an OS behavior, which left the default location for the Save panel pointing at the top level of the startup disk after granting sandbox access. This in turn left the panel pointing there by default when saving a new document.
  • Fixed a bug in which the sidebar width was not correctly restored in windows which were in full screen mode when the application was quit.
  • Change the “file filter” and “folder filter” syntax in the scripting terminology to “file_filter” and “folder_filter”, respectively, so that recorded scripts actually compile.
  • Made a change to fix a probable crash which would occur when doing a batch site update while one or more files from the site were open for editing.
  • Renamed the “BBAuthOperationsXPCService” helper to “BBEditPrivilegedOperationsHelper”, so that it's less scary for the unwary.
  • Fixed bug in which Add/Remove Line Numbers took much longer than it should have in cases where it took long enough for a progress dialog to be necessary; and corrected the titles in the Add/Remove Line Numbers progress dialog.
  • Fixed bug in which the sidebar width was not restored correctly when restoring application state at startup, when the "Automatically show" sidebar setting was "Always".
  • Worked around an OS misbehavior in which temporary files written out for running #! scripts from within the application (when the document you want to run has unsaved changes) were quarantined, and so attempts to run them using the shell would fail.
  • Adjusted the default width of the sidebar so that it's not quite so wide.
  • Fixed bug in which JavaScript function generators would confuse the function scanner.
  • The "Deploy Site" command for projects will now skip over Google site verification files when preprocessing (based on whether the file has "google-site-verification:" at the very start).
  • Fixed a bug in generation for #include and #bbinclude in which an absolute path was always generated for files within the site's specified "templates and includes" directory.
  • In cases where a site project's "Templates and Includes" folder is inside the project's "Local Site Root" folder, the contents of the templates folder will no longer be preprocessed nor uploaded when deploying.
  • Fixed a bug in which opening the Functions palette with keyboard focus in the Live Search box would result in the palette being devoid of items.
  • Fixed regression in which touching a file's modification date outside of the application did not cause its displayed modification date to update in the editing view status bar.
  • Fixed a bug in which printing always ignored the time stamp setting, and used the printing date in the page header.
  • When using "Run in Terminal" or "Run in Debugger" for a file with a #! line, BBEdit will no longer attempt to guess which tool should be used to run the file, and will simply ask the shell to run it. That way, custom #! lines (e.g. for custom Python installations) will work as expected.
  • Added a few CSS selector names to the built-in keyword list.

New in BBEdit 12.6.1 (Mar 10, 2019)

  • Fixes:
  • When running on macOS 10.14.1 and later, if /usr/local/bin/ and/or /usr/local/share/man/man1/ don't exist, BBEdit will try to create them before asking the system to complete installation of the command line tools. If this fails you will get a useful message, rather than a silent failure to install the tools.
  • Fixed a performance bug in which BBEdit would always ask a language module to do a keyword lookup, even when the module did not explicitly report that it supported lookups.
  • Fixed bug in which the filename extension-to-language mapping inappropriately conflated extensions and base file names; so if (for example) you opened foo.php, and then subsequently opened the php executable, BBEdit would try to treat the latter as a PHP file. This never ended well.
  • Although you should always specify which text to include when using the make new line AppleScript construction, BBEdit will no longer crash when you fail to do so. In the absence of any text, a single blank line is assumed.
  • Fixed a bug in which the application's test for determining the usability of an automatically located Unix tool did not always return the correct answer. This would break things like in-application Python script execution.
  • Worked around macOS sandboxing bug in which certain ssh operations which required socket access to ssh-agent would fail. A common case of this was SSH multiplexing, but certain forms of key access would fail to. This in turn broke the built-in SFTP support, typically resulting in 22807 errors when trying to connect to SFTP servers.
  • Fixed a bug in which changes to the print settings in the Print panel didn't take effect, nor did they persist.
  • Made internal changes in the SFTP client implementation to work around stability issues caused by an OS bug when running on macOS 10.12.6.
  • Fixed bug in which cancelling an SFTP connection attempt would be "sticky", and cause future connection attempts to fail until the FTP/SFTP browser window in which the connection was created was closed.
  • Fixed a bug in which running a text factory from the Scripts menu with no previously specified sources would prompt for sources and options, and then do nothing.
  • Fixed bug in which the "Options" sheet for a "Run Unix Filter" text factory operation would refuse to appear if a Unix script had previously been selected, but was missing.
  • Fixed a bug in which the application-modal progress panel (used for a few things, like remote file transfers and folder compares) did not properly update itself as requested by the task being performed (for example, the name of a folder/file being compared, or the amount of data transferred).
  • Worked around macOS sandboxing bug (48537807) which caused AppleScript recording to be nonfunctional.
  • Fixed bug in which a PHP function declaration with a nullable return type would cause that function to be omitted from the functions menu.
  • Added some keywords to PHP for built-in types.
  • Fixed a bug in which files which began with a #! were inappropriately guessed as HTML, if they contained something recognizable as HTML (such as HTML code in a heredoc or string).
  • Worked around an OS behavior in which the dictation system would cause insertion of a naked carriage return (ASCII 13) when dictating "new line". This would appear as a gremlin.
  • Added a third-party application to the AppleEvent entitlements so that ODB support works with it (com.agile.teambase).
  • If a Unix text filter returns a nonzero exit code, BBEdit will do nothing and report an error, instead of replacing the selection (or document contents) with nothing.
  • Fixed bug in which bbdiff /dev/null /path/to/some/file did not activate the application.
  • "Apply Text Filter" and "Paste Using Filter" are (once again) allowed in the edit fields in the Find and Multi-File Search windows.
  • Fixed a performance regression when running AppleScripts from the Scripts menu or other sources, particularly when the script performed a large quantity of operations which involved sending events to BBEdit.
  • Made a change to the way new files are created on disk when performing a Save As, to see if that fixes a reported symptom with new-document saves requiring authentication.
  • Made a change to work around an OS bug (46341124) in which the OS would refuse to resolve certain file references created by older versions of the application, and return an inscrutable error.
  • The built-in software updater once again accurately checks for whether you're able to install the updated application, and thus can appropriately decide to download the update disk image, instead of trying (and failing) to self-update.
  • Added the async keyword to the JavaScript language module, and fixed a bug in which its presence in a function assignment would cause the function scanner to list it as "[anonymous]" in the function menu.

New in BBEdit 12.6 (Feb 26, 2019)

  • Additions:
  • Added a "Folders" submenu to the main application menu. This menu gives quick access to BBEdit's application support folder (the same list that is available in the Folders tab of the Setup window). This is useful on its own merits, but is of particular relevance in the application sandbox, in which support folders can be buried in locations that are not easily accessible from the Finder.
  • Changes:
  • Made a change so that double-clicking anywhere in a syntax-colored number will select the entire number, even if it contains a decimal point (which would otherwise be a word break).
  • When running on macOS 10.14.1 or later, BBEdit now uses built-in OS support for performing operations which require privilege escalation, namely authenticated saves and (if escalation is necessary) installation of the command-line tools.
  • If the application resets the evaluation period, the splash screen at startup will now advise you of this, via an alert. (The evaluation period gets reset when we've made significant changes to the application which we believe would warrant a full trial.)
  • Reworked the way BBEdit runs AppleScripts from the built-in Scripts menu and other sources, for sandbox compatibility and to resolve various longstanding issues.
  • AppleScripts are now run in a separate process, which means that any previous differences in scripting behavior as the result of running a script within BBEdit or from the Script Editor should be a thing of the past.
  • If "Keep folders on top when sorting by name" is selected in the Finder's preferences when BBEdit starts up, FTP browser windows will now obey the option and behave accordingly.
  • Changes to expert preferences from the command line (via "defaults write") are allowed to take effect immediately (except in documented cases where the preference change is intended to apply at a specific point in time, such as when restarting the application).
  • The panel that appears when using "New Disk Browser" from the File menu now contains a helpful prompt.
  • The Save panel used for in response to "New Project Document" now has a prompt to clarify its purpose.
  • There is now an expert preference for controlling SSH "keepalive" behavior. If you have problems with your SSH server closing the connection after a period of non-use (which will subsequently cause errors in BBEdit), you can tell BBEdit to send a periodic "keepalive" message to while connected to the server.
  • This is configurable per host, per domain, or globally. Determining the appropriate value may require some experimentation, but 90 seconds is probably a good starting point.
  • The "Text Options" sheet gets a setting for the tab width, and an indicator when the file's settings are managed by EditorConfig.
  • BBEdit-specific print settings are now available in the Print panel when printing a text document. As a result, we have removed the "Printing" section from the "Text Options" panel, and restored the latter to its former simplicity.
  • The displayed path for files opened from within Zip archives or tarballs is now abbreviated using a tilde, if it is within the current user's home directory.
  • Fixes:
  • Modernized the internals of the #! script and Unix executable runner, SFTP operations, and shell worksheets.
  • Rewrote the internals of the built-in software updater to be sandbox-friendly. (This does not apply to Mac App Store builds.)
  • Updated the privilege escalation internals (used for authenticated saves and command-line tool installation when running on macOS versions prior to 10.14.1) for compatibility with app sandboxing.
  • Fixed bug in which the initial line number in "Go To Line" would not take into account any folded ranges in the text.
  • Fixed bug in which dragging the title bar icon in a window would drag the full-sized icon image.
  • Fixed bug in which the Windows palette didn't re-sort when the active document changed in an open window, or when certain other changes were made to open documents or windows.
  • Fixed bug in which the font smoothing expert preferences were inappropriately allowed to disable font smoothing while printing.
  • Fixed bug in which type-to-select in FTP browser windows would behave unpredictably, because as it turned out, the system was helpfully attempting to match in columns other than the "Name". (Thanks to Daniel Jalkut for figuring this out. Go buy one of his products or become a member of his podcast.)
  • Fixed bug in which SCSS interpolation structures (#{...}) would confuse the SCSS block parser and result in incorrect fold generation and function listings.
  • Fixed bug in which folders that were twisted open when saving state for a disk browser (when quitting) were selected when the disk browser window was reopened at startup.
  • Fixed crash which could occur if a document was closed while processing a (possibly accidental) command-click (the gesture to open an URL).
  • Fixed bug in which Command-Shift-click on an URL did not open it in the background, as it should have. (The intended behavior is to open the URL in its designated application while keeping BBEdit active.)
  • Fixed bug in which certain inline-input edits which involved deleting in-progress input at the beginning of a hard line in a soft-wrapped document would leave the insertion point in the wrong place, and cause unexpected arrow-key navigation afterwards.
  • Made a change to improve text encoding detection in XML files whose filename extensions didn't map to XML. As long as the file has an exact "

New in BBEdit 12.5.2 (Dec 16, 2018)

  • Fixes:
  • Fixed a case in which the git-ignore checking would mysteriously stop working in times of OS memory pressure.
  • Fixed bug in which dragging multiple items from an FTP/SFTP browser window didn't work when running on macOS 10.14 and later.
  • Fixed a drawing glitch in the line number bar which would occur with certain files which contained a mixture of Unicode line separators and normal line breaks. (In the appropriate conditions, BBEdit will now draw a "-" in the line number bar rather than drawing junk.)
  • Added some keywords to the Preferences search metadata, so that searches for "theme" and "dark mode" turn up results in appropriate places.
  • If you were clever and used NSRequiresAquaSystemAppearance to force BBEdit to always use Light Mode (when running on macOS 10.14 or later), it will now behave a little bit more consistently than before (although some parts of the UI may not look quite right if you insist on using a dark editor color scheme under those conditions).
  • Resolved an issue that had previously required us to disable the JIT support in PCRE2. Regular expression execution should now run at full speed whenever possible.
  • Fixed a bug in which persistent file locators for items that were read-only or in read-only locations couldn't be created. The usual behavior is that such items didn't reopen if they were left open when quitting the application.
  • Fixed bug in which a 13801 error could occur when running AppleScripts from various built-in points (Scripts menu, Apply Text Filter, and others).
  • Worked around the system's refusal to resolve bookmarks to files in certain locations (such as /private/etc/), which manifest as documents in those locations not reopening at startup.
  • Fixed a bug in which BBEdit would use the wrong highlight color when using a light-background color scheme while system-wide Dark Mode was in effect.
  • Fixed a bug in which the application would exit immediately when trying to save edits to a file that had been opened while browsing a non-writable Zip archive. Such documents are now locked and you must save a separate copy if you wish to make changes.
  • Worked around a bug in which many FTP servers would return an affirmative response to the CDUP command but not actually change the working directory on the server, which would in turn lead to problems after using Command-up-arrow in an FTP browser window to go up the directory hierarchy.
  • Fixed bug in which permissions changes made via the "Info" panel in FTP/SFTP browser windows took effect remotely, but weren't reflected in the listing data (so they didn't appear to change without refreshing the listing).
  • Fixed bug in which the "New HTML Document" command was absent from the contextual menu in the "Project" section of a project window's sidebar.
  • Fixed bug in which menu sorting metacharacters would appear in the "Go" panel's listing.
  • Fixed a case in which the application could crash early in the startup process given the proper confluence of circumstances, namely an ancient application support folder and certain text encoding preference settings.
  • Fixed bug in which refreshing a multi-file search results window would lose the hierarchical organization, so single-file results were listed "flat".
  • Added some constraints to the "Size" and "Kind" columns in FTP/SFTP browser windows to prevent them from being made too small (or too large).
  • Fixed regression in which a file filter specified in the sidebar of a project or disk browser window was inappropriately applied to folders, which would almost always hide everything.

New in BBEdit 12.5.1 (Nov 22, 2018)

  • Changes:
  • Made a change so that Shift is now allowed to flip the sense of "Auto-Expand Tabs" when pressing the Tab key to insert text into a text document. Thus, if "Auto-Expand Tabs" is turned off, Shift-Tab in an editing view will insert spaces, otherwise it will insert a Tab.
  • Note that this only occurs if there are no applicable options that would have been invoked by the Tab key (placeholder navigation, text completion, or Shift Left/Right).
  • As before, Option-Tab always overrides such actions, so Option-Shift-Tab can be used to both override any actions and flip the sense of Auto-Expand Tabs on the fly.
  • If you are using Dropbox, BBEdit will now look in the "Apps" folder for its application support folder ($DROPBOX/Apps/BBEdit/), before it looks in the "Application Support" folder ($DROPBOX/Application Support/BBEdit/). The older location is still supported for compatibility with existing installations, but if you want to use Dropbox to share your BBEdit support folder, you should place it in Apps.
  • Changed the default for vertical scroll speed throttling to NO (its pre-12.5 behavior) and adjusted the Expert Preferences help accordingly.
  • Fixes:
  • Changed the minimum size for FTP/SFTP browser windows so that they can be made narrower than was previously possible in 12.x generations.
  • Fixed bug in which trying to cancel installation of our authenticated-operations helper would fail to cancel whatever operation needed its help.
  • Fixed a bug in which file names which exactly matched claims by a language module (e.g. CMakeLists.txt and the CMake module) weren't mapped correctly when the filename extension matched something else (like .txt).
  • When dragging text to the sidebar, if the text contained non-file, ftp, or sftp URLs, a -1708 error would result. Those URLs are now ignored.
  • Fixed crash which would occur at startup in cases where the "Language Modules" support folder didn't exist, and the permissions of the BBEdit support folder didn't allow BBEdit to create it.
  • Fixed a bug in which using "Save [a Copy] to FTP/SFTP Server" would sometimes crash when applied to a file on an FTP (not SFTP) server.
  • Fixed a bug in which the "(none)" item in the Current Language status bar menu was always checked in addition to the document's actual language setting (when it was something else).
  • Removed mention of Perforce from the expert preferences, since it is no longer applicable.
  • Fixed a bug in which the Java scanner would hang in some situations, mostly involving being asked to process files which were manifestly not Java source.
  • Fixed bug in which BBEdit didn't ask the OS to create a version snapshot when saving a document.
  • Made a change to the image viewer so that the image is scaled into the view area, rather than allowing scrollbars.
  • The bbdiff(1) tool now accepts -w as a synonym for --wait, and -V as a synonym for --short-version. The man page and usage info have been updated to include this.
  • Because aliasing or symlinking the BBEdit application support folder is not supported, the application will now alert you at startup if it finds that you have done so.
  • Items in folder-backed menus (Scripts, clippings, and others) whose names contain slashes will now display correctly in the menu.
  • Fixed bug in which choosing the "Manage Filters" item from either of the filter popups in the Multi-File Search window would leave that popup stuck on "Manage Filters". (It didn't affect filtering, only the display of the popup button.)
  • Fixed bug in which changing the check box settings ("Use custom highlight colors", "Highlight insertion point") in a Color Scheme document did not mark the document as needing to be saved.
  • Fixed bug in which attempting to use the "Pretty Print" markup format option would fail and report an error when a customized profile was present in the BBEdit application support folder.
  • Fixed bug in which the text entry boxes in the Text Factory "Replace All" sheet were not readable when in Dark Mode.
  • Corrected appearance of the "Find Definition" listing panel when in Dark Mode.
  • Fixed a bug in which the Software Update progress window would remain on screen in cases where extracting or verifying the download package failed.
  • Fixed bug which would cause a -50 error to be reported when trying to save changes to a document opened by browsing a Zip (or Zip-like) archive.
  • Increased the timeout when requesting the current runtime environment, to handle cases in which the user's login shell takes a long time to return data from a printenv command. This may address cases in which PATH and other environment variables are incorrect when running a #! script.
  • Fixed a bug in which the Swift language module would generate invalid run data in certain situations, which would in turn crash the balancer (including Balance while Typing). The Swift module has been corrected, and the balancer has been hardened so that this doesn't happen again.
  • Fixed a crash which could (very occasionally) occur when opening or saving a document via SFTP. This lurking horror from beyond space-time was vanquished by a sparkly princess riding a unicorn. (Rude not to, really.)
  • Made a change to fix a reported crash when trying to use the Commands window (although there's still no clear explanation of what triggers this particular condition).
  • Restored the font- and size-specific smoothing expert preferences, so that bitmapped font rendering is again allowed. However, unlike previous versions, this is only possible when the window being displayed is on a non-Retina ("@1x") display.
  • Fixed crash which was triggered by doing an "Open Selection" or "Open File by Name" operation in a shell worksheet.
  • Fixed a cosmetic issue in which the system monospaced-digit font was used in places where doing so did not improve readability. (That's polite-speak for "it looked really janky.").

New in BBEdit 12.5 (Nov 9, 2018)

  • Additions:
  • There is a new command on the "Go" menu: "Commands...". This brings up a modal panel which lists everything that you can do from a menu in BBEdit: menu commands, clippings, scripts, stationery, text filters, as well as open text documents and recent files.
  • Type in the search box to narrow down the list; when you do this, results are ranked by how closely each entry matches what you entered.
  • You can use wildcards (not Grep, but conventional file name wildcards like "*", "?", and so forth) if you like.
  • Use the up- and down-arrow keys to move between matches; Return or Enter will run the highlighted command. This works whether keyboard focus is in the search box or on the list.
  • You can dismiss the panel without doing anything by pressing Escape or Command-period.
  • The right-hand column will display the currently assigned keyboard equivalent, if there is one. Double-clicking on the equivalent, or in the space where it would be, will allow you to change the key equivalent: press the keys that you would like to use for that command.
  • You can now generate lipsum, using the "Lorem Ipsum" command on the Insert submenu of the Edit menu.
  • Lipsum generation is available in clippings.
  • Lipsum generation is available as an HTML document placeholder, using the same #lipsum...# syntax as for clippings.
  • Added support for Grep patterns to Canonize. This can be turned on using the check box in the "Canonize" dialog box; or by using a mode line in a Canonize data file.
  • Added support for mode lines in Canonize data files. The mode line must be a comment line and occur on the first or second line of the file.
  • Multi-File Search results windows now get a "reload" button, which you can use to repeat the search using the same settings.
  • There's a new command available on the Search menu and in the contextual menu in text views: "Search for [selected text] in [location]". This will start a multi-file search for the selected text (or the word surrounding the insertion point, if applicable), in the locations most recently used in the Multi-File Search Window.
  • There's now a "Word" command on the Select submenu of the Edit menu. Choose it to select the word(s) containing the insertion point or selection range. There is no default keyboard equivalent for this; you can assign one using the "Menus & Shortcuts" preferences.
  • Added a collection of commands to the Miscellaneous group in the Menus & Shortcuts preferences: "Edit View Scrolling". Each of these is for scrolling an edit view in the appropriate direction, and is a convenient hook for assigning a keyboard equivalent for easy keyboard scrolling (e.g. control-up/down-arrow, or control-left/right-arrow).
  • Added a "Clear History" command to the search/replace history menu in the Find and Multi-File Search windows.
  • The setting to enable single-click line selection (by clicking in the line number bar or gutter) is now available in the Editing preferences.
  • Added a "Title Case" option for Change Case. This will make the first letter of each word in the selected range uppercase, except for certain words that would not be appropriate. The implementation uses NSString+IATitleCase, copyright ©2016 Information Architects, Inc. and used under the terms of the MIT License.
  • The Multi-File Search window provides the ability to filter files and folders separately. In this way, you can include only those folders that you explicitly wish to search.
  • The "Find Differences" command now provides an option for separate folder filtering. This follows the same rules as described in the change for Multi-File Search.
  • Added folder filtering controls to the "Options" panel for text factory windows. (Folder filtering follows the same rules as Multi-File Search and multi-file Find Differences.)
  • The options for Find Differences are now tabbed, to reduce clutter in the dialog box. As a result, you can now make the Find Differences dialog narrower (horizontally) than before.
  • The Find window gets a new button: "First". Clicking this button will always find the first match in the document, irrespective of where the insertion point or selection range may be.
  • There is a new command on the Search menu: "Find First". This command will always find the first match in the document for the current search string or pattern, using the options previously set in the Find window, irrespective of where the insertion point or selection range may be.
  • BBEdit enables this command while keyboard focus is in the Live Search box; and using it in that situation will highlight the first match in the document for the current Live Search string/pattern.
  • There is a new command on the Search menu: "First Occurrence of Selected Text". If a selection exists and the global preference to "Display instances of selected text" is turned on (in the Editing preferences), then this command will display the first highlighted range of the selected text that occurs in the document.
  • There's a new command on the View menu: "Merge Windows". When a non-project editing window is active, this command will collect the open documents from all other non-project editing windows that are open behind it, and will then close those other windows. The end result is that all open documents are (...wait for it...) merged into the active window.
  • If this command is disabled, it's because the active window is a document-based project (bbprojectd) or an instaproject (created by dropping a folder on the application), or there are no other qualifying document windows open.
  • The "Collapse Folds Below Level" submenu commands can have keyboard equivalents assigned to them, if desired, using the "Menus & Shortcuts" preferences.
  • "Show Working Copy Status" results windows now include a Reload button, which will refresh the results.
  • There is a GUI editor for color schemes. If you drop a .bbcolors or .bbColorScheme file on the application, a color scheme document window will open for that scheme. You can make changes to the colors, similar to the fashion in which the "Text Colors" preferences does it.
  • In addition to the color swatches and applicable settings, a scheme editor window has two buttons: "Apply" and "Install".
  • The "Apply" button will change the active color scheme to use the colors specified in the window. This is good for trying out a color scheme before installing it, or when testing out changes to a scheme. BBEdit does not save the changes made by the "Apply" button to your preferences.
  • The "Install" button is useful for installing a downloaded color scheme, and will copy it to the "Color Schemes" folder in your active BBEdit application support folder.
  • The "Bookmarks" pane in the Setup window now gets "go to" arrows for each bookmark; clicking on the arrow will open that location in an FTP/SFTP browser.
  • BBEdit is now built using the macOS hardened runtime, for increased security protections when running on macOS 10.14.
  • The list items in the "Folders" tab of the Setup window are drop targets; you can drag files on to them and the file(s) will get moved to the appropriate directory. You can hold the Option key down to copy instead.
  • Added a lightweight language module for sandbox profile (SBPL) files; it folds matched pairs of parens and will color comments, strings, and some keywords.
  • Edit => Columns => New Document with Columns will make a new untitled document with the text of the selected columns (given a recognizable column-delimited file).
  • Added a "Remove Blank Lines" pattern to the factory default list of patterns, as an example.
  • A simple Swift language module is now included with the application.
  • A "sidebar width" scripting property is available for project/editing windows, which returns the width of the sidebar as a fraction of the window's overall width.
  • Plug-in language modules may now specify custom badge information for use in the function menu. Details on how this works are available in the updated language module developer notes.
  • Added a port of the "Xcode Dark" color scheme to the built-in list. Thanks to Andrew Carter for his contribution.
  • Print settings (via the Print panel) are now remembered per document, and applied as needed. They are saved in the document state.
  • The Open File by Name window now highlights each matching file name, based on its relationship to the search string.
  • Changes
  • We have reorganized the "Appearance" preferences pane, moving the "Match appearance" check box to the top and making room for an annotation below it. The "Show icons" setting for sidebars has been squeezed out and moved to the Expert Preferences help (the setting is still honored).
  • We have changed the order of menu items in the file filter UI: legacy HFS properties are now at the end of the menu (and some day may go away entirely, so be prepared). In addition, since folders may be used for either files or folders, the word "File" has been removed from the nomenclature except where a term applies specifically to files only (such as "File contents").
  • The "Open" button for results windows (Multi-File Search, SCM operations, and others) has been deemed surplus to requirements and we have removed it from these windows. (You can still open items from a results window many different ways: return or Enter while the list has focus; or double-click on an item.)
  • The Text Options popover (under the gear in the navigation bar) will show an indication when settings in the document you're editing are affected by a .editorconfig file, because changes to affected settings are lost when closing the document.
  • We have retired the built-in Perforce support. You can certainly continue to use BBEdit to edit files under p4 control, and it will continue to function as a P4EDITOR and P4DIFF helper (set those configuration variables to "bbedit -w" and "bbdiff -w", respectively).
  • The Multi-File Search window now shows enhanced summary information; it will provide a full summary of all of the items being searched. There's a scroll bar in case you need it.
  • Added some vertical space to the "Enter License" panel so that there's more room for helpful text.
  • Rearranged the "View" menu slightly, so that it's a little shorter overall. The "Text Display" submenu is now at the top, followed by a "Window Appearance" submenu which contains the previously inlined commands for turning on and off various elements of the window display.
  • When running a Unix script or executable from the Scripts menu, the selection range of the active text document is available by reading from stdin. If there is no selection, the entire contents of the active text document are provided.
  • The "Exclude matches" option for multi-file searches is in the window itself, rather than being hidden behind the Options sheet.
  • In the Multi-File Search window, when "Exclude matches" is turned on, the summary now includes an annotation, so that you'll be reminded why your searches "don't find anything".
  • Cleaned up the "Folders" pane in the Setup window. The arrows are now gone, and each folder icon is a clickable button that does what the arrow used to (and more reliably).
  • Removed the Keyboard preference setting to control Option-Yen behavior. The entry of ¥ on Japanese keyboards is switchable for the applicable input method in the Keyboard system preferences.
  • When running on macOS Mojave (10.14) or later, the Appearance preferences contain an option: "Match application appearance to selected editor color scheme". When enabled, this will do what it says: when the application color scheme is dark, BBEdit's windows and UI elements will use the Dark Mode appearance; otherwise the standard appearance will be in effect. This operates irrespective of the system-wide appearance setting.
  • BBEdit will override this setting when you have selected the “Dark” appearance in the General system preferences. This is done so that BBEdit's primary interface can match the system appearance (dialog boxes, palettes, and so forth) will all use Dark Mode when it is turned on system-wide.
  • If there is some reason that you would prefer that BBEdit's presentation always match the selected editor color scheme irrespective of whether Dark Mode is on, you can change this: defaults write com.barebones.bbedit UseSystemAppearanceWhenInDarkMode -bool NO. We recommend restarting BBEdit after you change this setting.
  • On macOS 10.13 and earlier, this option remains "Match window appearance to selected editor color scheme", and although editor windows will be darkened appropriately, some windows are excluded due to limitations in the older OS versions.
  • The "Save Scheme" button in the "Text Colors" preferences has been changed to "New...", and will create a new color scheme document using the current settings.
  • The "New Disk Browser" command prompts for the directory to browse, rather than always opening in the user's home directory (which would not be possible once macOS sandboxing rules go into effect).
  • Changed the default order of items in the Setup window's toolbar. The toolbar is also configurable, so you can rearrange items as desired (or remove them, although that is probably not a good idea).
  • We have removed support for size-based control of font smoothing; the OS has not supported size-based smoothing controls for a very long time, and the mismatches between our controls and the OS font implementation have been causing problems. The Expert Preferences help has been updated accordingly.
  • Changed the "files visible" AppleScript property of project/editing windows to "sidebar visible" to match the UI nomenclature.
  • Since a Swift language module is built in, BBEdit advertises its ability to edit Swift source files to the OS. What the OS does with that information is completely up to it.
  • On Touch Bar systems, the touch bars for the supported windows are now customizable, so you can rearrange or remove items as desired. (Use the "Customize Touch Bar" item on the View menu.)
  • If a file has a com.apple.TextEncoding extended attribute, BBEdit now assumes that it is a text file for purposes of file filtering (for various use cases). This test gets applied after filename extension mapping and other file metadata tests have failed, but before examining the file's content.
  • Pushed some pixels to improve the appearance of the "clippings" badge used for completions (and other circular badges that may appear in the function menu or elsewhere).
  • The bbdiff, bbresults, bbedit, and bbfind tools are now built with the hardened runtime and appropriate entitlements for enhanced security on macOS Mojave.
  • While drag-scrolling (that is, making a selection with the mouse and dragging it beyond the view boundaries, or using drag-and-drop for the same purpose), BBEdit will throttle the vertical scrolling speed. If you would prefer that it not limit the scrolling speed in this situation: defaults write com.barebones.bbedit ThrottleVerticalScrollingSpeed -bool NO.
  • BBEdit is now using an updated version of the PCRE regular expression engine which includes significant architectural rework. There are no changes to the pattern syntax; but the new version addresses various performance bottlenecks and limitations that were present in older versions. Among other things, it should now be possible to do Grep searches in files that are larger than 2GB.
  • If multiple items in a folder-backed menu (Scripts, Text filters, etc) have the same base name, their names will appear with the filename extension, to help resolve confusion which might confuse if (for example, purely hypothetical of course) you have "Markdown.pl" and "Markdown.textfactory" in your Text Filters folder.
  • Made changes so that the default height of text factory, color scheme, and FTP windows is less than the height of the display and the width is appropriate to the window's intended use.
  • The "Find Differences" now limits the maximum number of open text documents that are presented in the "Recent" menu next to each file entry area. The overflow is now provided on a submenu below the top few items.
  • BBEdit will (quietly) check for an update the first time it is used, or if it detects that it's running on a different version of macOS than the last time it was started.
  • Since page setup adjustments are now included in the Print panel, we have removed the "Page Setup" command from the File menu.
  • When you opt out of reopening documents that were opened via the built-in FTP/SFTP support (either by changing the preference in Application preferences; or by clicking "Skip" when prompted at startup), BBEdit will opt out of reopening FTP/SFTP browser windows as well.
  • The command-line tools installer will attempt to install the tools without requesting administrator credentials; only if this fails will it prompt you for administrator permissions. That way, if /usr/local/bin/ exists and is writable by you, no privilege escalation is required.
  • Fixes
  • Made changes to improve compatibility with iCloud Drive when application support and setup data is stored there.
  • Overhauled and modernized the code that locates the BBEdit application support and Setup folders and their contents.
  • "Compare Against Previous Version" and "Compare Against Disk File" are now available for files being displayed in results windows (when keyboard focus is in the editing view).
  • Extensively modernized file system operations in document open/save and other areas.
  • Fixed a memory leak in the Text Options sheet.
  • Fixed a memory leak in the file filtering subsystem.
  • Fixed a bug in which more work than necessary was being done while building the item tree for folders in projects (insta- or otherwise).
  • Fixed bug in which instaprojects would not open up with the correct sidebar width, which was particularly noticeable when the width had been customized via "Save Default Project Window".
  • Fixed a bug in which Hard Wrap would leave the last line of a paragraph unbroken in cases where it was longer than the wrap width.
  • If you use "Edit Markup" in a document whose language is not an HTML variant or XML, and the point at which you invoke Edit Markup is not parseable HTML, the markup builder will pretend that it's within a tag, and will present appropriate options instead of beeping.
  • Fixed bug in which the HTML syntax checker would incorrectly report an error on URLs that contained an ampersand ("&") in the query portion of the URL.
  • Made a change so that -T in a Perl document's #! line is passed through to the Perl interpreter when doing a "Check Syntax", so that it doesn't trigger a note from perl about the mismatch.
  • Fixed bug in which the SFTP client would report a -108 error when trying to perform certain operations after a failed connection attempt.
  • Updated the internal FTP implementation library to the latest available version.
  • Updated an internal API usage to match current recommended best practices.
  • Fixed bug in which file filters specified in a Text Factory window were not applied.
  • Made a change to reduce resource utilization when updating ctags data with many documents open.
  • Fixed a bug in which certain HTML document malformations would confuse the markup tools into thinking that the selection range was inside of a tag pair when in fact it was not, which in turn would cause the generated markup to be inserted in the wrong place.
  • In the Live Search bar, the "Grep" option and saved patterns menu will now respond to the same keyboard equivalents used for activating those items in the Find and Multi-File Search windows.
  • When using the "New Text Document" contextual command in a project window sidebar, BBEdit will add a text encoding attribute to the (empty) file if it is otherwise not recognizable as a text file (based on its filename extension).
  • Fixed bug in which creating a new text file within a Disk Browser window would not select the file in the sidebar, as it should have. (Note that if a file is already selected and has unsaved changes in the browser window, the selection will not change in any event.)
  • Radar 28263496 appears to be fixed as of 10.13, so on the newer OS versions we allow our spelling panel additions ("Skip All Caps") to load.
  • Adjusted the scripting dictionary so that using sdef followed by sdp to generate a Cocoa scripting bridge header generates NSURL* parameters for all of the APIs that need them.
  • Fixed an unreported bug in which the enabling of the "Insert" toolbar item in the Clippings palette was not correct when the Find or Multi-File Search window had keyboard focus.
  • Made a change so that when running on pre-Mojave macOS versions, windows with special needs (FTP browsers and Open File by Name) always use the OS appearance, even when a dark color scheme is selected. This works around various cosmetic issues in macOS 10.12.x and 10.13.x when trying to force a dark window appearance.
  • Fixed typo in the Clippings and Placeholders references in the help book in which DATETIME was used twice in succession, rather than DATETIME_GMT.
  • Fixed a bug in which closing the Find or Multi-File Search window would activate the wrong window in some circumstances (usually involving full screen or Split View mode).
  • The HTML5 syntax checker will no longer generate a warning for elements.
  • If you attempt to save a document in a location from which another document is already open, BBEdit will prevent you from doing so, because otherwise this causes all kinds of confusion.
  • Fixed bug in which the application allowed you to drop things into the "Currently Open Documents" section (in a project window) that didn't belong there. What happened next was usually shocking.
  • Fixed a case in which symlinks in a folder (at the top level) which pointed to the folder itself would be included when expanding the folder recursively in a project sidebar. (Note that symlinks below the top level can still create an infinite loop if they point to the folder or one of its ancestors.)
  • Fixed bug in which Perl documents containing indented heredocs (

New in BBEdit 12.1.6 (Sep 17, 2018)

  • Changes:
  • The maximum depth to which #bbinclude directives can be nested has been increased to 32 (twice what it was before).
  • Fixes:
  • Fixed bug in which dropping an image into PHP code in a "PHP in HTML" document would not generate the appopriate img tag.
  • Fixed bug in which using the character panel to insert characters into a shell worksheet would cause a crash.
  • Fixed a crash which would occur when any built-in or codeless language module was overridden by a newer one.
  • Made a change to fix a crash which would occur while performing a drag operation whose successful completion closed the window in which the drag originated. (An example of this would be dragging the only document from an editing window into the sidebar of another window.)
  • Made a change to allow spell-checking to examine the contents of Python docstrings (triple-quoted strings).
  • Fixed bug in which the completion panel would appear with the wrong line height in situations where the editor font size was set to something significantly larger than the factory default.
  • Made a change to the Windows floater so that it obeys the SortWindowsAndDocumentsByName expert preference (which defaults to yes, so the net effect is that windows and documents in the floater are now sorted by name).
  • Fixed a case in which the wrap limit while printing was not calculated correctly when the "Frame printing area" setting was in use.
  • Added entries for the "Document Type" and "Character Set" submenu heads in the Markup menu for the Menus & Shortcuts preferences, so that these submenus can now be hidden if desired.
  • Fixed a bug in which menu commands which had submenus would not respond to the check boxes in the Menus & Shortcuts preferences, and would always be visible. One manifestation of this was that turning on any single item in the Markup menu after having used "Simple Menus" would cause all of the submenu heads to become visible in that menu.
  • Fixed a bug in which certain menu commands weren't processed correctly when the editing window was in full screen mode, even though the menu command was enabled. ("Un/Comment Lines" and "Un/Comment Block" were the most common occurrence of this.)
  • Fixed bug in which "Preview in BBEdit" would open the preview window invisibly small if the window for which the preview is being created was to the left of the display containing the menu bar on a multi-display system.
  • Fixed a bug in which Preview in BBEdit windows would be placed offscreen when a zero-sized position got saved the last time the preview window was closed (as a result of the above bug). Inappropriate preview window bounds are now ignored, and in such cases the preview window will appear in its default location rather than offscreen.
  • Fixed bug in which Command-right-arrow would not move the selection in cases where an entire soft-wrapped line of text was selected following certain operations (such as a Shift).
  • Fixed bug in which "Convert to ASCII" did not correctly convert ellipsis (...) and some other characters when it should have.
  • Fixed bug in which folding or unfolding text would not mark the document's state as needing to be saved, so simply making a change to folding was not enough to enable the Save command.
  • Fixed a crash which could occur while opening FTP/SFTP browser windows programmatically (such as when restoring application state while starting up).
  • Fixed bug in which alternate split views would sometimes not update while editing in the active view.
  • Fixed a regression from the 11.6.x days in which attempting to open items from an SFTP server run by CoreFTP would fail.
  • Fixed a bug in the CSS/SCSS language module in which certain constructs would interfere with auto-fold generation.
  • Made a change to fix a crash when dismissing the text factory "choose sources" panel when running on Mac OS X 10.11.6.

New in BBEdit 12.1.5 (Jul 15, 2018)

  • Changes:
  • Deactivated the Kite support.
  • When using "Go to Line", you can use it to jump to an absolute character offset instead, by using the line:column syntax but leaving the line blank or specifying it as zero. For example: entering 0:1500 or :1500 will place the insertion point before the 1500th character in the document. (The range syntax works too; so you could use 0:12-0:56 to select characters 12 through 56.)
  • When scanning folders for various purposes (multi-file search, Find Differences, text factories, Open File by Name, and others), BBEdit will no longer explore node_modules directories that it encounters.
  • If you want BBEdit to search node_modules directories:
  • `defaults write com.barebones.bbedit SkipNodeModulesWhenScanningFolders -bool NO`
  • Fixes:
  • Fixed bug in which the "Insert Clipping" panel would crash when double-clicking in the blank space of the list.
  • Fixed bug in which the Setext (yes, Setext) language module didn't properly generate function menu entries or folds for sections.
  • Fixed a bug which would sometimes cause the progress panel to be left behind after connecting to an FTP server, if it took long enough.
  • Fixed bug in which overlapping progress boxes could appear when connecting to an FTP/SFTP server, either in the FTP/SFTP browser window or in the "Save to FTP/SFTP Server" panel.
  • Fixed bug in which quitting the application would clear any text that had been placed on the Clipboard.
  • Fixed bug in which Perl functions with parameterized attributes would not appear in the function menu.
  • If the AllowSingleClickLineSelection expert preference is turned off, clicking in the "dead space" between the left side of a line and the gutter (or line bar, if the gutter is hidden) or left edge of the window (if the gutter and line bar are hidden) will now place the insertion point at the beginning of the indicated line, rather than doing nothing.
  • Fixed bug in which the completion panel would continue to operate after having explicitly accepted a completion that happened to be a prefix for one or more other completions. (This was most likely to happen with dictionary words.)
  • Fixed regression in which some forms of heredoc were not properly scanned by the Unix Shell Script (and shell worksheet) coloring mechanics.
  • Fixed various misbehaviors that would occur during Japanese (and other non-roman) text entry.
  • Fixed a bug in which certain menu commands were inappropriately enabled when the active window was not a document window.
  • Made changes to fix some appearance glitches when running in dark mode on pre-release versions of macOS Mojave. (This does not constitute any kind of announcement of compatibility with or support for the new OS version, which is not in general release until this fall.)
  • Fixed bug in which decimal version numbers for #! guessed languages (e.g. #!/usr/bin/env perl5.22) would confuse the guesser.
  • Fixed bug in which Control-S and Control-R while keyboard focus was in the Live Search box did not perform an appropriate forward or reverse search.
  • Removed colon (:) from the list of characters considered a "quote characters" for line prefixing when wrapping text via the "Hard Wrap" command.
  • Made a change to (slightly) reduce the on-disk size of the BBEdit disk image.
  • Fixed bug in which keyboard focus rings and Tab key navigation didn't work correctly in the "Replace All" options sheet for text factories.
  • Fixed bug in which the alert window for "wrap around" and "not found" and other related indications would flash briefly to a black background before animating out.
  • Fixed bug in which a column-articulated "Go to Line" (e.g. "5:88") would place the insertion point on the wrong side of the requested column (it should have been before the indicated column, not after). This also fixes a misbehavior in which specifying a column after the end of the line would place the insertion point before the last character on the line, rather than after (as was the intended behavior).
  • Fixed bug in which the alternative form of "Go to Line", which used the selection range as a specification, did not support the expanded syntax. So you can now select something, and if it looks like a specification of line:column or any of the other forms supported for "Go to Line", BBEdit will now operate on it as expected.
  • Fixed a bug in which quick-dragging actions in a text factory (click and begin a drag without waiting for the item to highlight) would cause the dragged item(s) to be duplicated in the list, rather than moved.
  • Fixed a couple of layout glitches in the "Replace All" options panel for text factories.
  • When dragging text from an editing view, any custom highlighting (diff ranges, Live Search highlights, etc) is now hidden.
  • Fixed a bug in which entering a serial number for an older version of BBEdit in the "Enter License" panel would report an invalid serial number, when it should have reported that the serial number was for an older version.
  • Fixed a bug in which using the "Open" menu command to open a file from a directory (with a file already open) would create a situation on macOS 10.13 in which subsequently trying to save a file to that same location would fail with a 100020 error. (This was pretty obscure, but could happen more frequently with certain usage patterns which involved opening multiple files from the same location, one at a time.)

New in BBEdit 12.1.4 (May 23, 2018)

  • Additions:
  • Added support to the x-bbedit URL scheme for opening files, and optionally specifying line and column number. The syntax is the same as the txmt URL support in place since BBEdit 8.0.
  • Fixes:
  • Updated the built-in PHP completion tags.
  • Made a change to work around a system behavior that allows compiled AppleScripts to be searched as though they were plain text (which didn't usually end well).
  • Made a change so that the OpenPDFsAsText expert preference is correctly processed in any situation where the application needs to determine if a file should be considered text. The Expert Preferences help for this setting has also been updated to advise that this setting is now off by default, and that changes to the setting take effect the next time the application is started.
  • Fixed bugs which contributed to making Undo malfunction when changes involving inline input or non-Roman (e.g various CJKV) input methods were used.
  • Fixed bug in which SFTP timeout errors were not reported correctly (the typical manifestation was an error code 7 rather than the actual correct code).
  • Command-Period will now correctly work to cancel an SFTP connection operation which is in the process of timing out.
  • Made a change to reduce the amount of work done when logging in to an SFTP server, which improves performance over slow links or when unresponsive servers are involved.
  • Changed the SFTP client internals to work around some SFTP server implementations (I'm looking at you, Pantheon and at you, OpenVMS) which would cause failures when trying to perform routine operations, such as checking for the existence of a directory before creating it, or requesting file attributes.
  • Fixed bug in which turning on "Allow the Escape key to trigger text completion" would allow the Escape key to trigger text completion when in free mode.
  • Fixed bug in which "also in this folder" items on the Counterparts menu were out of order when the document in question was located on an APFS volume (or some other location where the natural file system order is not alphabetic).
  • Fixed a regression in which trying to open a directory located in /private (e.g. /private/etc/) would report an error rather than opening the directory.
  • Fixed regression in which items opened via FTP/SFTP were not added to the recent item history as they should have been.
  • Added let to the JavaScript keyword list.
  • Added var to the Java keyword list.
  • Fixed bug in which a -50 error would be reported when using a three-finger tap in an area where there was no text (or in which it was not possible to detect a suitable word for lookup).
  • When pasting into a new document, any language hint on the clipboard is now applied beforehand, so that no time is spent trying to guess the language after pasting (which can take a long time if the text being pasted is very large).
  • Reduced the rate of change when using a pinch gesture to change magnification.
  • The default setting for "Allow pinch-to-zoom to change magnification" (in the Editing preferences) is now off. This will reduce the incidence of accidental magnification changes on computers where a trackpad is in use.
  • If a plug-in language module is missing its BBLMLanguageDisplayName key, BBEdit will now decline to load it, rather than crashing.
  • Fixed bug in which Emacs navigation gestures didn't work in text fields in the file info popover, but instead were passed through to the document's edit view.
  • Fixed bug in which menu items revealed by the Help menu's search box would be disabled if the front window was a palette.
  • Fixed a bug in which the end of a heredoc string was not detected in some situations where it should have been.
  • Fixed a bug in which having the HTML markup button palettes open would slow the application down when more than a few document windows were open.
  • Fixed bug in which removing markers from a document did not immediately update the listing in the Markers palette.
  • Fixed a performance bug in the Objective-C/C++ language guesser.
  • Fixed case in which "New (with selection)" and "New (with Clipboard)" would be slowed down by unnecessary language guessing.
  • Made a change to shave a bit of (constant) time off application startup.
  • Fixed a bug in which typing a quote to close an HTML attribute value would inappropriately auto-pair the typed character in some circumstances.
  • Fixed bug in which the HTML syntax checker would incorrectly report that some extended mailto: URLs needed character encoding.
  • Fixed crash which would occur in the Ruby function scanner under certain conditions.
  • Added canonical to the list of values for the rel attribute for which BBEdit will not generate a warning when checking HTML syntax.
  • Fixed an API usage pattern to avoid triggering a bug in the OS (38957113/36742395) which would cause BBEdit to hang when the Universal Clipboard is in use on macOS 10.13.x.
  • Floating palettes that depend on which window or document is active are now opened at the very end of the startup process, to reduce the amount of work done by those palettes while reopening windows and documents at startup.
  • Fixed crash which would occur when trying to use the CREATION{DATE,TIME} or MODIFICATION{DATE,TIME} placeholders in a document which didn't (yet) exist on disk, such as when creating a new HTML document with a template.
  • Fixed bug in which a menu attachment on BBEdit•Quit would not run when the Quit menu command was chosen.
  • The "Quit" menu command is now correctly titled "Quit BBEdit".
  • Fixed out-of-bounds memory access when using "Preview in BBEdit" on a document that had no syntax coloring data.
  • If a document does not exist on disk, the CREATION{DATE,TIME} and MODIFICATION{DATE,TIME} placeholders will insert the current {date, time} rather than simply deleting the placeholder.
  • The applicationShouldQuit and applicationDidQuit attachment points will now run when the application is quit for any reason, including a normal "sleep" quit in which state is saved. (Previously, these attachments only ran when the application was set to quit without saving state.)
  • Fixed a bug in which the SGML parser (and thus the PHP in HTML function scanner) would get confused by something that looked like the end of an XML processing instruction inside of a single-quoted string.
  • Fixed crash which would occur if an error occurred while reading a file on disk during preparation of an auto-recovery snapshot.
  • Made changes to guard against a crash that can happen while attaching or removing a display.
  • Fixed event rollover and crash which could occur when trying to open multiple FTP/SFTP items at once from a project sidebar.
  • Fixed bug in which using the "Open Selection" contextual menu for multiple selected FTP/SFTP items in the sidebar would only open the first selected item.
  • Made some adjustments to the text in the Crash Reporter submission window.
  • Fixed bug in the bbedit command-line tool in which a line number specifier ahead of the requested file was not applied when opening the file.
  • Adjusted column autoresizing in the "Go to Named Symbol" panel so that the rightmost column has enough room for the line number when the font size is very large.
  • The "wrap around" search indicator now shows the direction in which the search is wrapping (based on whether it was a forward search or in reverse).
  • Fixed bug in which using the Escape key to dismiss a popover wouldn't work in cases where the popover didn't have a text field (such as the Editing Options popover, or the Info popover for an untitled document).
  • Fixed bug in which documents opened via FTP or SFTP URL from the command line along with a line number specification would not select the requested line in cases where the document was already open.
  • Made a change so that the application overrides certain undesirable settings that are globally set by the OS, such as the one that causes a period to appear when pressing two spaces.

New in BBEdit 12.1.3 (Apr 12, 2018)

  • Additions:
  • Added support for the following extension to the x-bbedit: URL scheme. The new-document verb will create a new text document with the text provided in the URL.
  • Changes:
  • Made a change to remove the feature in which holding a modifier key (such as Shift or Option) down while choosing an item from the Scripts or Filters or Clippings menu would perform alternative operations (such as Reveal in Finder or Edit).
  • Although this was occasionally convenient, it was magical and thus not easily discovered; and in the New World Order it tended to misfire while using keyboard equivalents for those items. You can still perform the same operations using the appropriate palette, via the toolbar buttons. (Right-click in the toolbar and use "Customize Toolbar" as desired.)
  • The "Edit..." button in the toolbar for folder-backed palettes (Scripts, Filters, Clippings) has received an ellipsisectomy.
  • Updated the wording of the title bar violator (which appears unless you have entered a valid license code) so that it's clearer that you can keep using BBEdit after the evaluation period is over. The violator now specifies "Free Mode" instead of "Evaluation Ended".
  • Fixes:
  • Fixed a latent bug in the list of search sources used in the Multi-File Search window.
  • Restored "Quick Look" in disk browsers and project windows to working order.
  • In cases where a progress window needs to be interrupted for a modal alert (usually when connecting via sftp), switch off window animations and delay the return of the progress bar for a smoother experience.
  • Fixed a bug in which file locators provided by external "open file" requests were not "standardized", which could lead to situations in which locators which indicated the same item via different paths were not treated as equivalent; and fixed the case in the bbedit tool which triggered the initial report.
  • Made a change so that certain irrelevant errors returned when running an AppleScriptObjC script are no longer reported.
  • Fixed crash which would occur when trying to store information about a recently used item in situations where the item had been deleted.
  • Fixed a thread-safety issue which could cause a crash during multi-file search in situations where it was necessary to parse an HTML or XML file to guess its character set.
  • Fixed bug in which the Objective-C guesser was a little bit too liberal, and would be tricked by @classmethod in Python text.
  • Fixed various bugs in the "Compare Revisions" and "Compare Arbitrary Revisions" dialogs, including a crash which would occur when an item in a revision list was double-clicked, which would in turn attempt a comparison even when no other revision was selected.
  • Fixed a case in which the Objective-C[++] function scanner would run off the end of the text in certain rare situations.
  • Fixed case in which the function menu item in the navigation bar was allowed to be arbitrarily large, which would cause it to push items on the left-hand side (such as Text Options and the file path) out of view.
  • Fixed crash which would occur when using "Reveal in Project List" and the operation required automatically twisting open a folder ancestor of the file being revealed.
  • Fixed bug in which a project document closed with a hidden sidebar would reopen with the sidebar visible.
  • While entering a path in the Find Differences window for a file or directory that does not exist, trailing slashes would occasionally need to be typed twice. Once should now suffice.
  • Fixed a bug in which tracking a close widget in the sidebar would leave the widget in a "hover" state in the case that the mouse was dragged and released outside of the bounds of the sidebar.
  • Fixed incorrect description of the expert preference keys for adjusting the limits on Open Recent. (The keys begin with NSRecentDocumentsLimit_, using an underscore, rather than NSRecentDocumentsLimit: with a colon.)
  • Fixed bug in which calculations done during line-ending conversion ended up with incorrect answers in files with inconsistent line breaks.
  • Fixed bug in which object-class-specific attachment scripts (e.g. Document.scpt) were not being run when they should have.
  • Fixed a case in which the application would crash when cancelling an SFTP connection in progress.
  • Fixed a bug in which the SFTP password prompt would appear again if you clicked the "Cancel" button. (Up to three times total.)
  • Made changes to prevent a class of crashes that would occur on macOS 10.12 in cases where a password request or host key confirmation was canceled while connecting to an SFTP server.
  • Fixed a crash which would occur when a saved set of multi-file search items contained a reference to itself, or when two (or more) saved sets created a reference loop.
  • Fixed bug in which "Select All" was enabled on the Edit menu in situations where it shouldn't have been, and using it (or pressing Cmd-A) would trigger an internal exception.
  • Fixed a few memory leaks.
  • Fixed a bug in which more work than necessary was being done while building the item tree for folders in projects (insta- or otherwise).
  • Fixed bug in which instaprojects would not open up with the correct sidebar width, which was particularly noticeable when the width had been customized via "Save Default Project Window".
  • Fixed a bug in which Hard Wrap would leave the last line of a paragraph unbroken in cases where it was longer than the wrap width.
  • Made a change to reduce the CPU required during mouse tracking (such as when making text selections).
  • Updated some built-in links to our web site to use https.
  • Fixed bug in which applying a text factory from the "Apply Text Filter" submenu did nothing (which was the best outcome, given what could have happened).
  • Fixed bug in which in-process input using some input sources was highlighted using the yellow highlight when the text should have been underlined.
  • When text should be highlighted using the yellow highlight, the background color is now used when a dark color scheme is in effect, to correct readability problems.
  • To improve performance, the “Open File by Name” window will not explore node_modules directories that it encounters while computing its data sources. If you want Open File by Name results to include files in node_modules directories: defaults write com.barebones.bbedit OpenByNameSkipNodeModules -bool NO
  • Fixed bug in which certain sequences of scripted open document/close document operations would behave inconsistently when there was too little time elapsed between the open and close (or between a close and subsequent open).
  • Fixed a bug in which aliases (or symlinks) to folders were not sorted by name with other folders when "sort folders first" is in effect.
  • Made a change to improve compatibility with future macOS releases.

New in BBEdit 12.1.2 (Mar 7, 2018)

  • Additions:
  • There's a new item in the Application preferences, as part of the software update settings: "Early Access". You can use this to turn on (or off) notification of pre-release maintenance updates for the version of BBEdit that you're using. (Note that even if you turn on Early Access, you will not receive notice of pre-release versions of feature updates or major upgrades.)
  • A new setting in the "Editing" preferences allows you to control whether tick marks appear in the scroll bar for Live Search matches. Turning this off can be useful if you're working in very large files and have so many results that the application stalls while trying to update the marks.
  • Fixes:
  • Fixed case in which certain edits in PHP-in-HTML documents would cause syntax coloring to get out of sync. (There are certain cases in which this can still happen; those are being investigated.)
  • Fixed bug in which the Multi-File Search window would open with a goofed layout in cases where the default font (Editor Defaults) was set to a size with a significantly larger line height than the factory default.
  • Fixed bug in which "Push to Remote" on the Git contextual menu was mislabeled as "Push from Remote" and it was miswired to do a "Pull from Remote".
  • Fixed bug in which the commands on the Columns submenu of the Edit menu would behave unpredictably in cases where the text being processed consisted of a varying number of columns.
  • When using items from the "Columns" submenu of the Edit menu on a document that is not explicitly "Tab-separated Values" or "Comma-separated Values", BBEdit will now use strict rules for parsing quotation marks in the text, so that if the automatically guessed delimiter appears in quotation marks, it will no longer confuse the column operations.
  • Made a change to improve the theoretical performance of some large-scale operations that involved copying or copy-and-transform of text.
  • Fixed bug in which the "Save Clipping" panel did not allow you to save a new clipping in the top-level Clippings folder, and would also malfunction and crash when asked to save a clipping with no clipping sets present.
  • Fixed bug in which text-to-speech didn't use the system setting for speech rate when it should have.
  • Fixed a memory leak in the folder scanner used by the markup tools for batch operations on folders.
  • Fixed a bug (by returning to a previous broken but obscure behavior) in which using a keyboard equivalent to run a folder-backed item (script, clipping, filter) would inappropriately apply the keyboard modifiers to the command when it was invoked the first time after the menu was refreshed (which includes application startup).
  • Fixed hang which would occur while typing a key/value pair at the end of a JSON file.
  • Made a change to reduce the chance of the progress dialog appearing during SFTP server connection and thus slowing the process down.
  • When doing an interactive "Process Lines Containing", BBEdit will now beep if no matches are found. If the application is in the background when the operation completes, it will post a notification with the number of results found.
  • If somehow empty bounds get stored for a default window position, the application will now ignore them instead of trying to set the window to nonsense bounds.
  • Fixed regression in which the legacy HTML scripting verbs for tag access ("find tag" and others) stopped working.
  • Fixed crash which would occur when trying to report errors in certain conditions.
  • The Xcode integration scripts now target Xcode by its application ID, to work around scripting system misbehavior in cases where Xcode has been renamed.
  • Made some adjustments to the auto-pairing logic for quotation marks (single, double, and backtick) so that the chances of a quotation mark being automatically paired are reduced in situations where doing so would be inconvenient.
  • Fixed bug in which dragging the indicator in horizontal list scroll bars (such as search results) didn't scroll the contents of the list.
  • When downloading the User Manual PDF, BBEdit will now move previous versions of the manual to the Trash. If you need to save the manual from an old version, you can lock it using the Finder's "Get Info" window to prevent this.
  • The bbedit tool will now send "open" events to the application without a timeout value, to resolve -1712 errors when opening very large files.
  • Made some changes to further improve performance in the common case of loading an ASCII or UTF-8 file; improvements are generally around 2x and should be most noticeable on very large files.
  • Made a change to improve performance when generating information for the Functions menu.
  • Made a change to fix a "should never happen" crash which seems to occur when adding an item to the Recent Documents list.
  • Fixed a bug in which the bezel alerts (used for Wrap Around notifications and other purposes) would leak a window each time, leading to strange effects like "phantom" windows in Mission Control.
  • Fixed bug in which the Markdown tokenizer was confused by empty URL references (e.g. [](https://www.barebones.com/)) in such a way that editing in certain subsequent parts of the file would cause syntax coloring to get out of whack. This change also fixes a bug in the Markdown syntax coloring in which links with an empty description or URL were not properly recognized and colored.
  • Fixed cases in which the Markdown language module would not necessarily rescan the appropriate range of text when recomputing syntax coloring during edits in certain places. (This doesn't fix a specific bug report; but may resolve some reported issues.)
  • Made a change so that irrelevant controls are not shown in the font panel's tool bar. (This affects View -> Text Display -> Show Fonts and Preferences -> Editor Defaults.)

New in BBEdit 12.1.1 (Feb 15, 2018)

  • Fixes:
  • Fixed bug in which dragging the "Currently Open Documents" section header to resize it in a project window would change the selection in the Currently Open Documents section.
  • Fixed bug in which the highlight line for dropping items in the middle of a reorderable list (such as the Currently Open Documents list in the sidebar) didn't draw when it should have.
  • Worked around a bug which appeared when running on macOS 10.11.6 in which closing the Find or Multi-File Search window might cause the Colors palette to appear.
  • Fixed bug in which files larger than 4294967295 bytes were not read in correctly when opening, which would lead to unexpected data loss if you didn't notice, made changes, and saved.
  • Fixed some cases in which system text substitutions were not offered by the completion panel when the substitution trigger began with a word-break character. (This change doesn't fix all possible cases in which system substitutions aren't available.)
  • Fixed bug in which the foreground text color was not correctly applied when copying or dragging styled text out of a document whose language was "(none)" or one which otherwise did not support any syntax coloring. (The underlying issue may also affect completion in such documents based on words from the document itself.)
  • Fixed bug in which setting Soft Wrap to Window Width would change the character count used for Soft Wrap to "N" Characters.
  • Made a change to reduce file system activity while maintaining the "Open Recent" document history. This will not likely be noticeable in most cases, but may improve performance on very slow remote file systems.
  • Fixed exception which would occur when trying to use the "smart zoom" (two-finger double tap) gesture in an editing or project window.
  • Fixed bug in which the Esc key didn't work to dismiss the Live Search bar when keyboard focus was in the search box and Emacs meta sequences were enabled.
  • Fixed a bug in which

New in BBEdit 12.1 (Feb 6, 2018)

  • Highlights:
  • Improved dark-theme support - When using a dark color scheme, BBEdit now colors editing and project window chrome to match, for a more integrated overall appearance. (For customers used to the old behavior, this can be set in the "Appearance" preferences.) For customers who have never before used BBEdit or TextWrangler, the "BBEdit Dark" color scheme is now the factory default; this can be changed if desired in the "Text Colors" preferences.
  • Improved platform behavior - Thanks to extensive internal overhaul, BBEdit now supports intrinsic OS behaviors such as Split View (and many others).
  • Improved UI for FTP/SFTP Browsers, Text Factory, and Preview windows - many non-editing windows have been overhauled for improved appearance and behavior, and to add features.
  • New "Canonize" tool - Provides a text-based model for batch search and replace, either within a single file or (by using a Text Factory) in multiple files.
  • New "Columns" Editing Commands - Easily cut, copy, delete, or rearrange columns in delimited (CSV, TSV) text files without requiring a spreadsheet or complicated regular expressions.
  • FTP/SFTP browsers now feature an outline view for improved navigation
  • Text Factory windows now provide the ability to turn individual steps on and off
  • Preview in BBEdit windows now provide runtime introspection of previewed pages using the WebKit Inspector
  • Text Extraction - This powerful addition to BBEdit's legendary searching capabilities allows you to locate and collect search results into a single text document. Extraction can be run on the active text document, or across multiple files and folders. Use of Grep replacement patterns during extraction enables transformations to the extracted text.
  • Extensive Internal Modernization - Many internal subsystems have been rewritten or updated to support new features, improve performance, add refinement, and make future enhancements possible.
  • You can read the complete change notes at:
  • http://www.barebones.com/support/bbedit/notes-12.0.html

New in BBEdit 12.0.2 (Dec 2, 2017)

  • Additions & Changes:
  • This release contains no new features or changes.
  • Fixes:
  • In order to work around a crash in the OS (Radar 35052088), BBEdit will no longer submit recently opened items to the system-wide "Recent Items" list that appears on the Apple and Dock menus. We regret any inconvenience this may cause, and hope that it is strictly temporary.
  • Fixed bug in which menu items indicated by searching for them using the Help search box would be disabled in situations where they shouldn't have been.
  • Fixed bug in which the "Update" scripting event would return an error.
  • BBEdit now writes out temporary files for live preview windows with 644 permissions, so that other processes (such as Apache) can read the file if necessary.
  • Fixed a bug in which a request from the command line (or elsewhere) to open an sftp URL without a username (or password) would return a -50 error.
  • Fixed a memory leak in the SFTP client listing code.
  • Fixed bug in which twisting open an item in the FTP/SFTP browser would not always show its contents.
  • Fixed a collection of bugs that conspired to slow down SFTP operations, particularly the initial connection to the remote server.
  • Fixed a bug in which attempting to create a new FTP/SFTP item with the same name as one that was just deleted would report that an item with the same name already existed.
  • Fixed a bug in which the FTP/SFTP navigation popup menu would not display all of the folder names in the ancestry chain if two adjacent folder names were spelled the same. (Thanks, NSPopUpButton, you're a real big help.)
  • Fixed a regression in which "Save [a Copy] to FTP/SFTP" server didn't pick up on an active connection in cases where an FTP/SFTP browser window was open.
  • Fixed bug in which dragging the title bar icon from a window displaying a document opened via the built-in FTP/SFTP support would drag the location of its backing file, and not the remote URL.
  • Fixed bug in which the "Save [a Copy] to FTP/SFTP Server" panel didn't automatically connect to the destination server in cases where it had enough information available to do so.
  • After connecting to a server, the FTP/SFTP browser window will move keyboard focus to the listing view; and after disconnecting, it will move focus back to the "Connect" button. This will save a press or two of the Tab key.
  • Fixed bug in which disconnecting from an SFTP server would never take less than two seconds, which made processes like reopening a lot of SFTP files at application startup take much longer than they should have.
  • Made a change to SFTP I/O to improve performance and CPU efficiency when waiting for data to arrive.
  • Fixed a bug in which the SFTP client would report a successful "change working directory" operation even if the desired directory did not exist. Usually this would cause problems when deploying a site and adding directories that were not present the remote server.
  • Fixed bug in which a -1704 error would be reported when choosing a directory from the title bar menu for a document that had been opened via the built-in FTP/SFTP support.
  • BBEdit will (once again) warn about malformed UTF-8 files rather than simply refusing to open them.
  • Fixed bug in which the "Allow the Escape key to trigger text completion" preference was ignored, and the Esc key did not work to trigger completions.
  • Fixed bug in which no completion sources were allowed for plain-text languages (Text File, CSV, TSV), which was not necessarily a useful outcome.
  • Fixed layout bugs in the completion panel with certain font/size combinations.
  • Made ctl-n and ctl-p functional again in the completion panel.
  • Fixed crash which would occur when quitting the application while the completion panel was open.
  • Fixed bug in which the mouse/trackpad event that caused dismissal of the completion panel wasn't passed through to the text afterwards.
  • Fixed a bug in which the initially selected item in the completion panel wasn't scrolled into view when it should have been.
  • Fixed a bug in which invoking a clipping from the completion panel would lead to a bizarre chain of events in which the completion panel ran an AppleScript with a display dialog verb which accepted user input, and the Return or Enter key was used to accept the input in the dialog. The result was that the script would run again, lather rinse repeat.
  • Fixed a bug in which completions for predefined selectors provided by the CSS/SCSS module would be out of order, leading to unexpected behavior in the completion panel.
  • Fixed a bug in which the first completion suggested by a document's language would be selected in the list, even if other completions were before it (such as clippings).
  • Rewrote ancestor discovery code (used for finding .git, .svn, and such like) to improve performance as well as behavior when used for files that aren't on the boot volume.
  • Fixed crash which could occur when certain changes were made in the Font panel while adjusting a font preference.
  • Fixed bug in which the "New Text Window" and "All Running Browsers" commands were left out of the "Preview In" submenu on the Markup menu.
  • Fixed bug in which the window resulting from a Preview/New Text Window operation didn't have the desired title.
  • Fixed bug in which certain errors reported during attempts to automatically back a file up were not reported correctly.
  • Fixed bug in which contextual-menu commands in the Currently Open Documents list of a project sidebar would be targeted to the Project list instead.
  • Made a change to the "Rearrange Columns" panel so that it can be expanded horizontally to accommodate long column header names.
  • Fixed a bug in which preview temp files generated for live previews didn't have the appropriate extended attributes which allowed them to be excluded from various site operations.
  • Fixed crash when trying to remove customized settings for a specific language (in the Languages settings).
  • Fixed bug in which window activation changes were mismanaged by the application. Although there weren't any reported bugs attributable to this, it was wrong and needed to be fixed.
  • Fixed bug in which zooming (option-click on the green button, or keyboard equivalent for the Zoom command) a window would not maximize it to the correct height.
  • Fixed bug in which folder aliases/symlinks in disk browsers weren't correctly followed when double-clicked.
  • Fixed a bug in which the non-focused pane in a split text view would drift when lines were added or removed while editing.
  • Keyboard events that arrive during mouse tracking are now reposted when the mouse tracking is completed, rather than being ignored and beeping.
  • The "handle" used for view splitters in some situations is now tinted using the prevailing color, rather than being drawn black.
  • Fixed crash which would occur when switching an existing Text Factory action to a one that required certain parameters to be present.
  • Fixed bug in which "Bring All to Front" didn't.
  • Fixed a bug in which typing was visibly slow while editing documents in languages implemented by codeless language modules (although the language module was itself not the source of the problem).
  • The factory default for showing Git ignored files in disk browsers and project folders has been changed, so that such items are now visible. The "Git Ignored Files" item in the filter menu (magnifying glass in the sidebar) can be used to adjust this setting.
  • Fixed a latent bug that could have caused a crash when dragging text into the Find or Multi-File Search text boxes.
  • Corrected behavior when attempting to initiate dragging from a background window; the drag now starts correctly rather than activating the window (and potentially obscuring the destination).
  • Fixed bug in which multi-file search/replace results windows would leak a small amount of memory after use.
  • Fixed bug in which Differences windows would leak a small amount of memory after use.
  • Fixed bug in which clicking in the "scroll" area of a horizontal text view scrollbar would fail to scroll in the appropriate direction.
  • Fixed a singleton memory leak.
  • Made a change to work around an OS application framework behavior which would sometimes cause Apple Events to be dispatched incorrectly, which in turn could lead to unpredictable and undesired behavior during various operations.
  • Fixed incorrect baseline layout of printed page headers when using certain fonts.
  • Fixed a bug in which quitting the application while it was hidden (by using Log Out, Restart, Shut Down, or the Quit menu on the dock icon) would fail to save its internal state. This would result in data loss in cases where the state included unsaved documents that hadn't recently been autosaved.
  • Fixed a memory leak when putting attributed text on the pasteboard.
  • Made a change to prevent a crash when closing the Clippings and/or Insert Clipping panel while running on 10.11.6.
  • Fixed bug in which files which were explicitly added to a project (vs being within a folder that had been added to the project) were not filtered correctly during multi-file search operations.
  • Please note that if you use the Multi-File Search window to specify individual files, and you are using a file filter, the files you specify must match the filter or they will not be searched.
  • Fixed a bug in the PHP function scanner/fold generator in which it didn't properly handle certain kinds of brace/paren/bracket nesting, and so wouldn't correctly generate folds for arrays in certain files.
  • Symlinks/aliases are now allowed for items in the Preview Filters and Preview CSS application support folders, which makes it easier to work with (for example) preinstalled Markdown tools and style sheets in existing project directories.
  • Restored heading level indicators for entries in the function menu for Markdown documents.
  • Fixed a memory leak which would occur when closing the Find or Multi-File Search windows.
  • Windows are once again listed on the application's Dock menu. Windows containing multiple documents will have those documents displayed in a sub menu for the window's item.
  • Fixed bug which caused the tick marks used in vertical scroll bars to be drawn in an inverted coordinate system (and thus in the wrong place in the scrollbar track) on macOS 10.11 and 10.13.
  • Made a change to the startup progress mechanics so that the progress panel doesn't appear unless the application takes more than a couple of seconds to restore its saved state. The application is also a better citizen during state restoration.
  • Added search keywords to the Editing preferences for the pinch-to-zoom control.
  • Made a change to display the name of each remote file that is being reopened at startup, rather than its entire URL (which usually got truncated).
  • The "Unix Shell Script" color scanner is now better about heredocs which begin with a "-" after the "

New in BBEdit 12.0.1 (Oct 21, 2017)

  • Additions & Changes:
  • This release contains no new features or changes.
  • Fixes:
  • Fixed the probable cause of a crash that was reported while running on 10.13.
  • Fixed a typo in the About box credits.
  • Fixed a crash which could sporadically occur when closing a Differences window after a compare operation that involved creating one or more temporary files (such as "Compare Revisions").
  • Multi-file search and text factory file filtering will now check a file's name first, to see whether it maps to a known language (in the Languages settings). If so it's assumed to be a text file without any further testing. This allows searching of text files whose filename extensions would otherwise map them to non-text file types, such as SVG.
  • .svg is now added as a factory default mapping to XML.
  • Fixed a case in which accessing the selection property of the application via AppleScript would not work if the application was in the background (and possibly on other occasions).
  • Fixed bug in which attempting to open a file from an FTP (not SFTP) server would report a -43 error.
  • Fixed a bug in which a couple of the options on the "Heading" HTML palette button menu would insert the wrong heading level.
  • Fixed a bug in which keyboard focus in the Markup Builder panel was not placed in the first attribute value in situations when it should have been.
  • Fixed bug in which setting the display font in language-specific preferences wasn't possible.
  • The FullScreenWindowsHogScreen and FullScreenWidthThreshold expert preferences have been restored to working order.
  • Fixed a bug in which changing a color in the Text Colors preferences after changing another color which caused a switch away from the selected color scheme would cause unrelated colors (including the one changed previously) to return to factory defaults.
  • Put in a change to guard against spurious "preference changed" notifications which have been observed on macOS 10.13.
  • Made a change so that if Git support is turned off (by turning off the Git menu) or if the Git branch status navigation bar item is turned off (in the Appearance preferences), we won't spend any time checking the SCM status of the active document in order to determine whether the Git branch status should be visible.
  • Fixed bug in which commands from the Markers navigation bar menu were executed twice, which in some cases was noticeable and undesirable.
  • Fixed bug in which existing keyboard equivalents for external items (clippings, scripts, etc) were not loaded. (The settings were still there, just not used.)
  • Made a change to the bbedit command-line tool to work around a bug in the OS (34995106) which causes unwanted logging output to the Terminal window in cases where the application starts as a result of using the tool.
  • Fixed a bug in which switched-off actions in a Text Factory were executed anyway.
  • Fixed bug in which percent-escaped characters in txmt: URLs were not decoded when they should have been.
  • Made a change so that startup items and system framework enumeration no longer query git-ignore, which improves performance and may work around a crash in the OS.
  • Fixed bug in which items within Zip archives were not filtered correctly during multi-file search/text factory processing, and so would be searched and/or processed in spite of a filter that would have excluded them. (Note that not all types of filtering are possible on items in Zip archives, but name-based filtering ought to work, and now does.)
  • Fixed a bug in which image drawing was not always aligned correctly to pixel boundaries, which would occasionally lead to fuzzy icon rendering, particularly on non-Retina displays.
  • Made a change to improve stability in situations that involve determining whether a given file location is within a Git or Subversion working copy.
  • Fixed bug in which BBEdit was supposed to studiously ignore /usr/bin/ctags, but in default OS installs it did not. The end result was that the system would prompt the user to install ctags at odd times, typically during automatic completion.
  • Fixed a case in which BBEdit would make an unwanted untitled document when starting the application up, even though there were already documents (about to be) opened, so that it would be unnecessary.
  • Fixed a class of bugs in which the application could crash after closing the Preferences window when running on macOS 10.11.
  • Made a change to significantly improve performance when multi-file searching inside of Zip archives with a file filter in use.
  • Changed the default keyboard focus in "save changes before closing" panels from "Save" to "Cancel", so that an inadvertent press of the Space bar doesn't perform a potentially unwanted save when Full Keyboard Access is turned on. (Command-D and Command-Delete[backspace] are functional for "Don't Save".)

New in BBEdit 12.0 (Oct 12, 2017)

  • Additions:
  • There's a new preference pane: "Completion". This contains the settings for text completion that used to be in the Editing preferences, and adds a setting for automatic insertion of delimiters (parens, brackets, single and double quotes, as well as any language-specific elements).
  • The setting "Surround selected text when typing matching delimiters" allows you to control whether typing an opening delimiter will surround the selection range. This is independent from whether delimiters are auto-paired when typing an opening delimiter with no text selected.
  • There is a new command on the Edit menu: "Paste Using Filter". Under this item are text filters from your "Text Filters" application support folder. Choosing a filter will process the text on the Clipboard through the selected filter before inserting it in your document.
  • You can paste using the most recently used filter using the appropriate command on the "Paste" submenu of the Edit menu. This latter command can also have a keyboard equivalent for quicker access.
  • When performing an Extract operation, you can now use a Grep replacement pattern in the "Replace" field (in Find or Multi-File Search) to transform the extraction results. Performing extraction with Grep substitutions will allow many extraction operations to be completed in just a single step, rather than requiring more than one Replace All operation.
  • The Printing preferences get a new setting to control whether documents should always be wrapped to the printed page.
  • There's a new submenu on the Edit menu, "Columns". This submenu contains commands to help you work more easily with column-delimited text files.
  • The three basic commands, "Cut Columns", "Copy Columns", and "Clear Columns" work similarly to their top-level analogues.
  • The columns to be cut/copy/cleared are determined by the selection range: to cut a single column, for example, click in the middle of it. You can cut/copy/clear multiple columns by selecting text across them.
  • The "Rearrange Columns" command gives you an easy way to, well, rearrange the columns in a column-delimited text document. Choose the menu command, and then drag the items into the list to order them as you would like, then press the "Apply" button.
  • There is a new section in the Setup window: "Folders". This section lists the available folders in the BBEdit application support folder. Double-clicking on a folder, or clicking the arrow next to a folder, will select that folder in the Finder (creating it first, if necessary).
  • This addition makes it easier to get at application support folders in general, since the Library folder is hidden by default from the user.
  • There is a new setting in the Keyboard preferences: "Enable macOS “Help” key". This is off by default, so that pressing the "Insert" key which is present on some PC-style keyboards doesn't open the in-application help. (This frequently happens accidentally.)
  • Added an "Expert" preferences pane, which provides direction to the Expert Preferences help book. The "Restore Defaults" button in this pane will reset all expert preferences to their factory defaults.
  • There's a new command on the Text menu: "Canonize". This command is useful for doing batch search-and-replace operations in a file, using another file as a list of search-and-replace transformations.
  • The transformation file is itself a list of replacements, one per line. The search string is separated from the replace string by a tab, so if you want your searches or replacements to contain tabs, you use the "t" escape sequence. Blank lines are allowed.
  • Transformation files may be commented: everything after a "#" is ignored, so if you want to use search or replace strings that contain a "#", you must escape it: "#".
  • There is one case in which a line may contain only a single string, and that is when you wish to case-insensitively normalize the spelling of all occurrences of a word.
  • When using the Canonize command, you can specify whether the searching is to be case-sensitive or not; and whether the searches should match on word boundaries, or not. (These behave identically to the "Case Sensitive" and "Match Words" options in BBEdit's "Find" window.)
  • Note that even when you have specified "Case Sensitive", a single word on a line by itself will perform a case-insensitive search, since its function is to normalize all occurrences of the word to the same capitalization.
  • The Live Search command now supports grep pattern matching when the "Grep" option is enabled, and stored patterns are available under the "Saved patterns" ("g") popup. If the entered pattern is invalid, BBEdit will display an alert icon which you can click to see the error.
  • When a remote (FTP/SFTP) document is open, "Reload from Disk" on the File menu will become "Reload from Server"; choosing this command will fetch a fresh copy of the document data from the server, and then refresh the document's contents.
  • "Preview in BBEdit" windows get a "Show Inspector" toolbar button, which displays the WebKit inspector pane for code introspection.
  • The --new-window option for the bbedit tool can now be applied when opening directories: it will stop the application from checking to see whether you've already opened that directory, and thus allow you to open the same directory in multiple windows.
  • The navigation bar now contains an item indicating the current Git branch (for documents that are in a Git working copy).
  • Split View (on OS X 10.11 and later) is now functional.
  • Dragging items from an FTP/SFTP browser to the trash is now equivalent to selecting them and clicking the "Delete" button.
  • You can now drag local files and folders onto an FTP/SFTP browser window to upload them.
  • Changes:
  • "Consolas for BBEdit" is no longer the factory default font setting, nor is the font included in the application package. If you have installed Microsoft Consolas by other means (it is available from Monotype), BBEdit will use it as the default font; otherwise it will default to an appropriate choice. (Menlo is the choice of last resort.)
  • Items in the function menu are now badged according to their type.
  • Removed the "Unicode" option for the Change Line Endings text factory action.
  • Unboxed the settings in the "Text Files" preferences.
  • There are enough "Paste" items that there is now a submenu for them, and "Paste & Match Indentation" and "Paste Column" have been moved there.
  • "Sort Lines" normally collates lines using Unicode collation order, which is fine as long as you don't expect case sensitivity to take precedence and return meaningful results. If you would prefer to sort lines using strict character code order, you may do so by turning on "Case sensitive" and turning off "Numbers match by value".
  • When locating Unix tools for various purposes, BBEdit will now honor your PATH environment variable, if it is available and not empty. This should result in more predictable outcomes when using aftermarket installations of open-source tools as well as for alternative installations of tools included with the system (such as Python).
  • Note that if your PATH contains entries relative to the current working directory, those entries are not likely to work, since $PWD has underfined meaning for a GUI application. Absolute paths will work, though. If you change your PATH, you will need to quit and relaunch BBEdit for the changes to take effect.
  • The "Save [a Copy] to FTP/SFTP Server" panel has been rewritten. For bonus points it now runs window-modal instead of application-modal.
  • The FTP/SFTP browser window has been rewritten. There are some slight layout changes, but the chief improvement is that folders can now be twisted open to reveal their contents.
  • Differences windows, live preview windows, and FTP browser windows now use the system-provided "refresh" icon image, rather than the old circular green arrow.
  • Added explicit built-in languages for Tab-Separated Values and Comma-Separated Values. Their default extension mappings are (respectively) .tsv and .csv.
  • When using a dark color scheme, the various window adornments are adjusted so that they blend better with the editing view. This also affects windows which are not necessarily editing windows.
  • When starting the application up with no existing preference settings (and none were migrated from TextWrangler), BBEdit will now set the "BBEdit Dark" color scheme as the factory default. If you prefer a different scheme, you can choose it in the "Text Colors" preferences.
  • Operations in Text Factory windows now include a check box for turning the operation on and off.
  • Comparisons done by means other than through the Find Differences dialog will use the last settings specified in the dialog, rather than falling back to factory defaults. This includes the "Compare" contextual menu item, "Compare Against Previous Version", "Compare Against Disk File", and various forms of SCM revision comparison.
  • When performing an Undo or Redo and the selection range has been changed, the undo/redo operation will select the text that was affected, rather than updating the Undo/Redo state to include the actual current selection range. If you preferred the old behavior (as implemented from the beginning of time up through BBEdit 11.6), it is available by setting the expert preference LegacyUndoSelectionBehavior to YES.
  • The legacy preference data location of ~/Library/Preferences/com.barebones.bbedit.PreferenceData/ is no longer supported. If you are upgrading from an ancient version of BBEdit, you can copy and rename this folder to ~/Library/BBEdit/.
  • Use a star instead of an up-arrow to indicate menu command items that are available after the evaluation period only with a paid license.
  • If a Dropbox configuration file is available, BBEdit will try to use it to locate your Dropbox folder (for application support items).
  • Changed the factory default setting for Editor_SoftWrapLengthThreshold to 48MB (up from 5MB).
  • Plug-in language modules now have an opportunity to influence auto-pair generation while typing. This is done with the kBBLMAutoPairMessage, which modules can implement by examining the parameters in the fAutoPairParams member of the parameter block.
  • The "Go to Named Symbol" sheet now uses the font of the editing view as its list display font.
  • Made some improvements to the resolution logic when choosing items off the Includes menu for C-family languages. If /usr/include doesn't exist, BBEdit will now look inside usr/include relative to the newest available Xcode SDK (if Xcode is installed). Additional effort is made to resolve file-relative references to included files.
  • The Emacs mode line parser no longer generates nor pays attention to properties that can no longer be set on a per-document basis (such as status/navigation bar visibility and other aspects of the window chrome).
  • In cases where a language module does not generate its own number coloring, BBEdit will now color decimal (integer) numbers using the appropriate color from the active color scheme.
  • The line number bar in editing views will now always use the editor font. The UseEditorFontForLineBar expert preference is no longer supported. The maximum size used is limited in order to work around layout issues which arise when trying to resize the editor font for use in the space allowed.
  • During multi-file search/replace operations, the "Searching" progress name will reflect the name of the folder being scanned, unless a file is actually being searched. This improves progress feedback when searching very large folders with relatively few candidate files (as when using a file filter).
  • Made a change so that the line number text is never drawn in a text size larger than the editing view's display font.
  • Adjusted the weight and spacing of the font used for drawing the line number bar.
  • Updated the internal PCRE support to version 8.41.
  • Improved the presentation of Xcode projects and saved Spotlight searches (Finder smart folders) in the Multi-File Search window by removing their filename extensions.
  • The C/C++/Objective-C/ObjC++ function scanner now generates additional information for the function menu.
  • The built-in Markdown language module now uses cmark to convert Markdown to HTML. This improves support for previewing and exporting Markdown code which goes beyond the original Markdown specification and behavior.
  • cmark is included under the terms of the 2-clause BSD license, as follows:
  • Copyright (c) 2014, John MacFarlane
  • All rights reserved.
  • Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:
  • * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHTOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USEOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Made changes to the HTML/XML function scanner so that it generates a prettier function menu.
  • The "Go to Named Symbol" panel will display badges consistent with what the function menu shows, where possible.
  • Added keyboard equivalent defaults for Jump Points/Next and Jump Points/Previous.
  • The alert for "Clear Undo State" is now window-modal instead of application-modal.
  • Fixes:
  • Fixed bug in which the color used for highlighting selected items in lists wouldn't always track changes to the highlight color setting in the General system preferences.
  • Fixed bug in which changing the "Document navigation" setting in the Appearance preferences didn't take effect until you created a new window or restarted the application.
  • Made a change to our persistent-file-reference mechanics so that project documents and their associated files may be duplicated and relocated more readily.
  • Fixed a bug in which key equivalents in Cocoa modal dialogs did not get a chance to operate when they overlapped with the keyboard equivalents for enabled menu commands.
  • Fixed bug in which saving a non-HTML/XML document which contained an HTML character set declaration would inappropriately warn in cases where the declaration didn't match the document's current encoding.
  • All of the application's modal dialog boxes have been rewritten to modernize their internals and eliminate legacy API usage.
  • When using "Copy as Styled {Text,HTML}", the background color is only specified if it is a "dark" color.
  • Updated the "Read Me.txt" file that is written into Application Support/BBEdit, and fixed a bug which prevented it from automatically being updated when necessary.
  • Custom Keywords and Packages folders are now created by default when setting up a new Application Support/BBEdit folder.
  • Fixed a bug in which the C/etc function scanner was confused by the presence of __attribute__ directives appearing before the function name.
  • Fixed a rare crash in the HTML function scanner which would occur on certain very short (3 characters or less) documents.
  • Made a change to the HTML/XML function scanner so that it abandons function generation when it looks as though it's generating runaway results (which can happen in very large automatically generated files which have an ID on practically everything).
  • The "Save" item on the Grep Patterns menu (used in the Find and Multi-File Search windows) is now disabled if the "Search For" field is empty.
  • Made changes so that some windows and modal dialogs show focus rings for controls in situations where they didn't previously. This improves the experience of using "Full Keyboard Navigation".
  • Entity conversion in "Convert Text to HTML" now works correctly with UTF-16 surrogate pairs (such as emoji).
  • The entity-to-text conversion done by "Translate HTML to Text" now generates the correct output with entity values outside of 16-bit range.
  • Made a change to improve performance when using "Ignore" or "Learn" (spelling), in documents with a very large number of highlighted spelling errors. (The same fix also addresses incorrect updating of the highlighted ranges when repeating a spell check after having learned or ignored words.)
  • The "Text File" language now "supports" text completion, which means that dictionary words, clippings, and words in the file are now available for such files.
  • Made a change so that dragging a package (bundle, application, etc) on to BBEdit will open an instaproject, just as with dragging a folder.
  • The TeX language module now allows completions from the system dictionary in more situations than it did before.
  • Fixed bug in which a -50 error would occur when comparing untitled documents whose names contained certain URL-unsafe characters (such as might occur when generating output from a Grep extraction).
  • The Open File by Name window now ignores relative-path specifiers ("./" and "../") that occur at the beginning of the search string, which increases the chances of a successful search.
  • Fixed bug in which the Zip archive reader would leak memory, which posed a problem when processing a large quantity of Zip archives (during multi-file search or text factory application).
  • The "Clear History" command on the Open Recent menu will now ask the OS to clear its own history as well, which should in turn remove recent items from the application's Dock menu.
  • Made a change to improve performance when loading UTF-8 files.
  • Text views now respond to "pinch-to-zoom" in order to change magnification. This can be controlled using the "Allow pinch-to-zoom to change magnification" setting in the Editing preferences.
  • The "Go To Line" popover (which appears when you click on the cursor position display) is now an actual system popover, so it looks and behaves much better than before.
  • Fixed a small memory leak.
  • The Text Options and File Info panels are now implemented using system popovers, for improved behavior and appearance.
  • The Edit Markup panel has been rewritten as a system popover. Appearance and behavior are improved overall.
  • Fixed selection flashing which would occur when doing a multi-file Replace All or text factory operation that affected open documents.
  • The "Open File by Name" window no longer reopens itself at application startup, which in some cases will improve startup time a bit if the window was left open the last time the application was quit.
  • Made a change so that preview helper discovery no longer happens on the main thread, which should improve application startup time in cases where such discovery might take a long time.
  • Fixed a bug in which the sidebar in disk browsers didn't highlight correctly to indicate the ability to receive a dragged file.
  • The source picker sheet (used by the "Choose" button in text factory windows) once again allows you to drop files and folders onto it to add them.
  • Reworked the on-disk storage of "Saved Search Sets" as created by the "Save Set" button in the Multi-File Search window. The backing data file is now stored in the "Setup" subfolder of the BBEdit application support folder, so that it can be shared using Dropbox or iCloud Drive.
  • Improved the behavior of Saved Search Sets in the Multi-File Search window: when you select one, its selection is remembered across invocations of the window, rather than being "exploded" into its component items.
  • Fixed bug in which changes in an untitled document's text were not immediately reflected in the document's entry on the Window menu.
  • Made a change so that the lines for tab stops (when "Show Tab Stops" is turned on) are drawn more efficiently when circumstances allow.
  • Fixed bug in which using the Escape key to dismiss the Find or Multi-File Search windows didn't work when the CAPS LOCK KEY WAS DOWN AND "EMULATE EMACS KEY BINDINGS" WAS TURNED ON IN THE KEYBOARD PREFERENCES.
  • Made a change to reduce the transient memory requirement for building the Open File By Name directory cache from a truly huge data source (such as $HOME). This will help reduce the incidence of crashes resulting from running out of address space while building the cache.
  • Fixed bug in which Search Results windows didn't show up as eligible sources in the Multi-File Search window.
  • Fixed crash which would occur when closing a Differences window while it was in the middle of computing and preparing the selected difference for display.
  • The redundant "Save" button has been removed from the Text Factory window.
  • Fixed a crash which would occur on 10.11 when certain windows were left open at the time the application was quit.
  • Fixed proximate cause of a crash while updating the Shell Worksheet status bar item.
  • Keyboard focus is now on the name field when creating an item in the FTP/SFTP browser window.
  • Fixed a performance problem which would appear when drawing lots of tab stops in an editing view, which in turn typically occurred when the tab stops were very narrow and/or the editing view was extremely wide.
  • Made some fixes to the progress-dialog mechanics, so that starting a progress operation in the background (such as from a script or terminal command) no longer starts a chain of events that ends up making the Dock and application switcher unresponsive (Radar 33462091).
  • Made a change to the "Reveal in Finder" mechanics so that Pathfinder isn't used unconditionally just because it's running.
  • Made various improvements to how projects and multi-document windows keep track of files in the sidebar. Situations in which files are moved or deleted should generally be handled more gracefully than before.
  • Fixed crash which would occur when language modules passed out-of-bounds values to bblmAddTokenToBuffer(). This callback will now return paramErr to the module if asked to add a token larger then 2K bytes.
  • Git "Check Out Branch" is now available for disk browsers and instaprojects if the directory you're viewing is a Git repository (or in one).
  • Fixed a bug in which knowledge of the selected document in a multi-document window wasn't saved correctly when quitting nor applied correctly when restoring state.
  • Fixed bug in which the insertion point and subsequent output in shell worksheets would not be scrolled into view when the command line being executed was on the very last visible line of the document.
  • Fixed bug in which application state (but not auto-save data) was lost when quitting with running multi-file search or text factory windows open. (The application will still require an extra Quit command in this case, but you won't lose open window state or positions.)
  • Fixed bug in which CSS margin and padding values were placed into the wrong dialog field in some situations, leading to inappropriate changes to the CSS.
  • Fixed bug in which internally generated readtags output from files containing non-MacRoman text (such as HTML files) would appear strangely when the parsed output was used (such as in the "Go To Named Symbol" panel).
  • Fixed bug in which the "Go to Named Symbol" panel would fail to display qualifying function entries in HTML (and potentially other) documents.
  • Fixed crash caused by missing resource for the Perforce "Show Revision History" panel.
  • Modernized the Dock progress bar implementation.
  • Increased the maximum height of the Windows palette so that it can be fully extended when on very tall displays (such as a 16x9 display stood on the short edge).
  • Improved the duplicate detection in the "Go to Named Symbol" panel so that items on the same line but with different names aren't considered duplicates.
  • Fixed bug in the C-family function scanner in which callout comments following function prototypes would be duplicated in some situations.
  • Added __SUB__ to the built-in Perl keyword list.
  • Fixed bug in Perl syntax coloring in which whitespace between the = and the name of a POD comment were interpreted as a valid POD comment.
  • Modernized some code in the bbfind tool.
  • Fixed the beep when opening an instaproject after having previously used "Save Default Project Window" with the editor view hidden.
  • Made a change to sort file names containing ctags definitions in a more reasonable order.
  • Status and navigation bar items now update as necessary when the system-wide language changes while the application is running.
  • Fixed bug in which Microsoft Visual C++ __declspec qualifiers would confuse the function scanner.
  • Added __declspec to the list of keywords for C and C++.
  • Fix hanging bug in YAML module when it found invalid syntax after a "|" block literal indicator, such as "|--"
  • Fixed bug in which git-ignore filtering in the Open File by Name window didn't work in cases where the data source was a BBEdit project that was not itself in a Git repository.
  • Fixed bug in which git-ignore file filtering in projects wouldn't work correctly when the project was not in the same git repository as the folders being processed (or wasn't in a git repo at all).
  • Fixed bug in which various parts of the UI which depended on folder listings (scripts/filters/clippings, counterparts, and such like) would list items out of order on APFS volumes and other non-HFS file systems (in which directory enumeration order was not necessary sorted by name).
  • Made a change so that any errors that occur while right-clicking on sidebar items in a project window are not reported. This allows actions such as right-clicking on a missing SFTP item to pop up the contextual menu (so that you can remove it) without an alert interfering.
  • Updated some of the document icon artwork for improved appearance on retina displays.
  • Removed retain from the Objective-C/C++ keyword list.
  • Up/down arrow movement in the completion popover will now wrap around from end to beginning (for down arrow) or beginning to end (for up arrow).

New in BBEdit 11.6.8 (Sep 13, 2017)

  • Fixes:
  • Fixed a bug in which the application would incorrectly warn you about modification date changes when saving changes to existing documents on APFS volumes while running on macOS High Sierra (10.13).
  • Fixed bug in which using the "Capitalize Lines" change case operation would behave strangely on lines that did not begin with a word character.
  • Fixed bug in which the default browser preview command on the Markup menu wasn't correctly populated and enabled until a browser had been chosen from the "Preview In" submenu.
  • Fixed bug in which clicking on a file-relative link in a live preview window would attempt to open the URL in the browser using the internal custom URL scheme, which would always fail.
  • Fixed a bug in the YAML language module relating to the the detection, syntax coloring, and folding of Block Scalars (prefixed with a vertical pipe) where the block starts with a blank line.

New in BBEdit 11.6.7 (Jun 15, 2017)

  • Additions & Changes:
  • This release contains no new features or changes.
  • Fixes:
  • Fixed a bug in which clicking the "OK" button in the "Text Options" dialog box would fail to accept any changes in the character width for Soft Wrap Text.
  • Added read and until to the Unix Shell Script keyword list.
  • Fixed a bug in which the Perl syntax coloring scanner would get confused by backslash references appearing before the opening quote of a string.
  • Fixed crash which would occur when closing a multi-file Differences results window after having viewed a number of differing file pairs.
  • Fixed a crash which would occur when rapidly switching between files in a multi-file Differences window, and the first difference was a "nonmatching lines" difference which required more than a trivial amount of time to compute.
  • Added @available and __builtin_available to the C-family language keyword lists.
  • Added nonnull and returns_nonnull to the C-family language keyword lists.
  • When running on 10.13, the application no longer attempts to use the built-in "Consolas for BBEdit" font, because the OS won't load it and instead defaults to some proportional monstrosity. (If you are finding that this happens anyway, go to the "Editor Defaults" preferences and use the "Restore Defaults" button.) Note: Please see our OS compatibility guide for important information about using BBEdit on pre-release versions of macOS 10.13.
  • Fixed a bug in which clicking on a link with a fragment in it (e.g. https://en.wikipedia.org/wiki/BBEdit#Features) in a live preview window would lose the fragment when asking the default browser to open the link.
  • Made a fix so that braces preceded immediately by backslashes (within the body of a function) no longer confuse the Perl function scanner.

New in BBEdit 11.6.6 (May 23, 2017)

  • Additions & Changes:
  • This release contains no new features or changes.
  • Fixes:
  • Multi-line PHP arrays now get fold indicators when appropriate.
  • PHP function return type hints will no longer confuse the function scanner.
  • Fixed a bug in which errors returned by the Unix script invoked from a "Run Unix Script" text factory action (whew) would usually crash the application.
  • Worked around a crash which would occur when starting up after an OS update or reinstall damaged certain system-wide components.
  • Fixed bug in which the desired default formatting for video tags was not applied by the "Pretty Print" formatting option.
  • Made a change to work around an OS performance problem that would slow application startup in some situations.
  • Fixed a bug in which the "Open File in BBEdit" service would inappropriately refuse to do so.
  • Made a change so that Live Search usage and "Find Next Occurrence of " no longer alter the "Case sensitive" or "Entire word" settings in the Find window.
  • Made a change to improve error reporting in cases where a codeless language module is structurally malformed in a way that prevents it from loading (i.e. a plist with a syntax error).
  • When a managed license is in use, the "License" menu command is now hidden.
  • Fixed bug in which "Open Counterpart" wouldn't correctly switch between multiple eligible files in some situations.
  • PHP superglobal names are now colored using the "predefined symbols" color.
  • Fixed a crash which would occur when closing a document that was being used solely by a Differences window. (This would usually happen when the document was open separately in the front window, and then "Close All Documents" was done.)

New in BBEdit 11.6.5 (Mar 30, 2017)

  • Additions:
  • The "Menus & Shortcuts" preferences pane has two new buttons. "Simple Menus" will simplify the menu structure by hiding the "advanced" menu commands (the ones that go along with a full BBEdit license and which are also available during the evaluation period). The result is a menu structure that is very similar to TextWrangler's.
  • The "Full Menus" button undoes the work of Simple Menus, by making all menus and commands visible (even ones that might have previously been manually hidden).
  • Both operations leave your keyboard equivalents intact.
  • The "Restore Defaults" button, as before, will reset all keyboard equivalents to factory defaults, and will make all menus and items visible.
  • Changes:
  • Made some wording adjustments to the evaluation dialog box.
  • Fixes:
  • Fixed a bug in which BBEdit-specific menu commands were not properly converted when upgrading from a TextWrangler setup.
  • Added an entry for the "Collapse Folds Below Level" submenu head, so that it may be hidden using the Menus & Shortcuts preferences, if desired.
  • Fixed a bug in which the horizontal scrollbar would get miscalibrated after making edits in files of a certain structure (involving very long lines).
  • Fixed bug in which invisible text files (e.g. .htaccess) were not included when performing a directory comparison.
  • Fixed a bug in the Perl scanner in which it would occasionally scan past the end of the text (which might or might not cause a crash, depending on the longitudinal orientation of the computer and the phase of its internal clock).
  • Fixed a small memory leak.
  • Fixed the suspected cause of a crash that would occur when closing a document while a "Live Search" operation was in progress.
  • The value type for input elements in HTML5 is actually CDATA, so the syntax checker will no longer report errors for input name values which are otherwise properly formed.
  • Fixed a crash which would occur when a multi-file search file filter needed to load a file's text for a "file contents" filter term, but loading the text failed for any reason.
  • Fixed a problem in which BBEdit couldn't install its privileged helper tool (used for supporting authenticated saves and command-line tool installation) on some systems.
  • Fixed selection flashing which would occur when doing a multi-file Replace All or text factory operation that affected open documents.
  • Fixed a bug in which the C/etc function scanner was confused by the presence of __attribute__ directives appearing before the function name.
  • Fixed a bug in which text in rectangular selections was not passed correctly to Services.
  • Fixed a bug in which Grep case transformations during replacement (U, L, and their associates) didn't work correctly for non-ASCII characters.

New in BBEdit 11.6.4 (Feb 25, 2017)

  • Additions:
  • This release contains no new features or changes.
  • Fixes:
  • Fixed case in which a "this input will give your worksheet heartburn" error was reported for input which would not actually cause any problems.
  • Restored the "search string" scripting property of the Open File by Name window to working order.
  • Fixed crash which would occur when (or after) closing a Differences window.
  • Fixed a bug in which some editor settings were not properly applied when opening an existing document.
  • Restored case transformations in Grep replace patterns to working order, by backing out the previous fix (which caused more problems than it solved, as it turns out).
  • Fixed bug in which explicit EditorConfig keys for trim_trailing_whitespace and insert_final_newline did not override the global or language-specific user preferences.
  • Fixed bug in which the Text Options navigation bar item would operate on the wrong text view in Differences windows, unless you clicked in the desired view before using it.
  • Fixed the cause of a rare crash at startup.
  • Fixed a bug in which differences in the last line of two compared files would be ignored when "Ignore Blank Lines" was turned on and the final line in either file did not end with a line break.
  • Added "ts" as a default extension mapping for the JavaScript language module, so that Microsoft TypeScript files are recognized as text documents.
  • Updated the copyright year.
  • Made a change to quiet a (harmless) system console message at startup.
  • Fixed crash which would occur occasionally when performing operations which rapidly switched between different documents in the same window (such as navigating through a lot of different files in a search results window).
  • Fixed bug in which the Zip archive reader would leak memory, which posed a problem when processing a large quantity of Zip archives (during multi-file search or text factory application).
  • The "Clear History" command on the Open Recent menu will now ask the OS to clear its own history as well, which should in turn remove recent items from the application's Dock menu.
  • Fixed a bug in which processing very large files with a text factory would cause the application to run out of memory in cases where one or more of the operations took a very long time.

New in BBEdit 11.6.3 (Dec 13, 2016)

  • Changes:
  • In project views, you can now resize the Currently Open Documents section by dragging the section header. (A single click will still expand/collapse it.) This provides improved usability over the previous state of affairs.
  • Fixes:
  • Fixed a bug in which URL-unsafe characters in a document's location would light a fuse that resulted in drawing glitches while reshaping the document's window, and an eventual crash when closing the document or quitting the application.
  • Fixed bug in which case transformations in Grep replacement patterns (U, L, and so forth) would not perform the correct transformations on non-ASCII characters.
  • Fixed bug in which contextual menu commands were not shown for sidebar items after the end of the evaluation period.
  • Content in PHP in HTML documents can once again be spell-checked.
  • Fixed a bug in which single clicks would occasionally (and unintentionally) act as though a drag were being started.
  • Fixed bug in which the path popup in the navigation bar didn't resize correctly when saving an untitled document or moving an existing document to a new location.
  • Made a change so that the Live Search box text field is only created if needed, rather than when the window is made. This resolves a delay at startup that occurs in certain pathological environments due to a performance bug in the OS.
  • Made a change to Open File by Name searching so that exact matches for the entered file name are always included, even in very large search spaces, rather than being lost due to restrictions on the maximum number of search results.
  • Fixed bug in which partial paths with trailing slashes entered into the "Open File by Name" window did not show files whose paths would have partially matched the directory path that was entered.
  • The results window for a multi-file replace now includes the total number of replacements (across all files) in the summary description.
  • Fixed a crash which could occur when opening items from an SFTP browser.
  • "Previous Conflict" and "Next Conflict" now wrap around (if necessary).
  • Fixed bug in which the Document Status navigation bar item was not visible in Differences windows when it should have been.
  • Fixed a bug in which the Open File by Name search box would reset when the data source was a folder that changed while the Open File by Name window was open.
  • Fixed bug in which anything other than basic state data (markers, selection ranges, and folds) wasn't saved correctly when using the expert preference to store state in a file's "resource fork" (implemented today as extended attributes).
  • Worked around Radar 28523085, in which the headers of scrolling lists used in various palettes and sheets would draw incorrectly while scrolling.
  • Added a plural form for shell document to the scripting dictionary.
  • Recent versions of Cyberduck no longer conform to the "ODB Editor" protocol for providing necessary information when using its "Edit" command. The file's remote location is now derived by other means in this case (when possible).
  • Fixed bug in which the function menu and document icon items in a Differences window's navigation bar would sometimes show information for the wrong document in the window.
  • Fixed a bug in which modifier changes during text drag-to-select could cause unexpected selection behavior.
  • Made a change to fix the cause of a spurious crash at startup on macOS 10.12.
  • Made a change to improve typing performance by eliminating the maintenance work done for keyboard-equivalent matching in menus for which there are no configurable keyboard equivalents.
  • Fixed crash which would occur when trying to change the keyboard equivalent for a script or clipping item in the Menus & Shortcuts preferences.
  • Worked around Radar 29001343, in which using one of the print dialogs on macOS Sierra would leave the application in such a state that attempting to bring up a modal sheet would typically do nothing except beep.
  • - Markdown previewing better handles github-style fenced codeblocks that don't specify their language.
  • Fixed a bug in the Ruby color scanner in which it would get very upset if a heredoc was not closed before the end of the file.
  • Made a change to the "Open Selection" behavior so that if the selected text is a partial path, BBEdit will do a search using the "Open File by Name" mechanics, and if there's a single match, simply open the file rather than opening the "Open File by Name" window.
  • Git revision comparison now ensures a unique file name, to resolve an error that would occur when fetching the same revision data multiple times.
  • Fixed bug in which attempting to create a new file (using Save As) would fail without requesting privilege escalation, in situations when it should have done so.
  • Made changes to work around inappropriately aggressive WebKit caching of assets used by "Preview in BBEdit" live previews. As a bonus, "Preview in BBEdit" live previews will now load page assets from documents open in BBEdit. So, for example, if you make edits to a CSS or JavaScript document referenced by a preview and then reload the preview, the changes will be visible immediately, without requiring you to save the CSS or JavaScript.
  • Fixed bug in which the current working directory was not set appropriately when running a Unix text filter; this would cause problems for text filters in packages that needed to locate resources relative to the filter itself.
  • Made a change so that using the "Open File by Name" command will set keyboard focus into the Open File by Name window's search box and select the search box's contents in cases where the window was already open.
  • Project window titles in the Window menu now omit the ".bbprojectd" suffix, since after all brevity is the soul of wit.
  • Fixed a bug in which new documents created from stationery with a file name extension would inappropriately try to auto-guess the language based on the new document's contents.
  • Fixed bug in which a stray drop-down arrow was drawn in the navigation bar of an editing window when no document was being displayed.
  • The Functions and Markers palettes now remember their column positions and sort order.
  • Fixed bug in which clicking a close button in the Windows palette would not close the desired window in cases where the document was open in multiple windows, and alone in the window whose close button was clicked.
  • Made a change to the Kite support so that we only create our Kite listener socket if Kite is actually running. This means that a mysterious .kite/plugin_socks/ directory will no longer appear on systems where Kite isn't installed and running.
  • Added a new flag to bbresults: -n (or --new-window), which will force a new results window in cases where the application might otherwise have decided to re-use an existing results window.
  • bbresults adds a new built-in pattern: grep, which is suitable for parsing the output of grep(1).
  • Fixed a bug in which "Paste & Match Indentation" did not properly appear on the contextual menu when holding down the Shift and Option keys.
  • Fixed a bug which allowed duplication of items on the Open Recent menu in cases where an opened item was moved to a new location and/or renamed.
  • Fixed bug which prevented Open Recent from remounting disks (including disk images) when choosing an item from the menu.
  • Worked around a behavior of the OS dictation system in which it would insert naked carriage returns when new line or new paragraph was spoken; these would appear as gremlins.
  • The "Done" button is now the default (as intended) after entering a license code in the License panel.
  • Fixed a bug in which some filter settings were missing from the file filter popup menu in TextWrangler disk browsers.
  • Made a change to CRLF conversion to preserve legacy behavior: namely a naked CR is now converted to the internal representation, rather than being left alone and being represented as a gremlin.
  • "Check Syntax" will ignore the #! line in the document you're checking, which fixes a bug in which checking the syntax of a Python document with a #! line would fail to do anything visible. The "Run", "Run in Terminal", and "Debug" commands will honor the #! line.
  • Made some adjustments to the evaluation mode behavior.

New in BBEdit 11.6.2 (Sep 20, 2016)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Fixed drawing glitch which would occur in the list header of disk browser windows when resizing the sidebar required a text layout change.
  • Added support for the "squished heredoc" syntax introduced in Ruby 2.3.
  • Removed the factory default keyboard equivalent for "Print All", because it's a little too close to the factory default equivalent for "Previous Document".
  • Made a change to improve behavior when receiving text dragged from applications which only provide byte-swapped UTF-16 (I'm looking at *you*, Messages.app).
  • Fixed drawing glitches which would occur when resizing the sidebar in Differences windows.
  • Fixed bug in which the size of the differences list in Differences windows was not maintained correctly when reshaping the window (and sometimes it would disappear altogether).
  • When creating a new document from stationery, and the stationery file has a name extension that maps to a known language, the new document's language will be set to that language. For example, a new document created from a stationery file named "`foo.tex`" will have a language of TeX, and a document created from a stationery file named "`bar.mm`" will have a language of Objective-C++.
  • Fixed bug in which the application would crash while opening the Multi-File Search window in cases where a previously selected instaproject or text document had had its backing folder (or file) deleted.
  • "Remove Line Breaks" no longer causes a visible "jump" to the beginning of the document in the view being processed.
  • Fixed a bug in which fat-binary Mach-o executables wouldn't appear on some menus when they should have.
  • Fixed bug in which using the Text Options popover would destabilize the application. A typical symptom was that the application would crash while refreshing the Clippings panel.
  • Fixed bug in which Unix tool discovery was too strict in its definition of what an executable tool was, and excluded `#!` scripts such as `perldoc`.
  • The Terminal command file generated by "Run in Terminal" now contains logic to delete itself as well as the temporary copy created when running an unsaved document (if applicable) after execution is complete.
  • Fixed bug in which literal string matching ("is", "is not") in file filters was case sensitive.
  • Made changes to improve usability with SFTP servers that implement obsolete versions of the protocol (in particular, `CoreFTP` on Windows).
  • Fixed a crash which would occur when spawning shell subtasks on macOS 10.12.
  • If it is not possible to determine the Perforce configuration file name from the environment, BBEdit will now search for a configuration file named `.p4config`, rather than giving up. To default to a different name, use the `PerforceDefaultConfigFileName` expert preference.
  • If a Differences window has exactly one unsaved document displayed and focus is in the differences list, the "Save" and "Revert" commands will now operate on that document, rather than doing nothing.
  • Fixed a bug in which items used in the Text Factory sources sheet (from the "Choose" button) would persist after the sheet was gone, leading to unexpected performance problems as they kept up with changes going on in the rest of the application.
  • Fixed various memory leaks.
  • When running on OS X 10.10 or later and "Increase contrast" is turned on in the system Accessibility preferences, text for UI elements in editing windows is now drawn darker, as are dividing lines between some UI elements.
  • Fixed bug in which Emacs mode lines which specified unrecognized modes would set a document's language to "None", even when the document's filename extension correctly indicated the language.
  • Fixed bug in which using the AppleScript interface to open the application-wide Scratchpad (or Unix Worksheet) would open a new window for the document, even if it was already open.
  • Made a change to Open File by Name searching so that exact matches for the entered file name are found, even in very large search spaces, rather than being lost due to restrictions on the maximum number of search results.
  • When a document opens in a disk browser or results list window as a result of clicking on an item in the sidebar (or results list, as appropriate), the text view no longer draws as though it has keyboard focus, since it doesn't.
  • Fixed bug in which identifying the active Xcode project (for Open File by Name and other purposes) didn't work correctly with Xcode 8.
  • Fixed bug in which the `DATETIME_GMT` and `DATETIME_UTC` clipping placeholders would use local time when expanded during clipping insertion.
  • When running on macOS 10.12, our additions to the spelling panel are suppressed in order to work around a bug in which the OS lays out the panel incorrectly. (Radar 28263496.)
  • Fixed crashes and other misbehavior which would occur when switching between a color scheme and customized settings.
  • When "Everything" is turned on in the project sidebar, packages (documents, applications, etc) are now listed and can be twisted open to inspect their contents.
  • Worked around a bug in macOS 10.12 which would cause strange behavior when switching color schemes or changing individual color settings in the "Text Colors" preferences.

New in BBEdit 11.6.1 (Aug 24, 2016)

  • Additions:
  • The "Options" panel in the Multi-File Search window now provides control over whether to search Git ignored files or not.
  • The file filter popup menu for disk browsers and project windows (available under the magnifying glass icon) now has a command: "Git Ignored Files". This command controls whether git-check-ignore is applied when filtering files for inclusion in the sidebar. It's off by default, so any item which is excluded by a .gitignore file will be hidden.
  • The "Open File by Name" window gets a control to include Git ignored files in the results. (This has no effect when using an URL or entering a full file path.)
  • On the "Text Display" submenu of the View menu, there are three new commands: "Zoom In", "Zoom Out", and "Actual Size". Use these to change the magnification of the text in editing views. For convenience you can assign keyboard equivalents to these commands in the "Menus & Shortcuts" preferences.
  • The Find Differences command now offers an option to include Git ignored files when comparing folders.
  • Changes:
  • The "List Display Font" setting in the Appearance preferences has been replaced with a slider to set the font size. Lists in the application all use the system font. Most will use the specified size, except in specific cases where circumstance requires the use of a fixed font size.
  • Added Command-K and Command-R as keyboard equivalents for "Check Syntax" and "Run", respectively. (These were chosen for compatibility with THINK C.)
  • Differences that have been applied are now crossed out in the Differences window list, in order to avoid janky font italicizing effects on some OS versions.
  • When using "Check Syntax" or "Run" on an unsaved or untitled document, the application will now write out a temporary copy of the document. In the case of untitled documents, the temporary copy will be in the system-designated temporary items location, which is arbitrary but generally not anywhere near $HOME.
  • Fixes:
  • Fixed a case in which changes made by a documentDidSave attachment script would trigger a subsequent warning about the document having unsaved changes.
  • Made changes to improve performance when bringing up the Open File by Name window with very large Git projects.
  • Fixed a pair of bugs that conspired to prevent scratchpad documents (the Scratchpad and Unix Worksheet) from correctly remembering and restoring their state across open/close cycles.
  • Fixed bug in which files opened via the ODB external editor interface (e.g. from other file transfer clients) would show the path to the temporary file rather than the display path provided by the client.
  • Fixed Perforce configuration file discovery so that config files (as specified in the P4CONFIG environment variable) whose names are something other than .p4config will work correctly.
  • Fixed a crash which would occur when changing a language-specific color scheme setting to "Application Defaults".
  • If a folder that you chose for a disk browser, instaproject (by dragging it on to the application), multi-file search, or Find Differences is itself ignored by a .gitignore file, the application ignores (see what I did there) that fact, and will operate on its contents as usual.
  • The "BBEdit Light" and "BBEdit Classic" color schemes no longer include explicit highlight colors, thus allowing the system highlight color selection to apply.
  • Fixed crash which would occur when completing a Markup Builder panel operation with some attributes set to empty values.
  • Fixed bug in which the color used for highlighting selected items in lists wouldn't always track changes to the highlight color setting in the General system preferences.
  • Fixed a crash which would occur on OS X 10.12 when opening the Preferences window more than once during a run of the application. (This addresses Radar 27293621.)
  • Fixed bug in which PHP completion was not providing detailed parameter completions.
  • Fixed bug in which the File Info panel would fail to appear on OS X 10.9.5.
  • Fixed bug in which using up-arrow and down-arrow while in the Open File by Name window's search box would change the selection in the results list, without bringing it into view.
  • Worked around OS behavior on 10.11 in which the search box in the Open File by Name window would lose keyboard focus and not get it back when it should have.
  • Fixed bug in which changing the "Document navigation" setting in the Appearance preferences didn't take effect until you created a new window or restarted the application.
  • Fixed bug in which the file info panel for remote documents (opened via built-in FTP/SFTP or a third-party file transfer client) would show file information for the backing cache file, rather than hiding the Info and Permissions tabs as was intended.
  • When using "New Text Document", "New Folder", or "New HTML Document" on the contextual menu in instaprojects, the save panel will new point to a more predictable directory when possible.
  • The "Copy Path" commands on the Edit menu now behave reasonably for documents opened from remote sources via the built-in FTP/SFTP support as well as by external file-transfer clients.
  • Fixed a bug in which a -37 error would be reported when trying to save a new document with a name containing certain characters.
  • Improved the reporting of PCRE pattern errors in the "Replace All" sheet used for text factory operations.
  • Fixed bug in which keywords matched by the "Keyword Pattern" in a codeless language module were colored as comments rather than as keywords.
  • Fixed bug in which "Open Counterpart" and the Counterparts menu didn't find eligible files in the absence of data from the Open File by Name cache.
  • Text generated by AppleScripts run from clippings or "Run AppleScript Filter" text factory actions is now normalized to linefeeds before being applied.
  • If your default shell is tcsh, shell worksheets will now use bash instead, because tcsh doesn't play nice in worksheets.
  • Fixed bug in which filenames whose extensions ended with a decimal digit would not match a custom language mapping for that extension.
  • Made a change to resolve an SSL connection failure when attempting "Check for Updates" on macOS Sierra betas.
  • Fixed a layout goof in the Keyboard preferences on pre-10.11 OS versions.
  • Made a change so that .editorconfig file discovery is no longer attempted for documents opened via the built-in FTP/SFTP support.
  • Fixed a bug in progress reporting in which the progress dialog would occasionally be blank, except for the progress bar and Cancel button.
  • Added additional diagnostic logging to help diagnose cases in which Unix tool execution fails unexpectedly.
  • TeX comments no longer interfere with Balance operations.
  • When using the "Check Syntax" or "Run" commands for a supported language, the command path in the #! line is now honored in preference to the language module's built-in command. Any specific arguments for debugging (e.g. -d for Perl) may be added as needed, and if so will be added after any arguments specified on the #! line.
  • Fixed a bug in which "Show Scratchpad" in the application dock menu didn't bring the Scratchpad to the front in situations where the application was in the background.
  • Updated the list of Perl keywords, and split Perl predefined functions into a separate list so that they're colored as predefined names, and not as language keywords.
  • Fixed cosmetic bug in which items in the recently used search strings popup (in the Find and Multi-File Search windows) had backslashes escaped.
  • Fixed bug in which the general-purpose "Unix Script Output" log would be nested one folder deeper in ~/Library/Logs/BBEdit/ than it should have been.
  • Fixed a crash which would occur when using a property specifier as the source for a scripted multi-file search/replace/text factory operation.
  • Text output from Unix scripts and filters is now normalized, so that any carriage return (ASCII 13) characters are converted to the internal representation, rather than appearing as gremlins.
  • Fixed bug in which collapsing and then expanding the "Currently Open Documents" section in a project's sidebar while the "Projects" section was collapsed could result in the items in the Currently Open Documents list being unresponsive to clicks.
  • Fixed drawing glitch which would occur when showing or hiding the Navigation Bar.
  • Script execution from the "Run" command now displays progress in situations where it didn't before.
  • When looking for installed Unix tools, the application will now enforce the restriction that any binary executables actually contain code that is runnable on the current CPU architecture. This fixes problems on systems that have obsolete PowerPC code installed in paths used by the application to find executables.
  • Fixed bug in which Markdown syntax coloring would become inconsistent during certain edits in text that was not part of a list or quoted block.
  • Fixed incorrect coloring of Markdown inline code while typing an unterminated code run at the end of a document.
  • Fixed a bug in which Git ignore checking for a batch of files would throw an unreported internal exception in some cases; this would lead to odd application behavior subsequently. (Typically this happened when using the Counterparts menu in the navigation bar.)

New in BBEdit 11.6 (Jul 6, 2016)

  • ADDITIONS:
  • 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.
  • 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.
  • Custom keyword files (those that live in ApplicationSupport/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.
  • 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.
  • CHANGES:
  • 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 Unixworksheet 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.
  • The following changes have been made to the editing view structure:
  • 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.
  • The text used to draw items in the navigation bar, status bar, and line number bar has been desaturated a bit.
  • 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.
  • The document navigation arrows have been retired. "Previous Document" and "Next Document" on the View menu still work as before.
  • The Current function/function menu has been moved to the right-hand side of the navigation bar.
  • The overall appearance of the navigation and status bars has been cleaned up quite a bit.
  • FIXES:
  • 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 .
  • 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.

New in BBEdit 11.5.2 (Apr 21, 2016)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Fixed bug in which initiating a drag with the mouse could happen unintentionally when clicking on draggable objects.
  • Fixed crash and malfunction which could occur in certain situations when converting Unicode data from a non-Unicode on disk representation in zero-length files.
  • Made a change to reduce the transient memory requirements when performing a non-Grep Replace All operation using a replace string that is longer than the search string.
  • Made a change so that text factories and multi-file Replace All operations avoid running out of address space when processing an extremely large number of files.
  • Fixed crash which would occur when trying to change the name of a "Favorite" in the font panel.
  • Fixed bug in which a document's Undo history was cleared when using "Move to New Window" from the project sidebar popup or contextual menu.
  • Made some changes to address lurking concurrency problems during package loading.
  • Improved the performance of "Strip trailing whitespace" when saving documents and the eponymous preference is turned on in the Text Files preferences.
  • If a file-based Unix script or filter isn't usable because of its on-disk representation (as when choosing it from the Apply Text Filter or Scripts menus), an informative error is now reported.
  • Fixed bug in which heredoc strings in Unix Shell Script documents were not colored using the proper color.
  • Fixed a bug in the VHDL and Verilog HDL language modules that would cause unexpected coloring effects (which sometimes corrected themselves during editing, and sometimes not).
  • The Live Search box no longer displays the magnifying glass (the system draws it incorrectly on retina displays, and won't be corrected).
  • Made some adjustments to the Replace All sheet for text factories to correct font usage and allow reasonable behavior when resizing the sheet.
  • Fixed cosmetic glitch in results windows, along the boundary between the splitter and the text view.
  • When spell checking in HTML/XML, the checker now properly handles transitions between checkable ranges (such as CDATA body text) and non-checkable ranges (tags), so that all CDATA text will be checked, even if checking did not start inside of a CDATA range.
  • Fixed drawing glitches when changing the sidebar width in editing windows with "Show Gutter" turned off.
  • When closing a very large document without saving changes, and "Make Backups" is turned on, the auto-recovery file doesn't neeeeeeed to have trailing whitespace stripped out, so we no longer do that (and save lots of time in the process).
  • Fixed drawing glitches which would occur when combining selection-range changes and scrolling in certain circumstances.
  • When "Find Next Misspelled Word" wraps around, the "Wrap Around" indication is now displayed (as it should be).
  • Fixed case in which a text view would draw twice when loading a document and then changing its selection range to some place that required scrolling.
  • Put in code to work around a bug in the OS (16742697) which would cause the application to crash after scrolling views in an Open or Save panel (and a few other windows).
  • Fixed a crash which would occur in some situations when calculating data for the fold gutter.
  • Fixed a cosmetic glitch in which a diff-colored line would occasionally be drawn diagonally across one of the text views in a Differences window.
  • Fixed bug in which document state was not automatically saved in situations where it should have been saved when closing the document.
  • Fixed bug in which the status bar would not be drawn completely when responding to actions triggered by a status bar item's popup menu.
  • It is now possible to run Perl, Python, or Ruby files directly from an editing window, the Scripts menu, or the "Apply Text Filter" command when the file in question does not have a shebang line, as long as the document's language is set appropriately.
  • When python3 is available in a typical executable location, we will now use that to run Python scripts that don't have a shebang (#!) line.
  • Updated the built-in list of PHP predefined names so that symbols occurring in PHP embedded in HTML will be colored.
  • Fixed bug in which invisible text views (such as worksheets displaying output in a window while a different document was selected) would inappropriately bleed scrolling through to the active document.
  • When saving an already extant document, the permissions check (to determine the need for authentication) no longer checks the parent directory if the file itself appears to be writeable.
  • Fixed crash which would occur when attempting to type a callout comment at the very end of a C-family language document.

New in BBEdit 11.5.1 (Mar 9, 2016)

  • ADDITIONS:
  • Added support for HSL notation in color schemes. hsl(h, s, l) and hsla(h, s, l, a) are now supported, while the legacy formats are still allowed for compatibility with existing color schemes. This makes it easier to write color schemes by hand where desired. Colors in color schemes can now be specified using rgba(), hsl(), hsla(), hex(nnn), hex(nnnnnn), and CSS #nnn/#nnnnnn notations. The alpha channel in rgba and hsla is not currently used.
  • CHANGES:
  • Made changes to increase contrast and visibility of selected and sub-line differences, as follows:
  • Only the selected top-level difference is colored using the Differences color when selected; all others are colored using a subtle gray shade.
  • When a difference containing sub-line differences is selected, all of the sub-line differences are colored using a darkened (or lightened, for dark color schemes) version of the Differences color.
  • When a specific sub-line difference is selected, it is colored using a darkened (or lightened, for dark color schemes) version of the Differences color. The surrounding difference range is colored using a subtle gray shade. None of the other sub-line differences are colored when a specific sub-line difference is selected.
  • FIXES:
  • Made a change to instruct PCRE to use Unicode properties when determining character class, so that patterns with \w and others will work correctly with non-ASCII characters.
  • Fixed a bug in which making the sidebar of a new editing window visible, either manually or by adding another document to the window, would cause odd graphic effects when scrolling in some situations.
  • Fixed bug in which paragraph tags did not get fold indicators.
  • Updated the search keyword tables to include new or changed preference settings.
  • Made a change to provide finer-grained control over the Spaces behavior of the modeless windows (Find, Multi-File Search, Open File by Name) and returned FTP/SFTP browser window behavior in Spaces to pre-11.5 defaults.
  • Added an expert preference, PCREMatchLimitOverride, to be used only on the instructions of Tech Support to adjust an internal circuit breaker in the PCRE library.
  • We no longer ask the active printer for its output resolution when calculating margin offsets for the "1-inch gutter" option, since printer drivers never return the correct answer.
  • Fixed a bug in which scripted search operations against the front document which explicitly requested results did not receive them (nor were results displayed if requested).
  • When using Page Up and Page Down to move the insertion point, the location of the insertion point relative to the top line of the document is now maintained.
  • Fixed bug in which file filter terms referencing "Parent Folder" did not work correctly.
  • Fixed cosmetic bug in which the status area would be incorrectly redrawn when clicking on the document lock icon to unlock the backing file on disk.
  • Fixed crash which would occur while typing a #MARK comment callout at the very end of a PHP or C file.
  • Fixed bug in which Go -> Previous/Next Difference would select items in the Differences list, but not bring the selected list item into view.
  • 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.
  • When restoring application state, documents that were open only in results windows (search results, source control status, etc) but were not open in any other windows are now opened together into a new window, rather than having one new window opened for each instance of the document that had been displayed in a results window.
  • The default for "Show tick marks in scroll bar" in the Editing preferences (applying to "Display instances of selected text") now defaults to -off-, to avoid confusing the unwary.
  • Made changes to increase the contrast between normal and selected difference colors, and to make sub-line differences more visible against the selected-difference background color.
  • Fixed crash which would occur when running a text factory from the Scripts menu and using the "Choose" button to modify the list of items to process.
  • Fixed a bug in which the HTML syntax checker would incorrectly report errors in documents containing tags in embedded JavaScript content.
  • Put in a timeout to guard against a hang which occurs sporadically when we request the current runtime environment from the user's login shell.
  • Recompiled the PCRE library with a flag changed to address an error which would occur when trying to use Grep patterns longer than 12219(?!!) characters.
  • Improved error reporting for invalid Grep patterns.
  • Fixed bug in which "Process Duplicate Lines" would delete the line following a blank line (in sort order), whether it was blank or not.
  • Fixed layout glitch in the Keyboard preferences on OS X 10.9.
  • Fixed crash which would occur when closing a document window after having triggered a bezel alert (such as the "wrap around" search indicator).
  • Fixed bug in which using the View -> Text Display -> Split/Unsplit Text View command would sometimes not correctly redraw the editing view.
  • Fixed an error 10003 which would occur when performing scripted operations which involved high-frequency open/close cycles with different documents.
  • Fixed bug in which documents opened from a results window in which Soft Wrap Text was turned on did not correctly apply the wrap settings.
  • When using Go => Named Symbol, the search box is now initially populated with the word surrounding the insertion point, or with the selected text if it contains no white space or line breaks.
  • Made a change so that text in CDATA sections in HTML and XML files is now eligible for spell checking.
  • Made a change to improve performance when changing the live-match highlighting in documents with extremely long unwrapped lines.
  • Put in a workaround for an OS bug on 10.11 in which the state restoration progress window would appear blank or black for some period of time at startup.
  • Fixed bug in which documents which did not have saved state did not correctly adopt language-specific preferences when opened.
  • Fixed crash which would occur when performing a Sort Lines or Process Duplicate Lines operation using a pattern and the "All sub-patterns" option.
  • Text underlined or highlighted by the "Display instances of selected text" matching now uses the "Plain text" color, rather than deriving from the "Background" color.
  • Fixed a bug in which the keyboard focus was not on the name field in the "save color scheme" sheet, as it should have been.
  • Fixed bug in which Differences windows had, incomprehensibly, a Current Function item in the status area.
  • Fixed bug in which the initial state of "Sync Scrolling" for Differences windows was wrong in certain situations.
  • Made a collection of changes to improve startup performance and application responsiveness when initially loading the contents of very large folder-backed menus (especially clippings).
  • Fixed layout goof in text views in which all status area items were turned off, but Show Line Bar or Show Gutter was turned on.
  • 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.
  • Corrected font display in the edit fields for the "Replace All" text factory operation.
  • By default, "display occurrences of selected text" will only search for qualifying text that is two characters or longer, so that selecting or placing the insertion point in front of a single character will no longer display highlights throughout the document.
  • During text drag-and-drop, the insertion point indicator will now appear immediately at the drop location, rather than waiting for a blink cycle.
  • The "Strip trailing whitespace" option when saving files will no longer remove page breaks.
  • Adjusted the factory default color schemes to use a Differences color with greater contrast.
  • The Unix Shell Script language module now allows single- and double-quoted strings to cross line boundaries.
  • Fixed bug in which Zip archives weren't listed in the Open dialog unless "Show hidden items" was turned on.
  • Fixed bug in which current-line highlighting would disappear from the first line in the document when using an unmodified up-arrow to move the insertion point to the beginning of the line.
  • Adjusted the PCRE library to use the application heap for recursion instead of the machine stack, which allows more deeply recursive patterns to run successfully (at the theoretical cost of some performance).
  • Fixed bug in which CSS unit values were lost when using the CSS markup panels.
  • Suppressed vertical resizing in the text factory "Replace All" panel to resolve layout issues.
  • Fixed bug in which clippings were listed twice in the Clippings panel of the Setup window.
  • Fixed bug in which custom language mappings for file names or file name patterns didn't work for files without a name extension.
  • Fixed bug in which trying to toggle "Synchro Scrolling" in a Differences window wouldn't work when keyboard focus was in one of the editing views.
  • Made a change so that text in non-selected differences ranges (which are now a neutral gray) is allowed to have its usual syntax coloring, rather than being forced the foreground color.
  • When refreshing the results in a Differences window, previously computed sub-line differences and selected-difference ranges are now cleared to avoid incorrect stray highlighting.
  • Introduced a new built-in language, "Shell Worksheet". This is just like "Unix Shell Script", except that it doesn't allow strings to cross line boundaries. (It's a correct thing to do in scripts generally, but looks very strange in output.)
  • Worked around a bug in the Wacom tablet driver in which it was generating spurious mouse-wheel-moved events which would in turn cause unwanted scrolling during certain pen movements.

New in BBEdit 11.5 (Jan 28, 2016)

  • Additions:
  • BBEdit now supports the use of iCloud Drive for sharing application support and setup items. This works similarly to the existing Dropbox support: in your "iCloud Drive" folder, create a folder named "Application Support", and then within that create a folder named "BBEdit". You can populate that folder with the contents of your /Users/USERNAME/Library/Application Support/BBEdit/ folder.
  • BBEdit now supports the use of iCloud Drive for a shared backup folder: in your "iCloud Drive" folder, create a folder named "BBEdit Backups", and if you have turned on Use Historical Backups, BBEdit will use this folder.
  • There's a new settings group in the Appearance preferences: "Sidebar". The controls here determine the default behavior of the files sidebar in editing, project, and Differences windows.
  • Note: Using "Save Default Text Window", "Save Default Project Window", or "Save Default Differences Window" sets the default visibility for the sidebar in windows of each respective type; this always overrides the preference.
  • There is a new folder-comparison option in the Find Differences dialog box: "Only compare items in common". When you turn it on, BBEdit will only list items in the results that exist in both of the folders being compared. This option is also available to the scripting interface.
  • There is a new setting in the Text Colors preferences: "Differences". This color setting determines how differences are highlighted in editing views when you select them in a Differences window. (The color for differences within a line is derived from this, by darkening or lightening as needed.) If a custom color scheme does not include a Differences color, BBEdit will use a dark gray or light gray (depending on the scheme's background color) instead.
  • Synchro Scrolling is now enabled (and on by default) for Differences windows: when turned on, scrolling either text view in the window will scroll the other one. Synchro Scrolling can be turned off for Differences windows; and if you would like it to be off for all new Differences windows, turn it off and then choose "Save Default Differences Window" from the Window menu.
  • Things that are highlighted in the text at various times (matches for selected text, Live Search results, spelling errors, and diffs) are now marked in the view's vertical scroll bar. The tick marks indicating matches for selected text may be turned off in the Editing preferences, if desired.
  • The GUI setting for extra space in text views, which was removed in 10.0, has been restored to the Editing preferences.
  • Did you know that you could set BBEdit up to use the Escape key to trigger completions? That's OK, nobody else did either. There's now a setting in the Keyboard preferences to enable this. Note that it works at cross purposes with both Emacs emulation and using the Escape key to exit full screen mode; that is, if you turn on Escape-key completion triggering, the Escape key will only work to trigger a completion, and will not function as either the Emacs meta key nor will it exit full-screen mode.
  • There is a new preference in the Keyboard preferences, subordinate to Emacs emulation: "Enable meta sequences". This is off by default, so that the Escape key is not intercepted and can be used to exit full screen mode when running on OS X 10.10 or later.
  • To restore the previous Emacs emulation behavior (in which command sequences beginning with a press of Escape can be used), turn this preference on, at the cost of not being able to use the Escape key to exit full screen mode.
  • Added control to the Editing preferences so that instances of the selected text may be highlighted if desired, rather than underlined.
  • The FTP/SFTP connection panel now has a Path field, so you can see the directory that will be set once the connection is completed.
  • The FTP/SFTP connection sheet now has an explicit field for specifying the port to use, if you want to connect to an alternate server port.
  • The "Insert Folder Listing" command now provides options to control whether the generated listing is hierarchical (the original style), or flat (which lists the full path of every item). The "Include hidden items" option is back after a long absence, as well. These settings are saved, and will apply when dragging a folder in to an editing view as well.
  • When piping data into the bbedit tool, you can now add a line number specifier, and the and the insertion point will be placed at the start of the indicated line in the resulting document. Added a new command to the Edit menu: Start Speaking. This command will speak the selected text in the document; if there is no selection range it will speak the entire document. If the document is empty, this command is disabled. When speaking is in progress, this command reads "Stop Speaking" and will stop the in-progress speech.
  • Added new command to the Edit menu: "Paste & Match Indentation". When pasting text, this command will attempt to indent it to the same point as the line on which you're pasting (or if that line is empty, the most recent non-empty line). The factory default for this command is Cmd-Opt-Shift-V. You can change the keyboard equivalent using the Menus & Shortcuts preferences.
  • Enabled {Copy, Save} as Styled {Text, HTML} for the edit fields in the Find and Multi-File Search windows, because why not.
  • Changes:
  • The internal PCRE library has been updated to the latest "stable" version of PCRE (8.3 plus maintenance updates; see the about box for the exact version). There have been changes to the supported pattern syntax since PCRE 5.x, the previous supported version. Most patterns should work as-is but there is a possibility that patterns that previously worked may require adjustment.
  • Worksheet views no longer have the "sudo" icon in the toolbar, since it is now redundant (since 11.0 you can use sudo in commands as you would in a terminal window).
  • The "Find Differences" dialog box has been reworked.
  • The old path controls are dragged to the curb, and have been replaced with edit fields. When you choose a file, its path is entered in to the edit field. You can leave it alone, or make edits to it to choose alternative locations.
  • The image to the right of each path shows a file or folder icon if the path refers to an item on disk; if the item indicated by the path does not exist, the image will show an alert icon.
  • The image wells are also drop targets: you can drag a file or folder in to specify it. Finally, double-clicking in an image well will reveal the selected item in the Finder.
  • The "Compare: ( ) Files ( ) Folders" switch is gone. Find Differences will figure out what you want to do based on the items you provide. (You can only compare a file to a file or a folder to a folder.)
  • The "Enable" popup menu in the Open dialog (for filtering by file type) has been removed. "Show hidden items" now affects file filtering behavior as well as making hidden items visible; when "Show hidden items" is turned on, any file is enabled and may be opened.
  • The Edit and Text menus have been rearranged.When viewing documents in Differences windows, differences ranges are now always highlighted and can be seen when scrolling through the document.
  • The "Apply to Left" and "Apply to Right" commands (and buttons) no longer pay attention to the selected range(s) of text in the respective documents. Instead, they will apply the difference based on what is reported in the differences list (and highlighted using the Differences color).
  • The "Un/Comment" command has been split into two commands: "Un/Comment Lines" and "Un/Comment Block". The difference is whether commenting is done using the language's line-comment delimiter, or its block-comment delimiters. Thus, you get exactly what you asked for, without any confusion or guessing.
  • The one circumstance under which your request is overridden is if you request line comments in a language which doesn't have them (e.g. HTML or XML), or request block comments in a language which doesn't support them (e.g. Perl, CSS). In that situation, the commands will behave identically and apply whichever comment delimiter is available.
  • The old PreferLineCommentsWhenCommenting expert preference no longer has any effect.
  • Changed the height of the action bar (at the bottom of the sidebar) so that it lines up with the height of the status bar/scrollbar.
  • The action areas at the bottom of the sidebar in disk browsers, projects, and editing windows now use an appearance that matches the rest of the window adornments.
  • No more grip strips in the action area of the sidebar. (The effective area for dragging the splitter is the same, though, and the cursor will change in just the same way it did before.)
  • Added a preference to the "Sidebar" group in the Appearance preferences: "Show icons". This can be turned off to recover horizontal space or reduce visual load in sidebar lists.
  • Documents with unsaved changes are now indicated in the side bar with a ring around the close widget, rather than by darkening the document icon.
  • Rearranged the folder comparison options in the Find Differences dialog so that more frequently needed ones are at the top of the column, rather than being mixed in with ones that are less likely to be used often.
  • The side bar in document and differences windows is now uniformly referred to as the "Sidebar", as in "Show Sidebar" and "Hide Sidebar".
  • Made some edits to the Appearance preferences to clarify the "show sidebar" defaults.
  • The performance of Zip file filtering has been somewhat improved, and so the InspectUTIWhenFilteringZipFiles expert preference is no longer used. (The Expert Preferences help has been amended accordingly.)
  • Removed the rule between the line number bar and the fold gutter (when both are visible) for a cleaner appearance.
  • The bbedit command-line tool has two new behaviors that affect the use of the --maketags option.When right-clicking on a folder in a project sidebar, there is a new group of commands on the contextual menu: "Check Syntax", "Check Links", "Update", and "Update Images". These perform the equivalent of (respectively) "Check Folder Syntax", "Check Folder Links", "Update Folder", and "Update Folder Images".
  • Document state storage no longer reads settings out of file resource forks, nor writes into them. If the UseResourceForkForDocumentState is turned on, the application will use extended file attributes for storing this information instead. (Any document settings stored in legacy resource forks will be ignored.)
  • Made a change so that the application no longer requests user interaction when attempting to resolve a reference to a document's file on disk (which would happen in cases where the document's backing file was deleted).
  • Language modules can now designate certain run kinds as "special" for purposes of balancing. When computing balance points (either while typing or in response to a "Balance" command), these runs are taken into account in a fashion similar to what has been done historically for strings and comments.
  • For language module developers: special balance runs are listed in the module's plist using a new key: BBLMBalanceSpecialRunKinds. This is an array of strings, each of which corresponds to a run kind generated by the module which should be skipped over when balancing (or balanced within, if the initial balancing point is inside of one of these runs). The following run kinds are treated as special by default, so you should not include them in your BBLMBalanceSpecialRunKinds: com.barebones.bblm.comment, com.barebones.bblm.line-comment, com.barebones.bblm.block-comment, com.barebones.bblm.string, com.barebones.bblm.single-string, com.barebones.bblm.double-string, com.barebones.bblm.heredoc-string.
  • Open File by Name will now search Xcode for system framework headers, rather than relying on previous installation of the Xcode command-line tools package (which places framework headers in /System/Library/Frameworks/).
  • It is now possible to use the Escape key to exit full-screen mode (on systems that support that behavior, namely OS X 10.10 and later). Note that in order for this to work, you must turn off both Emacs meta sequence support and Escape-key completion triggering, in the Keyboard preferences.
  • The "Project" section in project windows can now be collapsed in order to maximize available space for the "Currently Open Documents" section.
  • When closing a window containing multiple documents, the "Close documents?" alert will now list the first few documents in the window, to help make an informed decision.
  • When using "Close All Documents" or closing a window containing multiple documents, if any of the documents require saving, you are now prompted to save them as a batch, rather than one at a time.
  • When running a multi-file Replace All, the confirmation dialog now runs as a sheet on the Multi-File Search window, rather than as an application-modal dialog.
  • "Use Selected Text for Find (grep)" and "Use Selected Text for Replace (grep)" will now escape control-character sequences (tab, line breaks, and other unprintables) in the resulting Grep pattern.
  • The horizontal scrollbar in text views is now only visible when it's needed in order to scroll the text horizontally. ("All right, I won't poison your dinner. THIS TIME.")
  • Malformed HTML comments involving unbalanced pairs of dashes will now trigger an error report from the HTML syntax checker. (They're already noticeable by incorrect syntax coloring.)
  • The project site settings do not require a name, so the options panel no longer includes a name field.
  • If you want to hide vendor-prefixed names from the completion list in CSS/SCSS documents, you can now use this expert preference to do it:
  • defaults write com.barebones.bbedit CSSExcludeVendorPrefixedCompletions -bool YES
  • The factory default for FullScreenWindowsHogScreen is now on, so that clicking the "enter full screen" button will cause the window to take up the entire display, irrespective of whether it's a good idea to do so. You can hold down the Command key when clicking the "enter full screen" button to have the application make that decision based on the current width of the window; complete details are in the Expert Preferences help.
  • Fixes:
  • Made a small change to improve performance in the computations for soft wrapping text.
  • Fixed bug in which an empty selection range would be passed to AppleScript filters run from the "Apply Text Filter" command, rather than passing the entire text of the document (which is what should be done, consistent with other filter types and the documentation).
  • Made a change to improve directory scanning and file filtering performance for Find Differences folder comparisons (which also benefits multi-file search/replace and Text Factory application).
  • Fixed a case in which autosaved document data would be lost if the application crashed or was forcibly quit after the restoration of sleep data, but before an auto-save took place.
  • Corrected the error message text for error 13110 ("Export as Text" attempting to overwrite a non-text document type) and added error text for 13109 (font height exceeds text view height).
  • When the differences list has focus in a Differences window, commands on the View -> Text Display submenu will be enabled appropriately and the changes they make will apply to both of the displayed documents.
  • Command-clicking on a delimited URL will now properly handle line breaks (and subsequent white space) that may occur in the middle of the URL.
  • Updated the built-in ctags to 5.8 (the terminal version provided by the developer on SourceForge). Newer versions are available from other sources; installing and using them is left as an exercise for the reader, but as long as they are command-line and file-format compatible with Exuberant Ctags, they may be used in place of the built-in one where desired.
  • When performing a "Process Duplicate Lines" and not using a Grep pattern for matching, empty (zero-length) lines are now treated as equivalent (and thus duplicates) and will be removed if the options so indicate.
  • Fixed bug in which some commands on the Edit menu were inappropriately enabled in Differences windows when the list had keyboard focus, leading to possible unintentional edits (depending on choice of keyboard equivalents).
  • Fixed bug in which the "Flatten hierarchies" option in Find Differences did not actually do anything and so the hierarchies were allowed to remain resolutely unflat.
  • Made a change to reduce overhead when reading in a file during multi-file search or text factory operations.
  • Worked around OS API bug in which named historical backups would fail after changing the primary system language (in the "Language & Region" system preferences) without restarting the computer.
  • Fixed bug in which bbdiff would activate the application, even after no differences were found.
  • Fixed crash which would occur when cancelling a search initiated by bbfind by killing the bbfind command.
  • When using Spaces, BBEdit's modeless dialog boxes (Find, Multi-File Search, and Open File by Name) can appear on any space on which the application is active. This is against recommended best practices, but is more convenient when using Spaces heavily. If you prefer to adhere to best practices and have those windows "stick" to the space that is active, use this command:
  • defaults write com.barebones.bbedit ModelessWindowsStickToActiveSpace -bool YES
  • Bookmarks listed in the Setup window will now show the bookmark's URL location as a tooltip when appropriate.
  • Fixed bug in which empty folders in the Clippings directory were not listed as eligible clipping sets for Save as Clipping/Save Selection as Clipping.
  • SFTP file transfers are now done on a background thread, with progress running on the main thread, to improve performance.
  • Made a change so that live matching is done on a background thread and updated when the work is done, rather than tying up the UI in cases where there are so many matches for the selected word that a noticeable amount of time is required to find them.
  • The current function display in the navigation bar will now replace tabs with nonbreaking spaces and collapse multiple runs of spaces to a single space, which improves display of function names in some situations.
  • Fixed bug in which replacements for capture groups in patterns containing lookahead assertions would generate incorrect (or junk) results.
  • Fixed crash which would occur in the C/C++/ObjC/ObjC++ function scanner when encountering certain unbalanced constructs.
  • Fixed bug in which double-clicking in the empty space of a palette backed by folder items (scripts, text filters, etc) would report an error instead of quietly doing nothing.
  • Made a change to correct tab width calculations when drawing non-antialiased text.
  • Live Search now does its work asynchronously, so that intermediate searches in very large documents don't tie up the search box as you type.
  • Restored the pre-10.5 printing mechanics to "Preview in BBEdit" windows. This works around various bugs with pagination and misreporting of page counts caused by the embedded WebKit view.
  • When a document is opened (or closed), all visible listings of it in the project window sidebar are updated with an "x" close widget and the appropriate state as the document is changed and saved.
  • Fixed bug in which the status item in the application-wide Unix Worksheet did not display any command status.
  • Corrected the default initial content for the global Unix Worksheet to remove a confusing reference to the default worksheet stationery, which is only used for worksheets created by File => New => Shell Worksheet.
  • Made a change so that Open File by Name lists recent items after items which are derived from the active project (or other contextual source).
  • Fixed crash which would occur when printing with line numbers turned on.
  • Made a change to improve the performance of Quick Find and live-matching operations.
  • Enlarged the "Path:" text area in the File Info popover.
  • Fixed bug in which "Restore Defaults" in the "Menus & Shortcuts" preferences did not also reset hidden menus and items, as it should have.
  • Fixed bug in which turning on "Text Magnification" alone in the Appearance preferences was insufficient to trigger the status bar display.
  • When importing the legacy .bbcolors color scheme format, rgb(...) color values are now correctly converted using 0..65535 as the range, instead of 0..255.
  • Rewrote the logic which tests for reasons why a file might be locked. This should help correct situations in which the application inappropriately reports that files resident on remote server volumes are not unlockable.
  • Single-file "Find All" now takes a code path that avoids the multi-file search mechanics, so it will work as expected on open documents which are not necessarily seen by the system as text files (for example, SVG).
  • Highlighted ranges for "Live Search" matches no longer get cleared when the text view is activated or deactivated.
  • Made significant performance improvements to an internal subsystem used by the markup tools. This should improve the overall performance of some operations in HTML/XML documents, particularly when the documents are very large. (Function scanning, syntax checking, formatting, and other structural operations.)
  • Made a change to reduce the internal memory requirements of a data structure used heavily by the HTML/XML tools subsystems.
  • Fixed bug in which using the "Open in New Window" option from the Open panel would not open an additional window for a document that was already open. The underlying issue would also cause incorrect state restoration in cases where a document was open in multiple windows when the application was quit (or when an automatic state snapshot was made).
  • Fixed bug in which Git menu commands were disabled for items that resided in hybrid git/svn working copies.
  • Corrected some missing terms in the replace AppleScript verb.
  • When opening a document into an explicitly specified window (as when restoring state during startup), if the document was already open in another window, the application will no longer move the document from the other window into the specified window (which might cause the other window to close unexpectedly).
  • Fixed bug in which incorrect time zone calculations were done on the dates of files listed in the FTP/SFTP browser UI.
  • Fixed bug in which item references created when saving an instaproject using "Save Project" were made relative to the instaproject's initial folder, and not to the project document's actual location on disk when saved. This would create confusing and incorrect results when resolving those references on a subsequent reopen of the project.
  • Fixed bug in which the width of a project's sidebar was not restored when opening the project if no other changes had been made and "Save Default Project Window" had previously been used to set up defaults.
  • Separator generation for "MARK:" comment callouts now works correctly in C/C++ and PHP files.
  • "Show Fonts" when a Differences window is in front now does something, and changes in the font panel are applied to both text views.
  • Added some symbols to color as predefined names in C-ish languages. (Mostly stuff from .)
  • Fixed crash which would occur when an error is returned from running an Automator workflow. (This would actually happen all the time on some OS versions in which the Automator workflow API always returned an error, even when none had occurred.)
  • When wrapping text in a document with "Auto-Expand Tabs" turned on, Hard Wrap will now detab the wrapped text, instead of leaving it indented with tabs.
  • Fixed bug in which tags with name attributes (e.g. map) were not correctly recognized as internal link targets.
  • Made a change so that scripted Replace All (and Find) operations on single documents are routed directly to the document's text, rather than through the Multi-File Search mechanics, which will increase performance and reduce UI churn caused by progress windows coming and going.
  • Added "finally" to the PHP keyword list.
  • Fixed bug in which (usually) instaprojects opened with settings from "Saved Default Project Window" in effect would have some misalignment in the side bar.
  • Modernized the "Insert Emacs Variable Block" sheet.
  • Rewrote the panel used for confirming saves when doing multi-file Replace All or text factory operations.
  • Fixed bug in the "New HTML Document", project site settings, and Text Options panels in which dragging off a popup menu's button without selecting anything from it would cause it to select the first item in the menu.
  • Made a change to Perforce configuration detection so that a .p4config file in the ancestry of a given document will take precedence over any environment variables that may exist (and possibly conflict).
  • The hierarchical HTML formatters (Pretty Print and Strict Hierarchical) no longer enforce strict containment rules, which allows them to generate better results when given HTML code that is invalid due to containment mistakes but is otherwise well formed. This change also addresses inconsistencies in indentation between self-closed XML-style tags (e.g. "") and inline tags which are implicitly closed (e.g. ).
  • Fixed bug in which tags with "protected" content (script, style, pre, textarea) did not have line breaks placed after the closing tag when using "Pretty Print" markup source formatting.
  • Fixed cases in which list items that should have been drawn in the italicized system font were not, on 10.10 and later. This affects applied differences, aliases in disk browser, and the "empty line" items in the Jump Points and other navigation palettes.
  • Corrected formatting of tags in the Pretty Print format option.
  • When using the "Pretty Print" and "Strict Hierarchical" the markup formatter will now behave more reasonably with and tags, including indenting their content to an appropriate level.
  • Updated the Objective-C/Objective-C++ keyword lists to add __kindof, nullable, _Nullable, _Nonnull, _Null_unspecified, and a few others.
  • Fixed a bug in which "Pretty Print" and "Strict Hierarchical" markup formatting would generate unwanted extra line breaks after containers in some situations.
  • Adjusted the YAML module so that completions may be generated from symbols in the file in which you're typing.
  • When Page Up and Page Down are allowed to move the insertion point, they now behave consistently with using Option-Up/Down Arrow for the same purpose.
  • Made a change to improve performance when highlighting (or clearing highlighting of) large quantities of matches for live-matched selections or Live Search results.
  • Made changes to improve performance when working in windows containing large numbers of documents.
  • Fixed bug in which displaying a bezel alert ("wrap around", "not found", etc) as the result of an operation that also dismissed the Find window would leave the front document window in an inactive state.
  • Made some changes to improve behavior when changing display geometry, either by adjusting the resolution of a single display, or by adding/removing displays.
  • Added support for the HTML 5 , and tags for markup generation and syntax checking.
  • Corrected the computation for deciding whether to use a contrast-enhanced I-beam cursor on text views with dark backgrounds.
  • Fixed a case in which the "Include" or "Persistent Include" markup commands would fail to generate a relative path when the directory containing the include file was an ancestor of the document, and came from a location that was referenced in the project but was not an ancestor of the directory containing the document.
  • Fixed bug in which XML tags beginning with non-ASCII characters weren't colored as they should have been.

New in BBEdit 11.1.4 (Nov 9, 2015)

  • Additions:
  • This release consists entirely of fixes and behavior changes to address reported issues, and contains no new features.
  • Changes:
  • Rearranged the font options in the Printing preferences to make them a little clearer.
  • The factory default for FullScreenWindowsHogScreen is now on, so that clicking the "enter full screen" button will cause the window to take up the entire display, irrespective of whether it's a good idea to do so. You can hold down the Command key when clicking the "enter full screen" button to have the application make that decision based on the current width of the window; complete details are in the Expert Preferences help.
  • Results windows, disk browsers, and Text Factory windows are now included when using the Arrange commands on the Window menu. (Each type of window is arranged with its own kind.)
  • Fixes:
  • Fixed bug in which "File Path" file filter terms did not work correctly.
  • Rewrote the bezel alerts (wrap around, "not found", unbalanced paren, etc) to use AppKit instead of HIToolbox, which eliminates a nest of old HIToolbox code and corrects appearance on Retina displays.
  • If an error occurs when saving a document being processed by Update Images, or Update Placeholders for a folder, that error is now reported in the results rather than aborting the process and presenting a generic error alert.
  • Fixed a bug in which the C/C++/Objective-C function scanner would very occasionally run off the end of a source file and crash.
  • Rewrote our font panel glue to work around longstanding OS bugs in which changes in the font panel were not reflected in their intended target (Editor Defaults preferences, Printing preferences, or active document).
  • Fixed crash which would occur sometimes when using "Insert Clipping".
  • Removed workaround for Radar 22872931 and corrected API usage. (This change has no visible effect, but let's hear it for using the APIs correctly!)
  • Fixed bug in which "Revert" would report an error when trying to revert changes to a document being viewed in a Differences window.
  • Fixed bug in which the "Rebase" option was not honored in the Git "Pull from Remote" dialog.
  • Fixed bug in which tab-to-indent didn't work correctly when the selected range of text was at the end of a document which itself did not end with a line break.
  • Put in some armorplate to protect against a crash that cannot be reproduced and whose name shall not be spoken lest it summon a shoggoth.
  • Put some code in to guard against a crash that would hypothetically happen during multi-file search processing in cases where a file got deleted from underneath the folder scanner thread.
  • We now use an alternative I-beam cursor on dark backgrounds which is more visible than the one provided by the system. Note that at higher display resolutions and larger cursor sizes, the cursor image will be jaggy due to a bug in the OS (23188495).
  • Fixed bug in which the right-hand revision data in Subversion "Compare Arbitrary Revisions" was preceded by the revision data from the left-hand revision.
  • Fixed regression in which the "Magnification" status bar item did not correctly reflect the document's magnification setting.
  • Fixed bug in which the "Case Sensitive" option for Sort Lines did not affect the Unicode comparison used to determine duplication (the comparison was always case sensitive).

New in BBEdit 11.1.3 (Sep 30, 2015)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • "Convert to Table" now generates and containers when "First Line is Header" is turned on.
  • Fixed bug in which some options in the Text Options sheet were inappropriately enabled for the Find and the Multi-File Search windows.
  • Fixed a performance bug in which status bar items were spending far too much time drawing themselves.
  • Fixed some questionable code in ctags which could be the cause of occasional garbage paths being generated in tags files when using --tag-relative=yes.
  • The --verbose option to ctags will now also print out the current working directory.
  • Fixed bug in which title bar icon drags from FTP/SFTP documents would report an error when trying to drag them into the sidebar of a project window.
  • Made some changes to reduce the overhead involved in deriving a file's encoding from its contents. This will further increase the performance of multi-file searching and other large-batch operations.
  • Fixed crash which would sometimes occur when typing HTML tags (such as ) in the middle of Markdown documents.
  • Fixed bug in which custom highlight colors were applied even when the "Use custom highlight colors" setting was turned off in the "Text Colors" preferences; and related, fixed bug in which turning the setting off did not correctly apply the system text highlight colors.
  • Progress dialogs now remember their positions after having been moved.
  • Fixed a cosmetic bug in Text Factory windows in which buttons in items would be drawn outside of the bounds of the scrolling list of actions (in cases where the list itself was long enough to require scrolling).
  • Fixed bug in which Text Factory list item actions would draw incorrectly when there were enough items in the factory to require scrolling.
  • When making a new FTP/SFTP browser window, the initial state of the "SFTP" setting in the connection panel is now set using the SFTP state of your most recent successful connection.
  • Fixed a bug in which the Markup Builder panel would appear and then immediately disappear.
  • Fixed a bug which would cause syntax coloring of PHP embedded in HTML to get out of whack when making edits in the embedded PHP.
  • Fixed bug in which Subversion revision data was not read correctly from the output of svn cat, which would result in incorrect comparison results in cases where the revision being compared against was UTF-16.
  • Fixed the blurry antialiased blinking insertion point.
  • Fixed bug in which Tab didn't work correctly when typing in a column selection.
  • Added boolval to the PHP keyword list.
  • Color values in language modules and color schemes of the form rgb(r,g,b) are now loaded using the CSS color space (0-255 per value) rather than the legacy preferences range (0-65535). This fixes a bug in which color values written using rgb notation would load as indistinguishable from black.
  • In CSS, decimal numbers without zeroes before the decimal are now detected and colored. Example: .5em
  • IDs in selectors will no longer be syntax-colored as though they were hex colors when they happen to begin with hexadecimal characters. For example:
  • #feature { font-weight: bold; }
  • ... will no longer show the "#fea" as a color.
  • Fixed bug in which the codeless language module loader would warn about BBLMColorsSyntax being turned on but having no keywords, in cases where the language module used the newer (BBLMKeywords) keyword list format.
  • Corrected alignment of edit fields in the "Customize Language Options" panel.
  • In order to work around a crash on OS X 10.11 (22523205), code which loads, saves, and interprets printing options in saved document state has been removed. (It is in fact the case that these settings were never actually used once loaded.)
  • Worked around a bug in OS X 10.11 (22636752) in which the font panel would open and be unresponsive to clicks, or changes in the font panel would not affect settings in the Preferences window.
  • Fixed bug in which the front document window would be left inactive after certain dismissals of the markup panel or file info panel.
  • Fixed a crash which would occur when closing a project window just after it opened, before certain housekeeping tasks completed.
  • Added public.css as a supported content type so that CSS files are seen by the OS as eligible for opening in BBEdit or TextWrangler.
  • Worked around a bug in OS X 10.11 (22872931) in which the application was not notified correctly when files were added, removed, or renamed within folders (Clippings, Scripts, Text Filters, and Stationery).

New in BBEdit 11.1.2 (Aug 14, 2015)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Updated the default worksheet stationery to remove anachronisms and account for current features and behaviors.
  • Fixed bug in which the CSS language module would scan beyond the bounds of a .. pair in HTML documents, leading to unexpected effects.
  • If you use --create (or -c) with the command-line tool but don't specify any files, it will now report an appropriate error and then exit.
  • Fixed bug in which switching between a color scheme which used custom highlight colors (such as a "dark" scheme) and a scheme which did not would fail to adjust the highlight colors correctly.
  • Fixed bug in which "Process Duplicate Lines" on a selection within a document would not correctly include the last carriage return in the selection, leading to an extra line break inserted when replacing the selection with the processed text.
  • Fixed bug in which interactive or scripted "Process Duplicate Lines" operations would leak their results.
  • Git "Remove" operations now pass -r in order to resolve an error when removing directories.
  • Added override and final to the C++/Objective-C++ keyword lists.
  • Fixed bug in which choosing a remote file from the Recent popup under the sidebar in project or multi-document windows would have no effect.
  • Made a change to ensure that keyboard focus is on the text field in single-entry text and password dialogs.
  • Fixed bug in which "Print All" would succeed and then report a -1708 error.
  • Updated the scripting dictionary to include the new options for zap gremlins.
  • Fixed bug in which "Move to New Window" on the View menu was enabled when it shouldn't have been (and did nothing when selected).
  • Display of "rare" font ligatures is now off by default, even when font ligatures are enabled for a particular font. This may be turned on with an expert preference; complete details are in the Expert Preferences help.
  • Characters in the Unicode "CJK Symbols and Punctuation" range are now excluded from being used as break points when hard-wrapping text.
  • Fixed bug in which uncommenting a line with the insertion point at the beginning would cause the insertion point to migrate to the previous line.
  • Added home to the list of values for the a, link, and area elements in HTML5 in order to suppress a warning.
  • "Find in Reference" works again for Ruby. (ri stopped supporting --format=plain.)
  • Fixed bug in which top-level clippings were not listed as available options during text completion.
  • Fixed bug in which keyboard equivalent tooltips weren't displayed in the Find window for the option checkboxes.
  • Turned on the "async drag" attribute for our document windows, to improve compatibility with future OS releases.
  • Fixed (for future compatibility) a layout glitch in the FTP/SFTP connection sheet.
  • Fixed bug in which "Delete Line" would leave the last character on the line if applied to the last line in a document which did not end with a line break.
  • When the differences list has focus in a Differences window, commands on the View -> Text Display submenu will be enabled appropriately and the changes they make will apply to both of the displayed documents.
  • When generating markup for using the Markup Builder panel, BBEdit no longer puts a blank line in between the tags.
  • Fixed bug in which dismissing the Markup Builder panel with a combo box up would leave a phantom combo box on the screen.
  • Corrected a misnaming in the built-in language information for Grep replace patterns.
  • Fixed a suspected bug in the innards of the Text Colors preferences UI, which might have led to some reported crashes.
  • Fixed a lurking horror in some of the code behind the Text Encodings preference pane UI.
  • Fixed bug in which an empty type specifier () would confuse the Java function scanner.
  • Command-clicking on a delimited URL will now properly handle line breaks (and subsequent white space) that may occur in the middle of the URL.
  • Added a BBLMCommentLineDefault key to the built-in Make language module, so that Un/Comment works.
  • "Special" Fortran comment processing is now only done on files which are explicitly either the "Fortran" or "Fortran 77" languages. "Fortran 9x" files are treated as other languages using the standard line-comment processing.
  • Fixed bug in which "Hide Editor" on the View menu was enabled for non-project editing windows.
  • Fixed bug in which "Hide Editor" on the View menu would move the open documents in the project window to a new window in which the sidebar was invisible and couldn't be shown.
  • Fixed bug in which using the Windows palette to close untitled or unsaved documents did not prompt to save them in the appropriate fashion (consistent with using the "Close Document" command on the File menu).
  • Fixed bug in which opening a project which had been closed with the editor view collapsed would reopen it into an inconsistent state.
  • Fixed bug in which making edits at certain points in a very large CSS document would lead to incorrect recalculation of syntax coloring information, with resulting coloring mistakes until the document was closed and reopened.
  • Made a change to improve performance and reduce memory consumption while making automatic state snapshots; this generally shouldn't be noticeable unless you have a tremendous number (hundreds) of documents open.
  • Fixed bug in which attempting to comment (via insertion point placement) a single line in a language for which only block delimiters were available would end up doing nothing. (Examples of this would be HTML or CSS.)
  • Fixed crash which would occur when using "Save As" to save a file whose automatically generated default name was longer than 255 characters.
  • Fixed bug in which sub-line differences computation would take too much time and take too much memory, and crash on extremely large comparisons which would cause it to run out of memory.
  • File comparison for sub-line differences can now be cancelled, in cases where it takes long enough to matter.
  • Fixed a lurking memory leak which would occur after various text transformations and when computing sub-line differences.
  • Fixed a crash which would occur when deleting a large quantity of items from inside of a folder that's represented as an application menu (such as Scripts or Clippings).
  • Fixed bug in which Zip archives in a certain size range were not recognized as such, and so the application would attempt to open them as text files, which would invariably fail.
  • Worked around a behavior in fish (through version 1.23.1) which would cause the application to hang when trying to set up the runtime environment when running #! scripts and filters (whether user-invoked or for internal use).
  • If you are using fish as your login shell, BBEdit will instead use /bin/bash for Shell Worksheets. This works around a behavior in fish which makes shell worksheets unresponsive.
  • Fixed bug in which some commands on the Edit menu were inappropriately enabled in Differences windows when the list had keyboard focus, leading to possible unintentional edits (depending on choice of keyboard equivalents).
  • Fixed bug in which 64-bit builds of the command-line tools did not report errors correctly.
  • Fixed bug in which bbdiff /path/to/new/file /path/to/old/directory/ didn't work.
  • Fixed bug in which codeless language modules with number runs would not correctly recalculate them while editing in some circumstances.

New in BBEdit 11.1.1 (May 29, 2015)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Changes:
  • If a licensed (non-demo) product is in use, a SHA1 hash of the serial number is now included when checking for updates. (Your license code is never transmitted in the clear.) This is done to enable improvements to the software-update experience when using pre-release versions of the product.
  • Fixes:
  • Added nonatomic to the Objective-C/Objective-C++ keyword lists.
  • Fixed bug in which an empty selection range would be passed to AppleScript filters run from the "Apply Text Filter" command, rather than passing the entire text of the document (which is what should be done, consistent with other filter types and the documentation).
  • When generating completions for predefined names, language keywords are now included.
  • Fixed crash which would occur on 10.9 when using "Save As" on a document in the front window, when the window immediately behind was an instaproject.
  • Fixed bug in which custom color schemes were written out incorrectly, so that their settings did not appropriately override built in defaults.
  • Fixed bug in which saving changes to a file in a Zip archive would fail if the file name contained certain combinations of characters which incidentally had special meaning (such as filename wild cards).
  • Fixed bug in which some legacy color schemes were not converted correctly.
  • Fixed bug which would trigger incorrect generation of resolved #relative# placeholders.
  • Fixed -50 error which would be reported when saving an empty file with a text encoding other than UTF-8.
  • Fixed bug in which the "Case sensitive" option for Sort Lines and Process Duplicate Lines did not apply in text factory application unless "Sort using pattern" or "Match using pattern" (respectively) was also turned on.
  • Fixed bug in which certain clipping names (such as !important) could not be autocompleted in CSS.
  • Fixed bug which prevented non-English words from being checked correctly when the system spelling settings were set to "Automatic by language".
  • true, false, yes, and no (case insensitive) are now accepted as respective synonyms for 1 and 0 for Boolean values in EditorConfig files.
  • Fixed bug in which the "title" field in the New HTML Document dialog didn't apply unless you first tabbed out of it before confirming the dialog.
  • The Silverlight plug-in is now blocked from loading, so that it can no longer crash the application.
  • Restored the legacy UseDistinctColorsForHTMLAttributesAndValues expert preference.
  • Made a change so that backslash (\) is allowed as a completion trigger in TeX documents.
  • Fixed a few small memory leaks.
  • Fixed bug in which defaults set by "Save Default Project Window" would override some settings in the project itself.
  • Moved the "Restore Defaults" button up one pixel in the Text Files preferences.

New in BBEdit 11.1 (Apr 29, 2015)

  • ADDITIONS:
  • BBEdit now has built-in support for Git. There is a Git menu in the menu bar, which presents available operations (most of which may only be enabled when the active document corresponds to a file that is in a local Git working copy).
  • The intent is not to function as a full-featured Git GUI, but rather to support common file operations so that you can perform tasks on the file(s) you're working on in BBEdit without having to switch to the command line or a dedicated GUI client.
  • BBEdit now supports the EditorConfig settings file convention. You can learn more about this at the EditorConfig web site.
  • BBEdit supports most, but not all, of the core EditorConfig properties listed here. The end_of_line property is not supported; nor is max_line_length.
  • In addition to the core EditorConfig properties, there are some BBEdit-specific additions. First, BBEdit supports the following keys originating in Emacs:
  • coding: similar to charset, but allows you to specify any IANA character set name.
  • mode: allows you to explicitly specify the language. Many of the Emacs-style mode names work, as long as they correspond to supported languages in BBEdit. In addition, any installed language in BBEdit may be expressed as a mode name by lowercasing its name and replacing spaces with dashes. For example, "Ruby in HTML" becomes ruby-in-html; or "Strings File" becomes strings-file.
  • make-backup-files: set to 1 or 0, determines whether BBEdit makes a backup of the file when saving.
  • backup-inhibited: if present and set to 1, will explicitly suppress the creation of backup files when saving.
  • Finally, there are some keys which are explicitly BBEdit-specific. All of these keys have names that begin with x- in order to prevent collisions with any future core keys. These correspond directly to individual document settings, and if present will override the global preferences:x-typographers-quotes: Use Typographer's Quotesx-balance-while-typing: Balance While Typingx-soft-wrap-text: Soft Wrap Textx-soft-wrap-mode: (string) Must be one of CharacterWidth, WindowWidth, or PageGuidex-soft-wrap-limit: (integer) if the wrap mode is CharacterWidth, specifies the number of charactersx-font-name: (string) the display font namex-font-size: (integer) the display font point sizex-show-invisibles: Show Invisiblesx-show-spaces: Show Spaces
  • Unless otherwise noted, these application-specific keys are all Boolean flags.
  • The Editing preferences have been rearranged slightly, so that "Include dictionary words in completion list" is now properly grouped with the rest of the completion settings. There is a new setting for completion: "Include system text replacements in completion list". When enabled, system-wide Text Replacement triggers (configured in the "Keyboard" system preferences) beginning with the text you typed will now appear on the completions popup.
  • There's a new (dynamic) command on the File menu: "Save All in Window". The factory default keyboard equivalent is Command-Option-Shift-S. This is enabled if any (or the only) document in the front window has unsaved changes; choosing it will save all documents in the front window.
  • Added a couple of alternate forms of bblmAddFunctionToList() to the language module interface to make it easier to write code for the common use case of adding a single function by name.
  • The bbedit command-line tool supports two new options: --append and --prepend. These will append (or prepend, respectively) the piped data to the active document. See man bbedit for more details.
  • Added an expert pref, to suppress following of all URLs in live preview windows:
  • defaults write -app BBEdit DontFollowLinksInLivePreviews -bool YES
  • When this is set, clicking on any link will have no effect, and any URLs returned by remote form loads (such as Twitter's tracking) will not open in a web browser when a live preview is loaded or reloaded.
  • The CSS/SCSS language module is all new. Folding, keyword coloring, function navigation, and completion have all been improved. Various bugs are fixed.
  • Added a new command to the first section of the Search menu: "Search in Document’s Folder" (its title when disabled). When a text document is active in the front window, this command is enabled and will activate the Multi-File Search window with the document's enclosing folder selected as the search location. (The name and path to the folder are displayed in the menu.)
  • The "Arrange" item on the Window menu now presents a submenu with all of the available arrangements. Choosing one will apply it; for any that you use frequently, you can assign a keyboard shorcut in the application's "Menus & Shortcuts" preferences.
  • A new language module for EditorConfig files is now built in, with syntax coloring and section navigation (via the function navigation menu).
  • The INI language module has been rewritten, and provides improved navigation as well as folding.
  • CHANGES:
  • The application will no longer use the TUTX, utxt, or UTF8 HFS file type codes as determinants of the text encoding used inside the document.
  • The single-purpose "Subversion" action bar item has been removed from disk browser and project windows. The contextual-menu items remain.
  • The "Go To Line" panel has been rewritten; and you can now enter a line number of the form "xx:yy", in which the "yy" is a character offset into the destination line. If the character offset exceeds the number of characters on the line, the insertion point will be placed at the end of the line.
  • Changed the "Include" options in the Create Table Shell sheet to read "Add", to make their purpose clearer.
  • The "Go To Next Conflict/Go To Previous Conflict" commands that were on the Subversion and Perforce menus have been consolidated into a single pair of "Previous Conflict" and "Next Conflict" on the Go menu, and will find conflict markers for Subversion, Perforce, and Git in the active document (all three systems use the same conflict marker format).
  • The "Use symbol and text substitution" option has been removed from the Editing preferences as well as from the language-specific settings panel, and the previous behavior (automaticaly inserting substitutions) has been consigned to the dustbin of history.
  • "Rename" in project windows is now retitled as "Rename in Project", and the panel in which you enter the item's new name now makes it clear that renaming it in the project does not affect the item on disk. (It never did.)
  • Subversion contextual-menu commands are now hidden when the selected item(s) are not part of a Subversion working copy.
  • Made some changes to generation and management of preview temporary files (when using Markup -> Preview [in a web browser]):
  • When possible, the temp file is given a name derived from the document's name, and created in the same directory as the document. This way you can preview multiple files from the same directory without them stepping on each other.
  • If the document has not been saved to disk, it will be created in a temporary-items location designated by the OS.
  • It is now possible to preview non-HTML files in web browsers with the same results as live previews ("Preview in BBEdit").
  • Saving or closing the document will delete the preview temp file.
  • When generating a table shell (Markup -> Tables -> Create Table Shell), BBEdit will now generate and containers if "Add table header" is turned on.
  • "Move Lines Up", "Move Lines Down", and "Delete Lines" are now enabled for multi-line selections, even when the selection does not end on a line break. (Whole lines are still moved or deleted.)
  • Changed the way we launch Dash so that it can decide whether it wants to be in the foreground, or not.
  • The File -> New -> HTML Document dialog box has been modernized, mostly to work around OS cosmetic bugs.
  • If a project is open which contains site settings, File -> New -> HTML document will take its initial values from those settings.
  • Removed vestigial "Change clipping set to match document's language" from the Languages preferences.
  • The fourth command on the Search menu is now always "Search in Project or Disk Browser" (its title when disabled). It is only available when a project or disk browser is the active window, and when enabled displays either the project's name or the root directory of the disk browser. Selecting this command will activate the Multi-File Search window with the appropriate item selected as the search location.
  • The previous "Arrange" item on the Window menu has been renamed to "Cascade Windows" to describe what it does. The modified version to "Tile Two Front Windows" remains available, on the Arrange submenu.
  • Sub-line differences in Differences results windows now get a heavy underline using the color scheme's "Plain Text" color, which should be easier to read under a wider variety of circumstances than before.
  • FIXES:
  • Fixed a bug in which a memory error would occur when trying to undo after backspacing over a printable character immediately adjacent to one or more combining (or other zero-width) characters.
  • Fixed crash which would occur in situations where the Application Support/BBEdit/Setup folder didn't exist and couldn't be created.
  • Messed with the control flow in keyboard input so that keys that we don't explicitly handle will cause an error to be returned to the OS, such that it redispatches they keyboard gesture as needed. Among other things, this allows the Escape key to exit full-screen mode; as long as you have turned off “Emulate Emacs key bindings” in BBEdit’s Keyboard preferences.
  • Fixed crashes and other misbehaviors that would occur when attempting to use the Setup window, but the permissions on your Application Support/BBEdit/ folder were so b0rked that the Setup folder couldn't be created.
  • The "Setup" command and other commands that route to it (e.g. "Manage Bookmarks", "Manage Patterns", "Manage File Filters") are now disabled if the Setup folder is unusable (per the above).
  • Removed the file filter for the Hex Dump file picker; previously you could hold down the Option key to enable any file type, but nobody knew that.
  • If a button in the Find or Multi-File Search window has no keyboard equivalent, it will now show no tooltip (instead of an empty one).
  • Fixed a bug in which the "untitled N" count would be wrong after restoring application state which involved untitled documents.
  • Fixed bug in which New -> Shell Worksheet would always make a new window for the worksheet document, rather than putting it into the front document window if the preference so indicated.
  • Fixed bug in which syntax coloring was disabled in Perforce commit form windows.
  • Fixed a bug in conversion of the old .bbcolors color scheme format, which would lead to occasional incorrect color choices when using those schemes after conversion.
  • Legacy color schemes (which don't contain settings for a great many of the new color types introduced in 11.0) are now updated to include reasonable default settings for colors that they didn't previously specify. The defaults are drawn from the factory "BBEdit Light" or "BBEdit Dark" color scheme, depending on whether the color scheme being converted is likewise light or dark.
  • Fixed crash which would occur when attempting to quit the application (usually via a system-wide Log Out, Restart, or Shut Down command) while it was in the middle of restoring previously saved state.
  • Fixed bug in which "Find All Misspelled Words" would fail to do so.
  • Fixed bug in which editing inside of a PHP heredoc string would result in it being colored incorrectly.
  • Made a change to prevent the Pretty Print format option from inserting line breaks before or after tags occurring within a ... tag pair.
  • Adjusted the default comment delimiters for Lasso.
  • Fixed bug in which the wrong error was reported when trying to apply a Unix filter whose #! line pointed to something that didn't exist.
  • Fixed bug in which --resume didn't work in the bbedit and bbdiff command-line tools.
  • Fixed crash which would occur when the HTML syntax checker attempted to validate a valueless attribute.
  • Added a color setting for Perl POD sections. The built-in color schemes have been updated; if you are not using one of those, then you will need to manually update your own color scheme with the new setting.
  • Made an adjustment so that non-zero-width Unicode combining characters are no longer drawn as invisibles.
  • Fixed bug in which Xcode project enumeration would miss files contained in internally generated project groups of a previously unobserved type.
  • Fixed bug in which using the "Hard Wrap" sheet would not scroll the selection range into view after wrapping completed, which was a problem when wrapping with the insertion point at the end of a very long line.
  • Fixed cosmetic in the Subversion "choose a working copy" dialog boxes when no previous WC had been chosen.
  • When interpreting image metadata, unprintable characters are now stripped out of the comment string, to avoid cases in which images with junk metadata caused generation of a junk alt attribute in the markup panel.
  • Fixed bug in which SGML unparsed character data (CDATA) sections were colored using a distinct color for which no setting was available. The default color for CDATA sections is now the same as the foreground text color, and may be changed via the "SGML unparsed character data (CDATA)" setting under "General" in the Text Colors preferences. The factory supplied color schemes have been updated accordingly.
  • Markup tools batch operations (Check Syntax, Check Links, Update Placeholders, Update Images, and deployment) will now skip over temporary files that have been generated for browser previews.
  • Fixed bug in which the CSS "Text" panel would inappropriately rewrite the value for the text-align property, as text-align.
  • Fixed bug in CSS box-model markup which would cause incorrect generation when entering a value in the "all sides" field.
  • Tabs in search results text are now replaced with nonbreaking spaces when being displayed in the results list.
  • Using -- to end option parsing in the command-line tools now ends it for all options, not just options beginning with a single hyphen.
  • Negative values for line number increments (in Add/Remove Line Numbers) no longer become unsigned.
  • Corrected error reporting when deleting a single item fails in an FTP/SFTP browser window.
  • The text factory options for directing the output of Process Duplicate Lines in a text factory to the clipboard or a new document are now correctly disabled.
  • Fixed bug in which both function menus in a Differences results window would display the functions in the document which had keyboard focus.
  • Fixed bug in which the HTML pretty printer would strip empty attribute values.
  • Fixed bug in which comparing two documents for which a Differences window was already open, but the comparison was in a different new/old order, would inappropriately bring that window to the front instead of creating a new Differences window.
  • Fixed bug in Grep search pattern coloring in which character escapes and metacharacter sequences were not colored when used inside of character classes.
  • Fixed bug in which the CSS "Format" command would damage the contents of @rules which contained comments.
  • Fixed a small bug in the Javascript language module. Auto-folding would get confused if you compared something with the Function keyword using the === operator.
  • Added rem, vw, vh, vmin, vmax units (where applicable) to the CSS markup dialogs.
  • The "file is open" test for filtering during multi-file search and text factory operations is now deferred until later in the testing process, which might help improve performance in situations where an extremely large number of documents is open.
  • Made a change to further improve file filtering performance for multi-file search and Text Factory application, by ruling out image files and "audiovisual" content (sound files and movies) when "Text Files Only" is turned on.
  • Added try and except to the Object Pascal keyword lists, and the function scanner now recognizes them for purposes of maintaining block structure.
  • Fixed bug in which modifications of Return or Enter would do things in the "Insert Clipping" panel other than insert clippings.
  • Removed some obsolete items from the Expert Preferences help, and made a couple of layout fixes.
  • Fixed bug in which the Current Function item in the navigation bar didn't correctly update its width when switching between documents.
  • Fixed case errors and omissions for some subsets of PHP predefined names.
  • Worked around a bug in OS X 10.10 (18930264) which would cause historical backups to fail if the BBEdit Backups folder was a Finder alias to some other location.
  • Fixed a layout glitch in the sheet for customizing per-language editor settings.
  • Added an empty string as BBLMCommentLineDefault for HTML and related languages, so that customizing any per-language settings no longer breaks Un/Comment of a single line.
  • Fixed bug in which using "New Project…" to create a new project over an existing one would report a -48 error.
  • Adjusted the colors used for sub-line differences results to be derived from the actual highlight colors, rather than simply flipping the active and inactive colors.
  • OS X 10.10.3 fixes the "creeping file panel" problem (18785168), so our internal workaround for same is limited to 10.10 through 10.10.2.
  • The Un/Comment command now special-cases Fortran, and will preserve the column spacing at the beginning of the line when adding or removing the comment character.
  • Fixed bug in which the display in the Keyboards & Shortcuts preferences wouldn't correctly update when changing shortcuts in some situations.
  • If you put a ridiculous value into the wrap limit field for the Hard Wrap dialog, it will now be clipped to something else ridiculous rather than overflowing to a negative value.
  • Live-flashing navigation with the arrow keys no longer causes the Text Statistics status item to change during the live highlighting of matching parentheses.
  • Fixed bug in which dragging text into or within one of the fields of the Find or Multi-File Search windows would have unintended results.

New in BBEdit 11.0.3 (Mar 6, 2015)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Made a change to the internal "Replace All" mechanics to improve performance by a factor of two (results may vary).
  • Any unprintable characters in the ASCII range are now drawn as inverted red question marks, whether or not "Show Invisibles" is turned on. This will help reduce confusion when working with files that contain many such.
  • Zero-width Unicode characters are now drawn as a gray vertical bar when "Show Invisibles" is turned on.
  • Typing in the search box in the "Go to Named Symbol" panel will now select the first matching item.
  • Fixed bug in which the HTML syntax checker would sometimes report false positives for duplicate id attribute values.
  • When saving an existing file to disk, if the file being written already has a correct HFS file type (whether it needs it or not), the file type is preserved, which prevents the OS from arbitrarily changing the document icon and/or refusing to show QuickLook previews.
  • Fixed bug in which text transform scripting verbs would not return their output to scripts run from the built-in Scripts menu.
  • Updated the built-in list of VectorScript predefined names.
  • The PHP language module will now stop scanning when it encounters a __halt_compiler(), to avoid potentially getting confused by any subsequent binary data.
  • When mapping file names to languages, all extensions are tested before attempting to use exact or wildcard file name matches. This results cases such as the one in which a file named Makefile.pl is inappropriately mapped to the Makefile language instead of Perl due to the order in which language modules are queried for file name matches.
  • Fixed crash which would occur when cancelling "Create Bookmark", "Go to...", or "Create Directory" in the "Save to FTP/SFTP Server" dialog, or when cancelling "Create Bookmark" or "Go to..." in the FTP/SFTP browser. Shhhh!
  • Fixed bug in uncommenting of line comments on a single line containing the insertion point (or when the selection range did not include a trailing line break).
  • Fixed bug in which attempting to save a zero-length file with Windows line breaks would report a -50 error.
  • The path controls in the Find Differences dialog box now have tooltips when appropriate.
  • Adjusted the "is text file" content check to pre-emptively rule out Photoshop files, which look enough like text files internally to pass the test. Any file which has a nonzero HFS file type that is not 'TEXT' or a relative is now ruled out in the "is a text file" test, in advance of any content checking. Together these two changes will prevent multi-file searching from finding text in files where it shouldn't.
  • Made some changes to make the default list of preview helpers more useful.
  • When examining a file to determine whether it is a Zip archive (for opening as well as when searching), BBEdit will first examine the file's UTI (Uniform Type Identifier) information; and if the UTI does not indicate that the file might be a Zip archive, filtering ends at that point. In some cases, this can lead to files being skipped that are in fact Zip archives, but which don't have conforming UTIs. To solve this problem, you can disable UTI checking:
  • defaults write com.barebones.bbedit InspectUTIWhenFilteringZipFiles -bool NO
  • Note: Disabling UTI inspection means that BBEdit will always have to open the potential Zip file to inspect its contents. This will slow down batch operations such as multi-file search/replace, text factory application, and file filtering for projects and disk browsers when the directory being processed contains a lot of files that are potentially Zip archives (and not previously determined to be text files).
  • Fixed a bug in the Ruby module which would cause incorrect generation of fold points if an iterator ended with a "trailing if" or "trailing unless", such as:
  • a = b.c.select { |d| foo(d) unless d == nil }
  • ctags file discovery will now ignore "tags" files found inside of git and Mercurial repository data directories.
  • Fixed a bug in which the C/etc function scanner would get confused by #defines with comments and character escapes in them.
  • In order to add callouts to a PHP document, you had to use all-caps. For example:
  • #MARK these words appear in the function popup
  • That's been fixed so that all of the call-out markers can be UPPER CASE, lower case or MiXeD caSE.
  • The full set includes: fixme, fix-me, mark, note, nyi, review, todo, to-do, xxx, ??? and !!!. Any of them may have a single, optional colon at the end, before the space and the text to appear in the function popup.
  • Fixed a bug in the PHP callout parser which resulted in the selection range being set one character short of the full callout. (When you choose a callout from the function popup, it selects the text of the callout but was missing the last character.)
  • The "Automatically refresh documents as they change on disk" setting in the Application preference was changing the wrong preference, so it had no effect.
  • Made a change to the improve the chances of the application reloading documents from disk which are being written to multiple times per second by an external process.
  • Put some code in bbedit and bbdiff (and edit/twdiff) to fix a case in which the --wait flag didn't work when the application needed to be launched.
  • Fixed a bug in which double-clicking on an HTML/XML tag edge to select the CDATA contents would incorrectly contract the selection if the BalanceIncludesDelimiters expert preference was turned off (as is the default).
  • Updated the keyword lists for C++ and Objective-C++ to include some previously missing C++11 keywords.
  • Fixed bug in which application state restoration would not properly restore the window grouping of untitled documents.
  • FTP/SFTP browser windows that get opened as part of state restoration will no longer block with the connection sheet in cases where a local SSH public key is found at ~/.ssh/user@host.
  • Added readonly and readwrite to the keyword lists for Objective-C/Objective-C++.
  • Fixed crash (radar 19971151) which would occur when pasting many (more than a few) lines of text into a field in the text factory Replace All options dialog and then dismissing it.
  • Multi-line text in the text factory Replace All options dialog is now normalized so that the line breaks escape to "\r" rather than "\x{0A}".
  • Fixed bug in which the runtime environment for #! scripts run from within the application get set up with an empty variable (both name and value). This in turn broke numpy, so that Python scripts using it would fail when run from within the application.
  • When "Include row headers" and "Include table header" are both turned on, Create Table Shell (Markup -> Tables) will now add an extra container at the beginning of the table header, to preserve alignment between the header columns and the rest of the table.

New in BBEdit 11.0.2 (Dec 17, 2014)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Added some code to work around a bug in OS X 10.10 and 10.10.1 (Radar 18785168 and 18701840) in which the height of the Open and Save panels would creep by 22 pixels each time, until the bottom edge of the panel was off screen and inaccessible.
  • Note: This change will not automatically return the Save and Open panels to their default size; instead, it will prevent these panels from growing out of control again after you have reset them. In particular, you can restore the Save panel to its default size by issuing this Terminal command:
  • defaults delete com.barebones.bbedit NSNavPanelExpandedSizeForSaveMode
  • Fixed the cause of a hang in the YAML module and in the process improved the detection, folding and scanning of block literals. So this should now work correctly:
  • - foo: |
  • here's the value
  • of the block literal
  • it might be multiple lines long
  • and any YAML syntax within it
  • should be ignored
  • Block literals in YAML documents are now syntax-colored as strings instead of as comments.
  • Fixed crash in the Lasso function scanner which would occur when interpreting an include_url directive with nothing between the quotes.
  • Fixed a class of memory leak in some of the built-in language modules. This would particularly affect performance and memory consumption on extremely large YAML files.
  • "Go Here in Terminal" is now faster and works better.
  • Fixed bug in which documents opened via FTP/SFTP were unconditionally opened as UTF-8, which would result in an error being reported if the document was actually some other encoding and contained characters that weren't valid UTF-8.
  • The factory language modules are now in a subdirectory of the PlugIns bundle directory. This is to work around a bug in code signing, in which the --deep option doesn't actually check signatures of things that aren't in approved subdirectories of Contents.
  • Made some internal changes to further improve the performance of filename extension to language mapping at run time, which in turn will further improve the performance of text file filtering when opening, browsing, and performing batch multi-file operations.
  • Fixed a multi-file processing performance bug in which file contents were being examined for text-ness even when the file itself would then fail to match a user-supplied file filter. File contents are now only examined for text file filtering as an absolute last resort.
  • Fixed a bug in the Markdown scanner where it would hang if you inserted a tab before a blockquote marker '>', but only if you'd had three or more cups of coffee at a small diner within the last week.
  • Fixed crash which would occur sometimes when editing per-language enabling for clipping sets in the Setup window.
  • You can now use the Escape key to close the Setup window, if desired.
  • When using the search box in the Clippings floater or the Insert Clipping panel, the first match is now selected so that you don't need an extra step to confirm if that is the one you want.
  • If the application is unable to create the necessary auto-save data folders, it will now alert you when starting up, rather than allowing the operation to silently fail (and cause a runtime exception when attempting an auto-save for crash recovery).
  • Fixed crash which would occur when trying to interpret certain types of malformed markup while right-clicking in a tag or using the "Edit Tag" command.
  • Fixed crash which could occur when toggling Show Line Numbers or Show Gutter in the Appearance preferences.
  • Fixed bug in which Find Differences results windows didn't use the correct highlight colors for selected differences.
  • Fixed crash in the Pascal function scanner which would occur in some cases when it was asked to process a file that was most assuredly not Pascal source code.
  • Fixed text rendering bug which would occur with certain font and size combinations (usually when both the font size and the number of spaces per tab was small).
  • The text generated by the "New HTML Document" command is now detabbed if the "Auto-expand tabs" preference is turned on.
  • Holding down the Option key while clicking an "x" widget in the Windows palette will now close all windows (or documents, depending on which "x" you clicked on).
  • Fixed bug in which applying a sub-line difference would modify the wrong range of text.
  • Restored "Capitalize Sentences" to working order.
  • Fixed bug in which the "Next Occurrence of/Previous Occurence of" commands on the Search menu would not update correctly when selecting text for which only a single occurrence was present in the document.
  • Fixed a performance bottleneck in some of the more compute-intensive text transformations, and Process Lines Containing, Process Duplicate Lines, Sort Lines, and Zap Gremlins will now operate about 40% faster.
  • Corrected the appearance of the progress bar overlay in the application dock icon (used for operations which display a progress dialog), so that it now updates correctly as the operation progresses.
  • Changed the ordering of extension mappings for the "Text File" language so that initial saves of such documents no longer select ".csv" as an extension.
  • Made a change to improve the performance of content-based text encoding detection in text files. This will reduce the amount of time required for large multi-file batch operations (such as search/replace, Find Differences, and text factory operations).
  • Made a change to improve directory scanning performance during a Find Differences folder comparison.
  • The popup menu next to src and href (and similar) attributes in the Markup Builder panel will now make a more educated guess as to which directory to inspect, based on what's currently entered into the attribute's value.
  • Fixed bug in which text in Search Results lists could wrap when printed.
  • Fixed bug which silenced the Emacs beginning-of-buffer and end-of-buffer keyboard gestures.
  • Made a refinement to the automatic "Highlight instances of selected text", such that if the insertion point is on the left side of a word, all occurrences of the word are highlighted (using a word-sensitive search).
  • The application now remembers the state of "Show Palettes"/"Hide Palettes" when the application quits, and will restore that state (including the list of palettes that were hidden at the time) when the application is restarted.
  • Fixed bug in which uncommenting lines by removing the Line Comment delimiter would not uncomment lines in which there was no whitespace between the comment delimiter and the rest of the line.
  • Fixed bug in which attributes with empty quoted values would end up with a null character in between the quotes after applying the Format tool.
  • Fixed bug in which the "Include File Separators" check box (in the Insert -> File Contents dialog box) was ignored.
  • Made changes to reduce the transient memory needs of the internally factored text transformations (Zap Gremlins and others), which will help reduce the incidence of out-of-memory errors from occurring when applying these transforms to very large documents.
  • Made a change to reduce the amount of transient memory required by line ending conversion when saving files with Windows line endings.
  • Made a change so that the documentDidSave attachment script is called as the very last step, most notably after re-enabling file observing, so that if the attachment makes any changes to the file on disk, it will get reloaded.
  • Fixed bug in which the Strict Hierarchical formatter would unconditionally left-justify pre, textarea, script, and style tags.
  • The user manual is now downloaded using https, and the world is once again safe for democracy.
  • Fixed bug in which clicking in either document-view panel of a Find Differences window would cause the list of differences to scroll to the top.
  • Fixed bug in which the HTML syntax checker would report errors for correctly formed attributes whose required value was "empty", that is, the presence of the attribute itself was the correct syntax.
  • Restored code which ensures correct text layout if the legacy OS AppleAntiAliasingThreshold preferences key is present and specifies a text size larger than the current display font size.
  • Results list windows now honor the list font settings, just like the manual says they do.
  • Fixed bug in which URL-unsafe characters in "Find in Reference" input were not properly decoded by the internal reference handlers for Perl, Python, and Ruby.
  • Fixed bug in which "New Line After Paragraph" would leave the insertion point in the wrong place in soft-wrapped documents.
  • Made some changes to the license panel so that when random junk surrounding a serial number is pasted in, it gets stripped off leaving only the serial number.
  • "Convert to Table" now generates the correct output when the input does not end with a line break.
  • Fixed bug in which scripted position changes to palettes containing toolbars (such as the Clippings palette) would progressively shorten the palette by the height of the toolbar.
  • Fixed crash which could occur while editing within syntax-colored documents in some edge cases.

New in BBEdit 11.0.1 (Nov 11, 2014)

  • Fixes:
  • Fixed bug in which the credits text in the About box was editable (though by rights it should not have been).
  • Text smoothing for Monaco is no longer unconditionally suppressed.
  • If you want to unconditionally disable text smoothing for a specific font, you can now accomplish this with an expert preference:
  • defaults write com.barebones.bbedit DisableFontSmoothing_FONTNAME -bool YES
  • where FONTNAME is the display name (in the font panel or Font Book) of the font for which you want to disable smoothing. For example:
  • defaults write com.barebones.bbedit DisableFontSmoothing_Monaco -bool YES
  • will disable font smoothing for Monaco. The Expert Preferences help has been updated accordingly.
  • Fixed crash which would occur when trying to apply a color scheme that had been converted from a legacy format.
  • Reworked some internals in the SGML/HTML parser to improve reliability and fix a reported (but non-reproducible) crash.
  • Made an additional change to reduce the transient memory requirements of the SGML/HTML parser, particularly on very large documents.
  • Fixed bug in which completions in language modules would include all predefined names, rather than just the ones which matched the partial entry.
  • Fixed bug in which "Balance" did not correctly shim through to "Balance Tags" for "PHP in HTML" and "Ruby in HTML" documents.
  • Corrected a problem with the in-app purchase mechanics which prevented placing orders from the license panel.
  • Increased the maximum allowed parenthesis nesting depth in the PHP function scanner.
  • Fixed bug in which the positions of the HTML markup palettes were not being correctly restored when starting the application.
  • Put a workaround in place for a cosmetic bug in which icon menu titles (Subversion, Clippings, and Scripts) were drawn incorrectly on OS X Yosemite when "Use dark menu bar and Dock" is turned on. However, due to a bug in the OS itself, the menu titles will continue to be drawn with the incorrect appearance.
  • In other words, we were doing it wrong before, but now we're doing it right, but because of a bug in the OS, it still looks like we're doing it wrong. More background here.
  • Added ellipses to the "Preferences" and "Setup" menu commands, because some people just want to watch the world burn.
  • Turning off the Subversion menu now not only hides the Subversion button from the window sidebar, it also allows the sidebar to get narrower (by the amount of space taken up by the button).
  • In the language module API, kBBLMResolveIncludeFileMessage has been renamed to kBBLMCreateURLByResolvingIncludeFileMessage, so that it's clearer that your module needs to return a CFURLRef (or NSURL) with the expectation that it will be released.
  • Made a change to reduce the amount of time required to restore sleep state at startup.
  • The dialogs-for-scripts feature (documented here) now works as intended for #! scripts and Unix executables when you run them from the Scripts menu.
  • Fixed bug in which completion in Ruby and SQL source files didn't inspect the file's contents for eligible completions, as it should have done.
  • Added an expert preference to suppress separators in Unix script output:
  • defaults write com.barebones.bbedit UseSeparatorsInUnixScriptOutput -bool NO
  • Fixed bug in which "Capitalize Sentences" would fail when applied to text containing blank lines or lines consisting entirely of whitespace and/or word-break characters.
  • Fixed bug in which the cache of known ctags files was not stored in cases where the application-specific folder in ~/Library/Caches/ didn't exist.
  • Although we can't stop the system from using giant icons in the Counterparts menu when it really wants to, we can still ask it nicely to not do that.
  • Fixed bug in which Spotlight-based tags file detection would inappropriately include things named "tags" that weren't actually files.
  • Fixed bug in which really old-format color schemes (predating BBEdit 9) were not converted correctly.
  • In order to correct the symptom after updating, look in your BBEdit Application Support/Color Schemes/ folder for any files whose name ends in bbcolors. You will find a file with the same name, but with the bbColorScheme extension. Delete the bbColorScheme file and relaunch the application.
  • Fixed regression in which Control-underscore (ctl-_) didn't perform an Undo when "Emulate Emacs key bindings" was turned on.
  • Corrected missing colors for some Perl constructs.
  • Fixed bug in which the application did not correctly come to the foreground after completing a comparison started with the bbdiff command-line tool.
  • Fixed bug in which the Prefix/Suffix Lines would fail to remember settings that had been cleared to empty strings.
  • Fixed bug in which manually changing a single color setting while a color scheme was selected would not take effect. (Changes after the first one would work, though.)
  • Fixed crash which would occur when configuring a Prefix/Suffix text factory action and one of the fields was left blank.
  • Fixed bug in which Subversion working-copy dialogs didn't remember folders that were chosen while using those dialogs.
  • Updated the Expert Preferences help to include UseTabKeyAsCompletionTrigger.
  • Fixed bug in hex-color and number coloring in the CSS language module.
  • Fixed bug in which out-of-memory conditions in the HTML/XML function scanner (which also generates folds) weren't caught when they occurred (when opening giant files).
  • Fixed bug in which the PHP in HTML and Ruby in HTML language modules did not properly declare that certain runs were eligible for spell checking.
  • Made some improvements to the path shortening used in Differences results windows.
  • Fixed bug in which Grep patterns listed in the Setup window could not be reordered.
  • The Find Differences dialog box now correctly adds directories being compared to the Open Recent list, and fixes a bug in which previously used locations would sometimes be forgotten.
  • Right-clicking in a CSS/SCSS document no longer triggers an error alert if a parsing error occurs.
  • Fixed bug in which the sidebar width for project documents was not restored as it should have been when opening the project.
  • Fixed bug in which the sidebar in editing and project windows would grow and shrink when the window width changed.
  • Fixed bug in which certain constructs in C source files were not colored correctly if they followed a number without any intervening whitespace.
  • Fixed hang in Markdown scanner when a document started with blank line, a >, and a tab. (But only on new moons in August and October)
  • Fixed a bug in the syntax coloring of Markdown documents, where text would be colored as though it were PRE formatted, when in fact the indentation was not enough to trigger that formatting. Not that whitespace is significant, because we all know it's not. But we'll pretend.
  • Fixed a bug in which Markdown link text in list items was not colored as it should have been.
  • The default internal character classes now include word characters that lie outside of the normal US-ASCII range; among other things this allows text completion to work in documents where the language is other than "none".
  • Corrected appearance of status and navigation bar popup menu items on retina displays.
  • Fixed bug in which the "OK" button in the options for Process Lines Containing, Sort Lines, and Process Duplicate Lines text factory options was disabled when it shouldn't have been.

New in BBEdit 11.0 (Oct 23, 2014)

  • Additions:
  • The results windows for Find Differences are all new. Among other things, the old three-window presentation is gone, replaced by a single window which shows both old and new files at the same time, along with the diff list.
  • When two folders are compared, the sidebar on the left shows the hierarchy of files and folders that are different. The "Only in Old" and "Only in New" lists are gone; instead, each pair of icons indicates whether an item is missing from one or the other. If so, the arrow on the right-hand side of the item can be used to copy the file or folder over to replace the missing item.
  • In the sidebar of a multi-file Differences window, you can click on a file or folder icon to ask the OS to open it. Hold down the Option key to reveal it in the Finder instead; or hold down the Command key to open the item in BBEdit (even if the OS would open it in some other application).
  • The Differences window also supports a "widescreen" layout. Although there is no UI for changing the layout at this writing, you can do so through the scripting interface:
  • set widescreen of differences_window 1 to (not widescreen of differences_window 1)
  • "Save Default Window" also works for Differences window, so if you prefer the widescreen layout, you can use the script to change it, then "Save Default Differences Window" to make it the default.
  • There's a new feature: "Highlight instances of selected text". When you select something (that doesn't consist entirely of whitespace or punctuation), all of the occurrences of the selection are underlined; and the new pair of commands on the Search menu ("Next Occurrence of ", "Previous Occurrence of ") can be used to navigate the occurrences. (This navigation is independent of the text searching UI, although the string is added to the search history for convenience of future use.)
  • This feature can be turned on or off globally in the Editing preferences; there is likewise an adjustment for the delay before the highlighting is done.
  • The Clippings mechanics have been enhanced and reworked, as follows:
  • The concept of "the active clipping set" is now inoperative. Clippings can now be available from multiple sets, as desired. By default, all of the clippings in a given set are now available at all times, unless the clipping set's name maps to an installed language. In that case, the clippings from that set are available only when the effective language in the active document matches the clipping's language.
  • This is only the default behavior: you can manually enable clipping sets for any set of languages, by using the "Clippings" item in the Setup window. Select one or more listed clippings sets, and click "Edit Enabled Languages" (or double-click the selected items) to edit the languages for which the set(s) are to be enabled. Within the "Edit Enabled Languages" panel, you can select multiple languages and turn them on or off at once.
  • There is no more special treatment for the "Universal Items" set. Like all other clipping sets in the new order, it is automatically enabled for all languages by default; you can change this in the Setup window as described above. Instead, any clippings placed loose in the top level of the Clippings folder are all available, at all times.
  • The Clippings floating window has been reworked. It is now a single column wide (no more Universal Items) and lists all of the clippings from all available sets. There is no hierarchy given to the clippings; they are listed in alphabetical order. A search box at the top is available to help you filter things down. The "Insert Clipping" command, rather than bringing up a separate modal panel, now brings up the Clippings window, with the keyboard focus in the search box.
  • Clippings completion works pretty much as before; completion options are now chosen from all of the available sets rather than just a single active set.
  • "Zap Gremlins" has been extended to provide the option to use ASCII equivalents when replacing gremlins with the character code (thus replacing the old "Convert to ASCII" command), as well as an option to replace gremlins with HTML entities.
  • Added rebeccapurple (#639) to the list of built-in CSS colors (and to color strings known to the HTML checker), per http://meyerweb.com/eric/thoughts/2014/06/19/rebeccapurple/ and http://lists.w3.org/Archives/Public/www-style/2014Jun/0257.html.
  • Added two new commands to the Edit menu for text views: "Select Up" and "Select Down". These commands facilitate rectangular selection via the keyboard. (Their factory defaults are Control-Shift-uparrow and Control-Shift-downarrow but can be changed as usual in the Menus & Shortcuts prefs.) Given either a single-range selection (that does not cross a line boundary) or an existing rectangular selection, "Select Up" and "Select Down" will extend the selection range up (or down, respectively) in the same column, thus creating (or extending) a rectangular selection.
  • These commands are disabled if soft wrapping is turned on in the view.
  • There's a new button in the Find and Multi-File Search windows: "Extract". This button (backed by a command on the Search menu, so you can assign a keyboard equivalent to it) will locate all occurrences of the search string (across multiple files, if appropriate) and those occurrences will be collected into a new untitled text document, separated by line breaks.
  • It is now possible for #! text filter scripts to present a dialog box allowing the user to specify arguments to the filter (which the filter script may then use to modify its operation on the input). This is done by creating a Cocoa nib file in Xcode, and placing it in a specific location relative to the script being run (namely, "../Resources/.xib"). It is necessary to follow certain specific rules when creating the nib. A separate metadata property list ("../Resources/-arguments.plist") may be included in order to specify the format of arguments on the command line. Complete information is available in the "Using nibs for #! script parameters" technical note.
  • When a Differences window is active, the "Next Error" and "Previous Error" commands on the Go menu change to "Next Difference" and "Previous Difference", and can be used to navigate even when the differences list does not have focus.
  • Preview windows get a new navigation bar item: "Media". This allows you to change the preview's media type on the fly, to aid in evaluating any CSS media queries.
  • The "Text Colors" UI has been overhauled to allow for extended colors (and some new core color types have been added).
  • The format of color schemes has changed. Existing color schemes will be converted; note, however, that the new color schemes have many more color settings. Any missing color settings will use factory defaults.
  • The syntax coloring internals have been extensively reworked. Run kinds (used to determine colors) can now be extended by language modules, with each run having a default color and enough metadata to drive the prefs UI. Thus, language module developers are no longer limited by the set of built-in colors.
  • Note: This rework required incompatible changes to the language module plug-in API. Existing compiled language modules will not load, and will need to be updated. Codeless language modules are not affected by this change (but should be updated to take advantage of additional features enabled by the new architecture, as spelled out in the change notes below).
  • A complete description of the changes to the language module interface (relevant to developers of both compiled and codeless language modules) may be found in the "BBEdit 11 Language Module Changes" technical note.
  • Because PHP can appear in one of two contexts, recognition of PHP has been split between two languages: "PHP", which is used only for "raw" PHP source, and "PHP in HTML", which describes PHP embedded in HTML documents. This should clear up some of the confusion which occurred from having PHP-in-HTML documents sometimes following PHP rules, and sometimes following HTML rules (particularly where clippings are involved).
  • Note: If you had previously made changes to the filename extension mappings to explicitly map PHP extensions to "HTML", or HTML extensions to "PHP", you will be well served by clearing those mappings and allowing the factory defaults to prevail.
  • When a non-empty shell worksheet is active, the "Export" command is available as "Export to Text", and can be used to save a text-only representation of the worksheet's contents.
  • @YES, @NO, @true, and @false are now colored as keywords in Objective-C documents (the latter two only in Objective-C++).
  • Objective-C numeric literals (e.g. @12345) are now colored as numbers in Objective-C/Objective-C++ files.
  • Added __objc_yes and __objc_no to the keyword list for Objective-C/C++
  • Added @import to the keyword list for Objective-C/C++
  • Added nullptr to the keyword list for C++ and Objective-C++.
  • Added instancetype as a keyword for Objective-C/Objective-C++.
  • There is a new expert preference: PrecomposeUnicodeWhenPasting. This is useful in situations where you frequently bring in text that contains combining Unicode characters from external sources (such as PDFs generated on other platforms), and need to crush two combining characters into one composed character where possible. This is not a generalized need, but if you run into it often enough, turning on the expert preference will save you some work:
  • defaults write com.barebones.bbedit PrecomposeUnicodeWhenPasting -bool YES
  • (Despite the name, the precomposition is done when BBEdit imports the Clipboard from other applications, not when the paste is actually done.)
  • Note that this requires an additional copy of the Clipboard when the application imports the text, and for very large pastes, there may be a noticeable delay while the text gets precomposed. Thus, you should only turn on this setting when you are frequently working with text that contains combining Unicode characters.
  • The UI for "Save Scheme" in the Text Colors preferences has been enhanced: there's now a pop-up menu so that you can choose the name of an existing color scheme if you want to overwrite it. (You'll be warned before overwriting an existing color scheme, though.)
  • Added color settings for verbatim sections and math strings in TeX documents.
  • There are now several built-in factory supplied color schemes. These may be used as-is, according to your preference, or you can select one, customize it, and use "Save Scheme" to create your own modifications (which are stored in the Application Support/Color Schemes/ folder, as usual).
  • The "BBEdit Light" color scheme is now the factory default. This is applied when you start up with no existing preferences (including any migrated from TextWrangler), or when you use the "Reset to Defaults" button in the Text Colors preferences.
  • The factory default colors from pre-11 versions are provided as "BBEdit Classic".
  • When you use "sudo" in a shell worksheet, you'll now be prompted (if necessary) to enter your password. Thus, there's no need to manually use the "sudo" mode in the worksheet if you don't want to for some reason.
  • You can now turn on font ligatures with an expert preference. This allows enhanced text rendering behavior in certain fonts, such as the work-in-progress Hasklig font which uses ligatures to enhance the display of compound-character Haskell operators.
  • Ligatures may be enabled or disabled per font based on the font's display name. So, if you wanted to enable ligatures only for the Hasklig font, you would do it thusly:
  • defaults write com.barebones.bbedit EnableFontLigatures -bool NO defaults write com.barebones.bbedit EnableFontLigatures_Hasklig -bool YES
  • The font's display name is the name as it appears in the "Fonts" panel or in the Font Book application; not the name of the font file on disk.
  • There is a new clipping placeholder: #block#. Using this placeholder will guarantee that the inserted clipping text begins and ends with a line break.
  • There is a new control in the status bar at the bottom of text views; it displays the current magnification of the view and allows you to change it. The control can be hidden (or shown) using the "Text Magnification" option in the Appearance preferences.
  • There is a keyboard equivalent for opening the Magnification menu; this can be changed in the "Menus & Shortcuts" preferences, under "Status Bar".
  • The popup-menu buttons at the bottom of the window side bar are now accessible via keyboard commands. There are none set by default; you can configure your own in the "Menus & Shortcuts" preferences; see the "Side Bar Items" section.
  • There is a third option in the Keyboard preferences to control Home and End key behavior: "Progressive (BRIEF compatible)". If you select this option, the Home and End keys behave as follows on successive presses:
  • the first press will move the insertion point to the beginning (or end) of the current line;
  • the second press will move the insertion point to the begin of the first line (or the end of the last line) in the current page of text, without scrolling;
  • the third press will move the insertion point to the beginning (or end) of the document.
  • The behavior is progressive within a specific time period. After the period expires, or if you change the selection range by other means, the behavior state resets, so the next press of Home or End will behave as in the first step described above.
  • The factory default timeout period is ten seconds. There is an expert pref to control it:
  • defaults write com.barebones.bbedit BRIEFStateTimeout -float 10.0
  • There are some new commands on the View menu:
  • Collapse All Folds - This will collapse all automatically generated fold regions in the text, whether or not they are contained within other folds. (This is distinct from "Collapse Top-Level Folds", which collapses the top-level folds but leaves any nested folds open.)
  • Collapse Folds Below Level - On the submenu, all available fold levels are shown; choosing one will collapse all of the automatically generated fold regions in the text that are below that fold level. So, for example, Collapse Folds Below Level => 1 will leave the top-level folds open, but will collapse all of the folds below the top level, whether or not they are contained by other folds.
  • After entering a license code, either manually or via in-app ordering, BBEdit will figure out whether you have Yojimbo installed and will offer to save your serial number there.
  • Clicking on the document icon in a window's toolbar will now open a spring-loaded info panel which displays basic information about the file, and gives you the ability (for local files only) to rename it, "touch" its creation/modification dates, and change its permissions. The "Text" tab shows the same text statistics as the display in the status bar, but in an expanded format. Dismiss the panel by clicking outside of it, switching to another window or application, or pressing the Escape key.
  • A "Get Info" command is now available on the View menu, as well as in the action and contextual menus for file sidebars (for items on disk) and disk browsers. This will display the same info panel that is available by clicking on the file's icon in the toolbar, but without the Text tab. When applied via action or contextual menu to sidebar items, it is only available for files or folders on local file systems, and will not show text statistics.
  • Added a "Swap" button to the Find Differences dialog box.
  • There is a new command on the Search menu: "Replace All in Selection". This is enabled when there is a selection in the front document's text view (or in the document immediately behind the Find window). Choosing it will apply a Replace All only to the selected range of text.
  • Restored the "Font Style Elements" palette to the "HTML Markup Tools" palette group in the Palettes menu.
  • CSS coloring has been enhanced: numeric values are now colored, as are color specifications (both built-in names and 3/6-digit hex color specifications).
  • SCSS is now supported as a built-in language. This is a superset of the support for CSS, with additional coloring for variables, // comments, as well as completion for the SCSS built-in functions.
  • *** Note: If you have installed the third-party SCSS language
  • module, you will need to remove it, since it will otherwiseoverride the built-in support.
  • Added "Create Table Shell" to the Markup -> Tables menu (and the "Table" popup menu in the HTML tools palette). This gives you various options for creating a prefabricated HTML table structure.
  • When starting up a fresh installation of BBEdit, the application will look for existing TextWrangler preferences and migrate them. In addition, if a TextWrangler user settings data folder is located in ~/Library/TextWrangler/ (which is the default for TextWrangler 4.5.x installations), then it will be copied to ~/Library/BBEdit/. Finally, ~/Library/Application Support/TextWrangler/ will be copied to ~/Application Support/BBEdit/.
  • There are two new commands on the Edit menu: "New Line Before Paragraph" and "New Line After Paragraph". These commands will insert a new line at the beginning of the paragraph(*) containing the start of the selection, or after the end of the paragraph containing the end of the selection, respectively.
  • (*) The term "paragraph" is used in the same sense as the Cocoa text system uses it, namely, a line boundary. This is at odds with the conventional definition of a paragraph, but consistent with the OS's interpretation of the term (and thus with other applications that implement the same behavior).
  • NOTE: Because "New Line After Paragraph" uses Command-return as its factory default keyboard equivalent, this gesture is no longer available for sending a command in shell worksheets. Enter still works, though, so you can use that. Alternatively, there is a new placeholder command in the "Shell Worksheet" group in the Menus & Shortcuts preferences: "Send Command". This defaults to Control-return, but you can now assign it to anything you like.
  • Added check box to the Edit -> Insert -> File Contents file panel: "Include separators". This will include a separator between each inserted file's contents, which includes a dashed line and the file's name.
  • There is now a simple way to add language keywords to installed languages without fiddling your fingers in the application package or other off-limits places. As follows:
  • in the Application Support/BBEdit/ folder, there is a new subfolder, named Custom Keywords. It is created automatically when the application starts.
  • In this folder, place one or more files containing the keywords that you wish to be colored.
  • Each file's name should map it to the appropriate language, e.g. ".js" for JavaScript files. You can have multiple keyword files mapped to the same language, if you wish.
  • Each file should be UTF-8 text, no BOM, and contain one keyword per line.
  • Keyword lookups are case-sensitive if the language is case sensitive; case-insensitive otherwise.
  • Words in these files are colored using the "Language Keywords" color.
  • Changes:
  • The "Recent Documents" section in the sidebar (in windows that have one) is gone; it has been replaced with a "recent" popup button in the action area at the bottom of the sidebar. The menu on this button shows recently opened documents, up to the maximum number specified in the Application preferences. The Show/Hide Recent Documents command on the View menu has been removed.
  • The behavior of the Currently Open Documents list in project windows has changed:
  • There is now an adjustable split between the Currently Open Documents list and the Project list.
  • It's no longer possible to completely hide the Currently Open Documents list; the command on the menu will toggle the list between a minimum size and the most recently used split position. (Clicking in the header of the Currently Open Documents list will do the same.)
  • The "Start Recording"/"Stop Recording" command has been removed from the Script menu; the system-level support for script recording never did quite work correctly in 10.6 and later, and there is no modern equivalent for the (now deprecated) APIs required to support it. Use the corresponding feature in the AppleScript Editor or Script Debugger instead.
  • Tidy support has been retired. This includes the Tidy submenu on the markup menu, Tidy scripting support, and Tidy operations in text factories. (If you run a text factory containing Tidy operations, those operations will now do nothing.)
  • Renamed "Collapse All Folds" on the View menu to "Collapse Top-Level Folds", because that's what it really does.
  • The "Process Lines Containing" dialog has been rewritten (and rearranged). It now also includes the search history and Grep pattern menus proximate to the search string.
  • The Entab/Detab dialog box has been rewritten (and its layout updated).
  • Rewrote the Add/Remove Line Numbers dialog.
  • Changed the "Installed Languages" button in the Languages prefs pane to match the standard system button appearance.
  • Rewrote and modernized the Prefix/Suffix Lines dialog
  • Rewrote the "Hard Wrap" dialog box.
  • Rewrote the "Process Duplicate Lines" sheet.
  • Rewrote the "Sort Lines" sheet.
  • Cocoa-ized "Compare Against Previous Version".
  • The "encoding couldn't be guessed for this document" sheet has been Cocoa-ized.
  • Updated the "Clear Markers" dialog.
  • Rewrote the password panels used for privilege escalation in shell worksheets, password prompts for SSH, and other locations.
  • Rewrote the "Replace All" options panel for text factories. For bonus points the fields now use the default editor font and have scrollbars.
  • The sheet for adding Grep patterns from the Find or Multi-File Search window has been rewritten. You can choose a pattern from the popup menu to prefill the name (if you wish to replace an existing pattern).
  • Rewrote the Hex Dump dialog. Resource fork dumping has been retired.
  • The "Options" sheet in the Multi-File Search window has been Cocoaized.
  • The modal panel that appears when you click "Replace All" in the Multi-File Search window has been Cocoaized.
  • The "Show Results" option in the modal "Replace All" options panel has been removed; results for multi-file Replace All are always displayed.
  • Rewrote the Subversion => Show Revision History sheet.
  • The "choose a working copy" dialogs for Subversion operations (Commit, Status, Update) have been rewritten.
  • Rewrote the "Comment" sheet for text factory actions.
  • Rewrote the panel for creating a new item (file or folder) in a disk browser.
  • Rewrote the "New..." panel in FTP/SFTP browsers.
  • Rewrote several of the sheets used by the FTP/SFTP browser window and save panel.
  • The "Find Differences" dialog box has been rewritten. It should behave substantially as before, but now uses the standard Cocoa path controls. (It is in fact a Cocoa dialog box now.)
  • "Set Marker" now uses the new Cocoa panel.
  • Rewrote the "Find Definition" panel as a Cocoa sheet and improved the presentation a bit.
  • The "Find & Mark All" sheet has been rewritten as a Cocoa sheet.
  • "New..." for filters in the Multi-File Search or Text Factory windows now uses a window-modal sheet rather than an app-modal dialog box.
  • The Workspaces feature has been removed; it had become marginal over time and we have better ideas for the future.
  • #pragma mark and its friends in other languages now support the "Xcode style" syntax, in which a leading and/or trailing minus (-) separated from the rest of the mark text by a space, e.g. - this is a mark - will add a menu separator before and/or after the named mark, as indicated.
  • The Open File by Name window no longer attempts an additional search if no results were found and you hit the "Search" button. If the window isn't finding something that you think it should, please contact Tech Support for assistance.
  • The "Capitalize Sentences" option to Change Case is now smarter about capitalizing sentences that begin with something other than a word character. All of the case transformations are now locale-aware for better correctness with non-English and non-Roman writing languages.
  • Changed the mechanics of creating local cache files for FTP/SFTP temps. A file hierarchy for each account/server is created, and the file stored therein. The folder permissions for the hierarchy are 0700 (u+rwx,ao-rwx).
  • Antialiasing is now turned off for Monaco when used in editing views; this restores the legacy (and more legible) appearance on non-retina displays.
  • The application no longer uses Growl for notifications, since it now runs only on systems where Notifications are available.
  • When using the "Deploy Site" command on a project, the modification dates of uploaded files are tracked, and only files that have changed since the last deployment will be uploaded, to save time. (Any change to the file's content -- not the modification date -- will trigger a reupload.)
  • The shell window object class is no longer supported, since it is never created or used directly. (shell document instances may occur in various types of window.)
  • Restored the long-lost ability to open Finder "text clippings" (created by dragging text to the Finder from any application) into untitled windows by dragging a clipping on to the application's dock or desktop icon.
  • The "New" and "Old" nomenclature for the Find Differences UI has been replaced by "Left" and "Right".
  • In the Clippings system, the old expert preference ClippingsIgnoreTrailingReturns is ignored and no longer supported. Clippings may include the #inline# placeholder if desired, so that any trailing line breaks in the clipping are ignored.
  • When scanning directories to build the cache for Open File by Name and other purposes, ~/Library/ is now skipped to avoid spending time caching data that is not useful.
  • Changed the factory default for "Include dictionary words in completion list" to be NO.
  • When using the "Buy License" button in the license panel, one of three things will happen:
  • if a current version serial number is found, you'll get an alert advising you and you can go to the web store.
  • if a previous version serial number is found, you'll get an alert and can go to the upgrade form
  • if no serial number is found, an embedded Fastspring store window opens up and you can complete the order in-application.
  • The language-specific preferences overrides (via the upper list in the "Languages" preferences) can now include the display font; so if you like you use (for example) one font for Markdown, one font for Objective-C, one font for HTML, and so on. (This does not apply to intra-document language changes, e.g. CSS embedded in HTML; the document font will always be in the document's primary language.)
  • "Straighten Quotes" now straightens the "lower" Unicode single and double quotes.
  • Commands on the View => Text Display menu apply to both text views in the Differences window.
  • The about box has been rewritten.
  • Freshened the icons used in the HTML markup tools palettes.
  • The #! menu has been rearranged, and some behaviors for running #! scripts have been changed, as follows:
  • "Run…" has been changed to "Run with Options…". This brings up a dialog which lets you control what is done with the script output. The options to "Run in Debugger" and "Run in Terminal" have been removed, since you can do that explicitly from the #! menu itself (and scripts run that way don't get their output back into the application anyway).
  • The "Run File" command has been removed.
  • When running a script from a file, the application will set the current working directory to the one containing the script file. (The old "chdir to script's directory" option has been removed.)
  • "Check Selection Syntax" and "Run Selection Only" have been removed.
  • The AppleScript commands for running #! filters have been removed.
  • If you want to just reveal a file in the Finder by clicking on the document icon in an editing view's toolbar (and bypass the info panel), hold down the Command key while clicking on the icon.
  • You can now use wildcards in the Clippings floater search box. Note that the interpretation of the pattern is strict; "ab* will only match clippings whose names begin with ab, whereas a non-wildcard ab will match any clipping whose name contains ab.
  • Promoted the "Case sensitive" check box in the "Process Duplicate Lines" dialog box, because the setting affects duplicate detection even when not using a Grep pattern to determine the matching string.
  • The {Copy,Save} as Styled {Text,HTML} commands are now enabled when the front document's language is "(none)" or some other non-syntax-colored language, and will generate a single-styled run of text (or HTML code) as needed.
  • When creating a new document, the file is created without HFS type and creator metadata, as long as its name maps to something that is recognizable as a text file (either by internal language mapping or the system identifying its filename extension).
  • BBEdit no longer pays attention to the global system font smoothing setting when drawing text in text views. The existing application-specific expert preferences still work, though; so use those if you need to adjust font smoothing in the application.
  • When a #! script is run, the following environment variables are now set if applicable:
  • BBEDIT_ACTIVE_PROJECT: Path to the frontmost (z-order) project document if it's on disk BBEDIT_INSTAPROJECT_ROOT: If the frontmost (z-order) project is an instaproject, this is set instead to the path of the folder represented by the project.
  • Objective-C @property declarations are now flagged as prototypes, so they will only appear in the function menu if "Show function prototypes" is turned on in the Appearance preferences.
  • Fixes:
  • Fixed bug in which default project window settings saved by "Save Default Project Window" were not properly applied when creating a new project document.
  • Fixed #mark processing in Lua documents. Parser was losing track of the end of the line, which resulted in #mark tokens being ignored.
  • Note that the correct syntax for a mark (which goes into the function popup and is colored as a comment) is as follows:
  • -- #mark --- #mark Hello, World`
  • Where the former puts a horizontal separator into the function popup, and the latter creates the function popup entry "Hello, World".
  • Disk browsers and project/multi-document windows get a little extra space for grabbing the vertical resizer for the sidebar.
  • Fixed crash which would occur when trying to use certain fonts with broken metrics. The preferences system will now intercept these requests and log the offenders, and substitute an appropriate factory default.
  • Rewrote the Grep pattern management internals (used by the Setup window and others) to improve performance and fix bugs.
  • Fixed bug in which typing into a column selection would insert the first character typed in every row, and then collapse the selection to an insertion point and subsequent characters were inserted only on the first row. Now, the selection range is collapsed to zero width in all rows, so that subsequent characters typed are inserted on all rows.
  • Rewrote the code which (subject to preference settings) strips trailing whitespace when saving a file. It's now much faster, particularly on very large files.
  • The Automator actions are no longer packaged inside of the application, but are instead built as a separate Installer package.
  • Turned off garbage collection for the Automator actions. As a result they are usable only on OS X 10.9 and later.
  • When a file filter is edited, all display clients (disk browsers and projects) currently using that filter are notified so that they can refresh their list displays.
  • "Set Marker" is a little smarter about picking the default text for the sheet.
  • Fixed a bug in which files opened by external request when starting the application (e.g. double-clicking a document in the Finder) were opened before sleep state was restored, resulting in the desired documents ending up in their own buried window, rather than active.
  • Made some local optimizations to reduce overhead when working in non-soft-wrapped files with extremely long lines in foldable constructs.
  • Fixed bug in which ~/Library/Logs// was not created when it should have been, which would cause an error message to be logged to the console and the particular log file to be inoperative.
  • Fixed a cosmetic issue in which focus rings were missing from text fields in Cocoa dialogs/sheets.
  • The Escape key can now be used to dismiss the "Installed Languages" panel.
  • Made changes to reduce the memory requirements for the HTML "function" scanner. This will only be noticeable on really huge files.
  • Fixed bug in which the warning for malformed UTF-8 files and the expert pref for "always prompt for unguessable file encoding" didn't work.
  • Fixed bug in which ingesting the results of "Process Lines Containing" on an open window would require 2x more memory than was necessary, which would in turn lead to an out-of-memory alert when working with files of sufficient size (upwards of around 250MB).
  • Fixed internal exception that would occur when using the Counterparts popup or "Open Counterpart" in some rare circumstances.
  • Fixed bug in which counterpart discovery would give up too easily, leading to a failure of "Open Counterpart" or the Counterparts popup to find appropriate files.
  • Corrected the sort order of items in the Counterpart popup, so that counterparts whose languages match the front documents appear at the top of the menu.
  • Fixed bug in which running out of memory while preparing an Undo state would subsequently cause a crash when attempting to Undo or Redo.
  • Made a change to reduce memory pressure and improve performance on very large files when computing word counts and examining text for spell checking and other purposes.
  • Reworked Process Lines Containing so that out-of-memory conditions mid-operation are more gracefully handled; and so that it's able to process larger files before memory constraints interfere.
  • Implemented a workaround for the "Look Up in Dictionary" contextual menu item failing on OS X 10.9.x and later (radar 15340950).
  • The reverse arrow cursor has been consigned to the dustbin of history.
  • Fixed a bug in which the wrong sound output source was checked for muting. This would affect systems when the sound-effects output was different from the default sound output device.
  • Made a change to reduce transient memory requirements for Sort Lines, and to gracefully handle out-of-memory conditions if they arise during processing.
  • The crash reporter now auto-fills the email address from the address book. A button to go to our Privacy Policy page and additional verbiage are included.
  • Fixed bug in which changing the display font of a document would also reset its tab width to 4 spaces per tab, irrespective of the actual current setting.
  • Made some edits and updates to the About Box credits.
  • Improved the performance of an internal operation that could be heavily used during function scanning of very large HTML files.
  • Fixed a couple of bugs which conspired to cause miscalibration of the horizontal scroll bar when working in files with very wide tab stops.
  • Vanquished an eldritch horror from before time; namely, a trailing backslash at the end of a Grep replacement pattern would insert garbage characters instead of simply the backslash.
  • Adjusted the preference panes so that they are all the same size, and no window resizing animation is required when switching between them.
  • Corrected a layout goof in the Preferences window search box.
  • Fixed bug in which clipping menu items were enabled when no eligible window was open, leading to an error in case one of them was chosen (or invoked via keyboard equivalent).
  • Made a change to reduce the amount of text duplication (and thus memory) required when doing certain text transformations.
  • Multi-file search status now updates with the name of each file being considered, whether or not it actually ends up being searched. This avoids potentially long pauses in status updates when there is a long interval between searchable files.
  • Fixed bug in which cancelling a multi-file search or text factory operation would leave it stalled indefinitely in cases where the operation ended up using enough memory that it had to wait for usage to drop below the high-water mark.
  • Fixed bug in which persistent include paths would be inserted as absolute paths in cases where the include file was in a subdirectory of the site's "Templates and Includes" folder.
  • Corrected the sort order in the various columns of the Entities palette.
  • Made sort order settings persistent in the Entities palette.
  • Fixed bug in which double-clicking on an item in the Clippings palette would trigger keystroke editing instead of inserting the clipping as intended.
  • Fixed bug in which clicking on the "end" indicator of a foldable range of text would not collapse it if the starting line was out of view (scrolled off the top).
  • When clicking on the "end" indicator of a foldable range of text, the start of the foldable range is now scrolled into view at the top of the window, if it was scrolled out of view when collapsing the range.
  • Fixed bug in which the LeaveRoomForPalettes expert preference was not honored when turned off and creating new windows.
  • If the volume containing a document's backing file gets unmounted, the application will only attempt to remount the volume if it is local. This avoids antisocial behavior by the OS when a remote volume is not reachable (typically due to a network configuration or location change).
  • The built-in Software Update will now unpack into a subdirectory of ~/Library/Caches/, to avoid a use case in which unpacking completes into a subdirectory of /tmp, and then the user waits overnight to do the installation, and in the meantime the OS clears /tmp which results in an error when trying to apply the update the next day.
  • Fixed bug in which the "Worksheet & Scratchpad" section in project window sidebars did not properly account for alternative list font choices when computing the space for the section.
  • Corrected keyboard focus in the Software Update prompt window.
  • Corrected keyboard focus in the crash reporter window.
  • Corrected an oversight in the documentation credits.
  • Fixed a bug in which dismissing the Markup panel by activating a different window would cause the markup panel's host (now the second window) to come back to the front.
  • The Find and the Multi-File Search windows now return the correct answer when the number of text elements is requested via the AppleScript interface.
  • Fixed bug in which items on file filters menus were not sorted by name as they should have been.
  • "Open Selection" in a shell worksheet will now attempt to resolve the selection as a partial path against the current working directory before giving up and bring up the Open File by Name window.
  • "Save a Copy" now legalizes the file name before saving, by changing characters not allowed by the file system APIs (':', '/', or control characters) to dashes.
  • "Save a Copy" will attempt an authenticated save if it is unable to otherwise create the copy in the indicated location.
  • Put in a check to fix a potential crash (which was never reproducible).
  • Fixed crash which would occur when using "Move to Trash" for multiple selected items from a project window or editing window sidebar on a volume which didn't allow it.
  • Fixed bug in which project sidebar lists showing folder contents would scroll unpredictably under certain conditions when the folder's contents had been changed for some reason (e.g. adding, removing, or renaming a file).
  • Made a change so that "find" events are less verbose in recorded scripts.
  • The FTP/SFTP connection sheet (used in the FTP/SFTP browser and "Save to FTP/SFTP dialog) has been rewritten and modernized. This fixes display glitches reported when running on 10.9.x and later.
  • Fixed bug in which clicking "Install & Relaunch" when dragging a package or language module onto the application would fail with a -43 error (although the item would be installed in the correct location).
  • Shift-return and Option-return in the Clippings floater's search box will behave as the same modifiers do when choosing an item from the Clippings menu: Shift reveals in the Finder, Option opens for editing.
  • Crash recovery data is now stored in the same location as the application sleep and auto-recover state, namely ~/Library/BBEdit/ (unless you have relocated that to your Dropbox folder). The folders and files containing crash recovery data now also have their permissions set so that they can only be read and written by the current user.
  • Corrected appearance of the bold-faced item in the function menu when the name being displayed contains tabs.
  • When writing out changes to a file that was not open, text factories and multi-file Replace All operations will (if appropriate) set the file's text encoding extended attribute to the correct value.
  • Fixed bug in which FTP/SFTP documents couldn't be dragged into a project's list from another window's sidebar.
  • Corrected the HTML5 syntax checking for the usemap attribute.
  • Added value checking for the coords attribute in area tags in HTML5. (It checks only for a reasonable number of comma-delimited integers, but will not enforce that the number of coordinates provided is appropriate for the indicated shape.)
  • Fixed bug in which clipping set switching would get confused after using "Move to New Window".
  • Added some predefined names to the Ruby language module for coloring.
  • Directory enumeration for Find Differences when comparing folders will now resolve symlinks when possible.
  • Worked around a bunch of antisocial behaviors in the OS that would cause floating windows to end up all over the place after disconnecting and then reconnecting a display (typically an external display connected to the laptop). Now, the OS may still make your palettes dance around like they're on "The Price Is Right", but once you put them where you want them, the application will remember their positions more reliably.
  • Fixed crash which would occur when using the "Hard Wrap" command to do something outrageous (like wrap a 40+MB mach-o executable binary).
  • The "Hard Wrap" command now runs on a separate thread, so that really long operations can be cancelled.
  • Made the default value of MarkupToolsMisc_SkipXMLFilesWhenScanningFolders consistent with the Expert Preferences help.
  • Fixed crash which would occur at application startup if the application's support folder could not be found or created.
  • When saving and restoring state, the ordering of items in the "Currently Open Documents" list is now preserved.
  • Updated the Markdown syntax coloring to fix a class of issues related to editing multi-line list items and multi- line quote blocks.
  • Fixed geometry calculation so that the Markup Builder panel is more likely to come up where you expect it to on multiple-screen systems.
  • Made a change so that ASCII NUL (0) characters in the document don't prematurely shorten the data sent down the pipe to Unix (script or executable) text filters.
  • Text Factory text filters no longer extend the selection range out to line boundaries (making them consistent with other types of text filter).
  • Fixed bug in the Python function scanner so that dividing lines in the function popup, added with "#mark -", no longer need a trailing space.
  • Fixed bug in which entries in the function menu created by splitting up a compound divider mark (e.g. #pragma mark - stuff goes here -) would sometimes be sorted out of order.
  • Multi-line comments in Python files that contain #mark lines will now stop before the #mark and start again after. Thus something like
  • # comment# comment#mark - cool stuff here -# comment# comment
  • will now get fold indicators for the first two lines, then three entries in the function popup (a separator, "cool stuff here", and a separator), and finally another folding block comment for lines four and five.
  • Fixed bug in which the progress dialog would never become visible when activating the application, for operations that were started while the application was in the background.
  • Fixed crash which would occur when dragging a very large directory or some other set of items into a text view which would require enough time to ingest that the system would time out the drag operation and leave the application in an inconsistent state. (The mildest form of this syndrome was that a drag highlight ring was left around the text view.)
  • Made the behavior of the Emacs ctl-L gesture consistent with the documentation.
  • Since aliases/symlinks in the top-level Application Support folder are no longer supported, the application will present an alert if it finds any when starting up.
  • The top-level (application-named) folder in ~/Library/Application Support/ or your Dropbox/Application Support/ can now be an alias (or symlink) to somewhere else; that is, ~/Library/Application Support/BBEdit can now be aliased to another location.
  • We don't generally recommend doing this, but it is supported and should work for situations where it's absolutely necessary. (I'm looking at you, Greg.)
  • All of the CSS markup dialogs (on the Markup -> CSS menu) have been rewritten and modernized.
  • The #! => Run With Options output options will now respect the global preferences for whether new documents should be opened/created in the front document window. An exception is made for output to the catchall "Unix Script Output" log, which will always open into a separate window (unless the front window is in full-screen mode, in which case it'll be opened in the front window).
  • Rewrote the "Apply Text Factory" dialog box (which is used when choosing a text factory from the Scripts menu if the factory doesn't have any previously specified files to process).
  • Made a small behavior change to the output phase of Unix text filters: any data written to stdout is always used to replace the selection range (or document contents); anything written to stderr is now logged to a separate document.
  • #mark directives in Python files (for insertion into the function popup) no longer need to be preceded by a "# " (it's optional). Thus, either # #mark something or #mark something will place a something in the function menu.
  • The Python scanner adds support for trailing hyphens in #mark directives, so a line like "#mark - Put Good Code Here -" will result in three entries in the function popup: a horizontal separator, "Put Good Code Here", and another horizontal separator.
  • Files that conform to public.delimited-values-text are now recognized as text files, and .csv and .tsv are now part of the factory default filename extension mappings.

New in BBEdit 10.5.13 (Oct 16, 2014)

  • Additions:
  • This release consists entirely of a change for compatibility with future OS releases, and contains no new features.
  • Changes:
  • Worked around a crash which would occur when using the file panels on OS X 10.10. (Radar 18008831)

New in BBEdit 10.5.12 (Aug 27, 2014)

  • Changes:
  • Implemented the latest code-signing procedures recommended by Apple for compatibility with future releases of OS X.

New in BBEdit 10.5.11 (Jun 6, 2014)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Fixed crash which would occur occasionally (depending on the shape of memory) when trying to balance delimiters and the selection start was at the beginning of the document.
  • Worked around bug on 10.8.x which broke running-browser detection (and thus the "Markup => Preview in => All Running Browsers" command).
  • Worked around an elusive OS behavior in which the application would receive spurious change notifications for folders that it wasn't actually watching, which in turn triggered inappropriate refreshes of the Scripts, Text Filters, Stationery, and/or Clippings menus.
  • Fixed crash which would happen when reloading ctags data in response to the tags files being changed on disk.
  • Fixed crash which would occur when using "Save as Styled HTML" after using the expert preference to turn off inline CSS generation.
  • Made further changes to the Dropbox check, since the on-disk format of ~/.dropbox/ has changed yet again. Now, the existence of that directory is enough to prove installation of Dropbox and trigger discovery of ~/Dropbox for application support content.
  • Fixed likely cause of an occasional crash at startup.

New in BBEdit 10.5.10 (Apr 9, 2014)

  • Fixes:
  • Fixed hang which would occur if Spotlight was blocked on indexing when bringing up a source picker (as in multi-file search or text factory execution).
  • The application no longer claims to be able to edit "Java Web Start" files, which should prevent the OS from inappropriately opening them after downloading.
  • Fixed bug in which the first right-arrow gesture in a text document would have no effect when the document had been opened with soft wrapping turned on and the insertion point was at the very beginning of the document.
  • Fixed a cluster of bugs which conspired to prevent image windows from opening up with correct size and placement; the image's dimensions are now listed in the Window menu as well.
  • Fixed bug in which keyboard equivalents including the Shift key couldn't be set properly in the "Menus & Shortcuts" preferences.
  • Fixed crash which would occur when using the "New..." button in an FTP browser window while the item list was empty.
  • Fixed bug in which horizontal scrollbar calibration would get out of whack after deleting (or shortening) the longest line in the file, and then inserting text elsewhere to create a line that was longer than the previous record holder.
  • Fixed bug in which the line number bar would show incorrect line numbers following the beginning of a folded range of text.
  • Made a change to work around an OS bug which would cause gray areas to appear in preview windows while resizing them. (The glitches still appear, but will clear themselves rather than requiring you to reload the preview.)
  • After a conversation with Gruber, changed the UTI conformance for net.daringfireball.markdown from public.text to public.plain-text. This will fix QuickLook's failure to display Markdown files (it would show a document icon instead).
  • Changed the name of the "Data File" pseudo-language to "Text File", and added ".txt" and ".text" as default mappings to that language (in addition to the existing ".data" and ".dat'").
  • Fixed bug in which files which should have triggered a privilege escalation when opened did not, and instead reported a 10004 error.
  • Fixed a bug in which changes to display configuration would cause windows to be incorrectly reshaped in some situations. (Typically when an external display was removed from a laptop, and the window was located on the external display and was larger in either dimension than could be displayed on the laptop screen.)

New in BBEdit 10.5.9 (Mar 5, 2014)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Rewrote the printing innards for live preview windows, so that the printed output is closer to expectations.
  • Fixed bug in which progress dialogs would leak memory.
  • Fixed memory leak in the innards of the font system.
  • Made changes to significantly improve performance when generating syntax-coloring information for extremely large files (SQL dumps being a good example of same).
  • Fixed a performance bug when scrolling in text views with extremely long lines and the Line Numbers bar visible.
  • Made a change to the Open File by Name search logic so that it doesn't search system headers and frameworks unless the search cache is backed by an Xcode project.
  • Fixed bug in which data structures backing the Scripts menu (and other similar folder-backed menus) were not properly released when the menu was refreshed, leading to creeping memory use.
  • Fixed a memory leak in SFTP process cleanup.
  • Made a change to work around a mystery crash at startup.
  • Various internal changes to improve stability.
  • Fixed bug in which one pane of a split-pane text view would get blanked out in certain circumstances. (Replace All in a split window was a good way to reproduce this.)
  • Made changes to improve the display of path names in menus when the path is ~ or /.
  • Unix tool discovery will now also look in /opt/subversion/bin/ to cover the case of "aftermarket" Subversion installations.
  • Fixed a bug in which FTP browsers reopened as part of startup state restoration would never reconnect to their previous locations and always drop a sheet asking for connection information.
  • When reopening files during state restoration at startup, the application will no longer attempt to mount volumes that are not available (e.g. remote file server volumes). This should resolve hangs that occur when the system goes off and tries to reconnect to a server that is no longer available (as tends to occur when taking a laptop home from the office).
  • If for some reason you preferred the old behavior and want the application to attempt remounting of volumes containing reopened files, you can use this expert preference:
  • defaults write com.barebones.bbedit AllowVolumeMountDuringStateRestore -bool YES
  • Fixed a performance regression in filtering directories for the Subversion "Show Working Copy Status" command.
  • When generating the Markers popup, leading whitespace from the marker name is now used to indent the menu item, so that type-to-select works correctly in the menu.
  • Fixed a bug in which files opened by external request when starting the application (e.g. double-clicking a document in the Finder) were opened before sleep state was restored, resulting in the desired documents ending up in their own buried window, rather than active.
  • Fixed bug in which sorting modifier names in Clippings set menu items were not properly stripped out before adding them to the menu.
  • Made some adjustments to the location computation for the Markup Builder panel, so that it's more likely to appear where expected, particularly on multi-display setups.
  • Fixed bug in which "Update Site" or "Update Site Images" would show "(null)" as a completion status if no other results were presented.
  • Fixed bug in which "Update Site Images" would fail to update absolute and server-relative image references (which would manifest as skipping certain files entirely).
  • Fixed bug in which drawing glitches would be left in the text view when dragging text around, if you paused for long enough.
  • Control-Tab actually does not work for its intended purpose, which was to flip the sense of "Auto-Expand Tabs" on the fly when entering a tab character. To work around this, Option-Tab has been defined so that it always enters a literal Tab character; thus, if "Auto-Expand Tabs" is turned on, use Option-Tab to enter a tab character instead of spaces.
  • Made a change to the Markup Builder panel so that keyboard focus comes up in the attribute value field immediately, rather than switching from the attribute name field. This should fix reported problems of accidentally pasting intended attribute values into the attribute name field.
  • Fixed bug in which "Update Site Images" would report as updated any open documents that it encountered during the process, even if the files weren't actually modified.
  • Fixed crash which would occur when performing certain transformations on rectangular selections (such as "Shift") with the Jump Points window open.
  • Fixed bug in which the default "Find in Reference" URL template had an unencoded space in the query string, which would cause an error when trying to do "Find in Reference" from a document whose language was "(none)" and Dash was not installed.
  • Fixed bug in which valid numeric HTML entities that weren't explicitly listed in BBEdit's internal tables were not converted to character equivalents when using Markup -> Translate -> HTML to Text.

New in BBEdit 10.5.8 (Jan 23, 2014)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Fixes:
  • Fixed crash which would occur at startup when the Application Support/BBEdit/Clippings folder was empty and not writeable, or when Application Support/BBEdit/Clippings did not exist and the Application Support/BBEdit folder was not writeable.
  • When previewing an unsaved or untitled document with an external helper, BBEdit now writes the temporary file out using the same line breaks as the document, rather than using the internal representation. This improves compatibility with preview helpers that aren't web browsers (e.g. Marked).
  • Fixed bug in which bz2-compressed files were not read correctly.
  • Fixed bug in the Fortran scanner in which it was confused by certain keywords appearing out of context.
  • Fixed crash when using "Find in Reference" with no document open.
  • Updated copyright year.
  • Fixed a bug in the Fortran function scanner in which subroutine/function ends weren't correctly detected when the qualifying identifier didn't end exactly at a line break.
  • Fixed bug in which the functions and folds could be out of sync if the document contents were reloaded from disk or reverted.
  • Restored the previous order of startup so that crash recovery takes place after sleep state restoration.
  • Fixed bug in which references to documents previously opened in a project were not properly resolved relative to the project document itself, which would create confusion in cases where the project was moved or copied.
  • Fixed cosmetic glitch in which the pop-down arrow icon in the header of disk browsers would sometimes draw in the toolbar area.
  • We now preflight the use of xcrun and avoid it if we can determine that the developer command-line tools were not installed. The AskXcodeForCommandLineTools expert preference is now obsolete.
  • Because the factory installed svn actually brings up a dialog box when invoked on 10.9 and the Xcode command-line tools are not installed, we now detect this condition and suppress Subversion support appropriately. This resolves situations in which the alert to install the developer tools would appear unexpectedly.
  • Fixed crash which would occur if an error occurred while trying to save an FTP/SFTP bookmark's password into the keychain. (The error is now logged to console, instead.)
  • Fixed bug in which heavy FTP logging activity would cause the application to run out of memory and crash.
  • Fixed bug in which the FTP log file was created with (usually incorrect) random permissions. It is now created u+rw as intended.
  • Fixed crash which would occur while typing in one of the file lists in a multi-file Find Differences results window.
  • Fixed lurking bug which would occur while processing identical files during a multi-file Find Differences operation.
  • If a file being processed by a text factory or multi-file search/replace had no line breaks in it, the line ending type was assumed to be "Classic Mac (CR)", rather than using the default in the preferences. This has been corrected, so that any changes to the file which result in line breaks being added will use the proper line endings.
  • Fixed bug in which Text Factory transformations applied to untitled documents would change the document's line endings to "Classic Mac (CR)".
  • Fixed a bug which had no visible effect, but which triggered a warning from the graphics system when toggling check boxes in the Multi-File Search window's source list, or in the source list for text factory windows.

New in BBEdit 10.5.7 (Dec 19, 2013)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Changes:
  • Changed the Dash support to use the newer lookup syntax, and added expert-preferences support for specifying which docset keys to include in the query. This is done on a per-language basis, by specifying an array of keys in a defaults write command, thusly:
  • defaults write com.barebones.bbedit DashQueryKeys_ -array
  • For example, for Objective-C++:
  • defaults write com.barebones.bbedit DashQueryKeys_Objective-C++ -array cpp iphoneos macosx appledoc cocos2d cocos2dx cocos3d kobold2d sparrow c manpages
  • The list of query keys recommended for various languages may be found here. Note that you must use BBEdit's human-readable language name in the defaults write above, not Dash's.
  • BBEdit now passes through the document filename extension to Dash when making queries (as long as the document is backed by a file on disk).
  • Fixes:
  • Implemented a workaround for file corruption on SMB volumes when running on OS X 10.9 (caused by a bug in the OS, 15627108).
  • We no longer run a Python script to figure out whether Dropbox is enabled; the detection is now baked in to the application.
  • Fixed bug in which the application would (inappropriately) look inside of its own package for attachment scripts in cases where the Attachment Scripts application support folder was absent or unreadable.
  • Fixed bug in which running an AppleScript script from the Scripts menu would occasionally trigger a refresh of the Scripts menu and palette.
  • Added support for MODULE PROCEDURE statements in Fortran, which fixes a crash in the Fortran function scanner. INTERFACE declaration blocks are also supported, for the same reason.
  • The order in which language modules are loaded is now relevant to the order in which filename extensions are mapped to languages, which ensures consistent behavior of same.
  • Fixed regression in which text factories run as filters would prompt to save the document after running. (The changes were made anyway.)
  • Worked around a bug in OS X 10.9 (15646538) which would cause a crash when returning internal scripting error information in certain situations.
  • Fixed bug in which UTF-8 text dragged from results lists was zero length.
  • Fixed bug in which the Fortran function scanner would crash when given garbage input (basically, a mangled source file in which no structure blocks were ever terminated with END statements).
  • Fixed bug in which function (F1-F20) keys could not be assigned as keyboard equivalents (though if they had previously been set, they would continue to work).

New in BBEdit 10.5.6 (Dec 7, 2013)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Changes:
  • The application no longer presents a first-run dialog box when started up with fresh preferences.
  • Items in the "Stationery" application support folder (and in packages, as well) no longer need to have their Finder "Stationery Pad" option turned on in order to appear on the "New with Stationery" menu or in the Stationery palette. Note that in order for stationery to function as such, you must choose it from the "New with Stationery" menu. Opening it using the Finder, "Open" command, or other mechanism will open the actual stationery file for editing.
  • Fixes:
  • Corrected word-o of chance for change in the Expert Preferences help page.
  • Fixed Xcode workspace discovery for compatibility with Xcode 5.
  • If an Xcode project contains relative references to variables defined in Xcode's "Source Trees" preferences, BBEdit will now try to resolve those references, rather than giving up and reporting an error.
  • BBEdit will no longer attempt to locate command-line tools using xcrun. On systems where Xcode is not installed, the command-line developer tools have not been configured, or the system just doesn't feel like cooperating, xcrun will become antisocial and put up alerts, log console entries, and engage in other behaviors deemed unacceptable in polite society.
If for some reason you find it preferable for BBEdit to use xcrun to locate tools, you can apply the following expert preference to restore the previous behavior:
defaults write com.barebones.bbedit AskXcodeForCommandLineTools -bool YES
  • Fixed bug in which super-secret class-specific expert prefs for recent item limits didn't work. (But nobody ever tried to use them, so that's OK.)
  • Fixed bug in which we were using the system's I-beam cursor instead of our own (the latter working much better on dark backgrounds).
  • Made some changes to the math used for computing the line number bar font size, so that the font used for drawing the line numbers is no longer allowed to be inordinately small.
  • Fixed a performance hotspot in the subsystem which determines filename-extension-to-language mappings. This should especially help with Open File by Name precaching performance, but its benefits should be felt throughout the application.
  • Made performance improvements to directory enumeration, to the benefit of Open File by Name, Open Counterpart, and other internal functions.
  • Made performance improvements to search-while-typing in the Open File by Name window.
  • The Open File by Name cache for system includes and frameworks is now built asynchronously when the application starts up, to reduce or avoid delays when opening the "Open File by Name" window for the first time.
  • When doing a "Save As" in a project for a document inside of a twisted-open folder, instead of updating the list item to point to the document's location on disk, clear the item's reference to the document and leave it pointing at the previous location. This resolves confusion that was occurring otherwise.
  • Fixed bug in which the "Label" term in file filters was not correctly loaded when presenting the editing UI, nor correctly applied when filtering files.
  • When enumerating the contents of an Xcode project, inspect the contents of a group, even if the group itself cannot be resolved (usually because the group is a relative reference to something that no longer exists).
  • The "Xcode Projects" group in the Multi-File Search window now contains something useful: the ten most-recently-used Xcode projects, sorted alphabetically. (Discovery is done using Spotlight, so if you don't see the projects you expect to see, blame Spotlight.)
  • File icons in disk browsers are now colored appropriately when the file/folder has a label (according to the file system metadata). This also includes single-tag items when running on 10.9.
  • Fixed crash which would occur when trying to compute a default file name extension and the Languages preferences contained one (or more) custom extension mappings with no extension.
  • Fixed crash which would occur when trying to apply an Automator workflow as a text filter, caused by Automator returning something other than what it used to.
  • There's a new expert pref:
defaults write com.barebones.bbedit ShowFullPathsInSearchResults -bool YES
It's off by default, but turning it on will cause the application to display the full (home-relative) path for files listed in search results windows.
  • If Dash is installed, BBEdit will now use it for "Find in Reference", in preference to any predefined or custom reference lookup URLs. This can be controlled via an expert preference, on a per-language basis if desired:
defaults write com.barebones.bbedit UseDashForReferenceLookups -bool NO # turn off Dash support entirely
defaults write com.barebones.bbedit UseDashForReferenceLookups_Ruby -bool NO #turn off Dash support only for Ruby
You could, if you wanted, turn off Dash support by default and then enable it for specific languages, e.g.
defaults write com.barebones.bbedit UseDashForReferenceLookups -bool NO # turn off Dash support entirely
defaults write com.barebones.bbedit UseDashForReferenceLookups_C++ -bool YES #turn on Dash support only for C++
  • Added a table of contents and internal jump points to the Expert Preferences help.
  • Made some performance improvements to ctags file loading and interpretation. This should speed up first-time hits when opening a file for which tags are available, as well as other operations (such as ctags-based completion and navigation).
  • Made a change to prevent ctags discovery from delaying file opens.
  • Application startup performance has been significantly improved. Anyone who has complained that BBEdit is slow to launch is going to have to find something else to complain about.
  • We no longer use QuickTime to read image files, instead relying on NSImage for the heavy lifting. In the scripting dictionary, the QuickTime document and QuickTime window classes have been renamed to image document and image window, but their internal codes are unchanged to preserve script compatibility.
  • Use [NSCursor IBeamCursor] to resolve appearance problems on dark backgrounds and Retina displays. For better or worse, it'll now look the same as every other AppKit application.
  • Finder admin data files (Icon\r and .DS_Store) files are now ignored during multi-file search or Text Factory operations.
  • If a file name has colons in it (which is a bad idea anyway), the command-line tool will no longer report that it's an unsupported URL scheme, and try to resolve it as a file reference instead (which may or may not work).
  • Fixed bug in which a failure to save project metadata (e.g. because the file was locked or permissions were wrong) would prevent the project from being closed and report a -4960 error.
  • Adjusted the default editing preferences so that Auto-Expand Tabs is on by default for YAML.
  • When using the contextual menu to insert an attribute which can have a value, BBEdit now lays down a placeholder for convenience. This resolves a bug in which the insertion point was left in the wrong place.
  • Fixed bug in which changes made to the list of bookmarks in the Setup window were not reflected in the Bookmarks popups in FTP Browsers and the "Save to FTP/SFTP Server" panel.
  • Search results in the "Open File by Name" window now include items that appear on the "Open Recent" menu.
  • Search results in the "Open File by Name" window now include open documents (including untitled ones). Thus, the Open File by Name window can be considered a means for switching between open documents by entering their names, whether or not they've been saved.
  • Fixed bug in which certain non-ASCII characters typed on non-US keyboard layouts couldn't be used as keyboard equivalents for menu commands.
  • Fixed bug in which custom sidebar widths saved by "Save Default Project Window" were not correctly applied when opening an instaproject or making a new project.
  • In a Markdown document, a list which is immediately preceded by a horizontal rule ---- or a headline is now recognized as such. The documentation says to put blank lines before and after "block elements" (like lists and horizontal rules), but the implementations all support this format. #likeUnscramblingAnEgg
  • Added an ellipsis to "Print Selection" on the File menu, since, well, you know.
  • Subversion commits now make a notification (Growl or Notification Center, as appropriate) when the commit has succeeded.
  • Limit metadata searches for tags file discovery to the user's home directory instead of allowing Spotlight to search the entire computer (including any mounted volumes with indexes).
  • Fixed bug in which an error would be reported when using "Delete Line" to delete a blank line at the end of the document.
  • Fixed hang which could occur when attempting to drag a selected range of soft wrapped text.
  • Fixed bug in which function ranges were not correctly generated for subroutines and the main program in Fortran 90 files, so that the current function display usually reported "(no symbol selected)".
  • Corrected generation of fold points for functions, subroutines, program, and modules in Fortran source files.
  • Fixed bug in which multiple whitespace characters between end and the function name weren't ignored in Fortran source files.
  • The Text Statistics status bar item gets a tooltip with more verbose content.
  • The "Add" command on the Subversion menu is now correctly enabled for files which aren't under Subversion control, but the parent directory is.
  • Fixed a related bug in which Add/Delete/Revert on the Subversion menu did not properly enable/disable after adding, deleting, or reverting a file.
  • Reduced the amount of computation required to ascertain Subversion status for files, notably when enabling/disabling menu commands on the Subversion menu.
  • Fixed bug in which the 'Always show full paths in "Open Recent" menu' preference manipulated the wrong setting, so it had no visible effect.
  • Made changes to reduce the energy overhead of text views and results list windows (e.g. search results).
  • Fixed bug in which "Open Selection" in an editing window with a selection range longer than 255 characters would fail.
  • There is now an expert preference which will cause the "Open File by Name" window to close after using the "Open" button:
defaults write com.barebones.bbedit CloseOFBNWindowAfterOpeningSelection -bool YES
  • Improved appearance of badges used in the completion popup and "Go => Named Symbol" panel when running on a retina display.
  • Corrected cosmetics of drag-and-drop highlighting in project lists, for improved visibility in general and particularly when running on retina displays.
  • Made changes to reduce drawing overhead in text views during routine operations such as typing or keyboard navigation.
  • Fixed bug in which changing an existing document's name in the process of saving it on an FTP/SFTP server, or using "Save As" to make a local copy of a file opened from an FTP/SFTP server, would fail to update the window's title accordingly.
  • The View -> Text Display menu gets a new option at the end: "Split/Unsplit Text View". If enabled, choosing this command operates like double-clicking on the split bar at the top of a text view's vertical scrollbar. Note that the command is also a convenient place to attach a keyboard equivalent for this purpose.
  • Straightened the code path between the color panel and text views, and eliminated unnecessary color space changes which could affect the outcome of dragging colors from the color panel to an text view.
  • Hex Dump just got made wicked fast. You're welcome.
  • There is a new expert preference: PrecomposeUnicodeWhenPasting. This is useful in situations where you frequently bring in text that contains combining Unicode characters from external sources (such as PDFs generated on other platforms), and need to crush two combining characters into one composed character where possible. This is not a generalized need, but if you run into it often enough, turning on the expert preference will save you some work:
defaults write com.barebones.bbedit PrecomposeUnicodeWhenPasting -bool YES
(Despite the name, the precomposition is done when BBEdit imports the Clipboard from other applications, not when the paste is actually done.)
Note that this requires an additional copy of the Clipboard when the application imports the text, and for very large pastes, there may be a noticeable delay while the text gets precomposed. Thus, you should only turn on this setting when you are frequently working with text that contains combining Unicode characters.
  • Worked around a bug in the OS (rdar://problem/15313924) in which files opened from remote file systems would, for some client/server combinations, open empty even though the file was decidedly not empty. This symptom appeared only when running on OS X 10.9.
  • When applying inline (vs. block-structured) markup to text ending with one or more contiguous line breaks, the closing tag is now placed before the first line break, rather than after the last one.
  • Corrected search metadata in the Preferences window so that searching for "font" no longer returns the Application preferences, where there's no font setting, and now returns results including the Appearance preferences, where there is a font setting.
  • Fixed a bug which caused the application to require more transient memory while opening a file than was strictly necessary. (There is a performance gain that goes with this, though it will be primarily noticeable on giant files.)
  • Made a change to reduce the transient memory requirements for a single-file "Find All" operation when searching the entire document.
  • Made a change to reduce the transient memory requirements of Process Lines Containing, Process Duplicate Lines, and Sort Lines.
  • Introduce a short delay before refreshing menus backed by folders in Application Support/BBEdit (e.g. Scripts) to allow for cases when items are written into those folders by non-user processes.
  • When closing a document opened from FTP/SFTP, the backing file is now deleted outright rather than moved to the trash.
  • We no longer depend on cooperative file system notifications to detect changes to folders which are used to generate menu content (e.g. clippings, scripts, text filters, and so on). This fixes problems in which certain manipulations in those folders weren't detected unless the application was restarted (or unless some other change occured which did trigger a cooperative notification).
  • Certain third-party applications don't follow best practices in their bundle construction, and when one such was running, the "Preview" commands on the Markup menu would inappropriately send preview requests to a running instance of that application, rather than to the intended web browser.
  • Fixed bug in which the "Export" command in the File menu was occasionally mistitled.
  • Fixed bug in which Option-double-click incorrectly triggered a "Find Next (occurrence of selection)".
  • Improved behavior in the Open File by Name window when only "~/" or "/" is entered into the search box.
  • When quitting with no untitled documents open of a given type, the untitled count for that document type is reset at the next application launch.
  • Integrated updated PHP completion data.
  • The built-in completion data for PHP is now compressed, saving a little over a megabyte in the application package.
  • If an Xcode project group contains a reference to something that doesn't exist in the project, it will now log the failed reference to the console, and no longer causes project enumeration to stop with an error.
  • Made changes to improve performance when reading gzip-compressed files (for document loading and readtags invocations).
  • The display font AppleScript property now returns the family name of the display font, rather than the missing value placeholder.
  • Added expert prefs help for FlashBalancePointsWhenNavigating.

New in BBEdit 10.5.5 (Jul 17, 2013)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features.
  • Changes:
  • When starting the application from somewhere other than /Applications/ (or ~/Applications/), you're now offered the opportunity to relocate it to /Applications. This replaces the old alert about running from the install image, and provides a better first-run experience as well. (This all only applies to non-App Store builds.)
  • When starting the application, holding down the Command, Control, and Shift keys will now give you the opportunity to discard any existing auto-save state. You should do so with extreme caution; discarding the auto-save state means that you will lose any unsaved changes or untitled documents that were previously remembered as part of the crash recovery mechanics.
  • Made some cosmetic adjustments to the Line Numbers bar in editing views.
  • Made some cosmetic adjustments to the Cursor Position display in editing view status bars.
  • Fixes:
  • Fixed a bug in which horizontal scrollbar calibration would be incorrect in certain edge cases; it should now generally be more accurate than before.
  • Fixed bug in which the x-counterpart variable in files would cause a failure to find the counterpart when they were of differing languages or names. Also added Resources as a search directory for counterparts.
  • Rewrote our custom cursors to use image-based NSCursor instead of CURS resources, for great justice (and correct appearance on retina displays).
  • Since the contents of */Library/QuickTime/ seem to exist only to crash applications, those plug-ins are now prevented from loading into our address space.
  • Application state snapshots now include the count of untitled windows, to avoid confusion when creating new untitled documents after starting up with saved state.
  • Made a change to prevent addition of a default filename extension when doing a Save As or other operation which involved generating a default file name, and the document name already had an extension.
  • Fixed bug in which closing the last document in an editing window would not close the window in situations where multiple documents had been selected in the window's sidebar.
  • Fixed crash which would occur when closing a document listed in the sidebar, after the sidebar item had been dragged into a different order in the list. (At that point the item would fail to update its name if the file's name on disk changed, as well.)
  • Fixed misspelled attribute name in the internal HTML5 DTD.
  • Made changes so that the FTP/SFTP bookmark internals will return and report errors when given bad input, rather than crashing. (Still no clarity on why the bad input was happening, though.)
  • Fixed bug which would cause internal exceptions (and subsequent strange behavior, like all menus being disabled) at startup on certain systems. I don't know why she swallowed a fly.
  • Fixed a bug in the bbfind tool in which it would fail to report results back to standard output.
  • The built-in software update mechanism now uses https to connect to the update server for fetching update information, and verifies the downloaded update before installation to guard against tampering or corruption. This fixes CVE-2013-3667, thanks to Chris Hickstein for the report.
  • Made a change to the window geometry calculations so that default diff results tiling is on the main screen again in systems containing two (or more) screens of identical shape and size.
  • Fixed crash which would occur when opening a document with saved state indicating a split view, but for which the split ended up not being restored (possibly due to display geometry changes).
  • Removed vestigial "Update Site…" command from the Markup => Update menu, which did nothing but report an error.
  • When choosing a font size that is too large (as defined by its line height exceeding the height of the text view it's asked to display in), an editing view will refuse the change. This will address the occasional situation in which the edit fields in the Find or Multi-File Search windows appear to be blank or behave strangely when the default editing font is set to a sufficiently large size.
  • Fixed bug in which Move Line Up/Down didn't properly scroll the moved text back into view in situations where it should have.
  • Crash my app at startup and you're banned from the ballpark. Yeah, EasySIMBL, I'm talking to you.
  • Fixed crash which would occur sometimes when closing documents while the Multi-File Search window was open.
  • Subversion "Working Copy Status" results browsers are now keyed by the directory, so you can have more than one open (but only one per working copy directory).
  • Fixed bug in which it was not possible to choose a Zip archive (or other files in Zip format, like EPUB) as the target for a text factory operation.
  • Resolved a 12612 error which would occur when saving a document opened from a Zip archive, in cases where the document's entry in the archive had a date in the future.
  • Flash Player, you have generated your last crash log.
  • Added a build phase to strip xattrs from items in the application package, which solves a problem in which the OS creates Finder attribute files when the application is copied to a non-HFS file system (e.g. a FAT-formatted USB thumb drive) and in so doing renders the application's code signature invalid.
  • Fixed crash which would occur when closing a live preview window for code containing a JavaScript onUnload event handler.
  • Fixed crash which would occur rarely when trying to open a document.
  • Fixed crash which would occur sometimes when using "Hard Wrap Text" to wrap a paragraph at the beginning of the document.
  • Adjusted the expert prefs help to reflect the actual default state of the ClippingsIgnoreTrailingReturns expert preference.

New in BBEdit 10.5.4 (Jun 5, 2013)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features, nor changes to existing features.
  • Fixes:
  • Fixed internal exception which would occur when doing a "Check {Document, Folder} Links" and a link with no file name was encountered; this would lead to a stuck progress dialog which would crash when clicking the "Cancel" button, and other misbehaviors.
  • Fixed bug in which certain operations which involved placing text on the Clipboard would fail with a -102 error if done immediately after rebooting.
  • When scanning HTML documents for folds, empty XML tags will no longer throw off the calculation (even if the document is not using XML/XHTML).
  • Fixed crash which could happen when preparing data for export to the Services interface.
  • Re-enabled garbage collection for the Automator actions, because although GC is deprecated and we're all supposed to be using ARC instead, Automator (a) requires that actions still allow GC (GCC_ENABLE_OBJC_GC = supported), and (2) throws a hissy fit when they don't.
  • Fixed bug in which the horizontal scrollbar calibration would be incorrect in situations where multiple lines had the maximum number of characters (measured over the document) but different numbers of tabs.
  • Fixed cosmetics of the toolbar in { results, disk } browser windows when the navigation bar was turned off.
  • Fixed bug in which changes to the "Text Status Bar" preferences would affect only the active text view.
  • Fixed bug in which dragged rectangular selections would include text from outside the selected ranges in cases where the selection did not begin at the start of the selected line(s).
  • Fixed bug in which the wrong menu item was selected when doing a Save As and the document's encoding was "Western (Mac OS Roman)".
  • The "Open Text Documents" section of the popup menus in the Find Differences dialog is now sorted by name, rather than by Z order. This makes it easier to cope with large numbers of open documents.
  • Fixed bug in which page-guide-colored turds would appear in the scrollbar when changing the selection in windows that were narrower than the page guide width by less than the width of the sidebar.
  • Fixed incorrect default name in the save panel when using "Save As" on a document whose name begins with a period.
  • Added support for using the scroll wheel while making or dragging text selections.
  • Fixed bug in which the FTP browser would get confused and/or crash in situations where changing directories or refreshing the listing would result in the number of items shrinking.
  • Fixed crash which would occur in some situations as the result of a file name change or other external file system changes.
  • Fixed bug in which the Save panel wasn't made to point at the directory most suitable for saving a document. This might also manifest as the Open panel not opening on the directory that one might expect.
  • Fixed crash which could occur when using "Move to Trash" in a project list with multiple selected items.
  • Fixed bug in which PHP coloring would go wrong in cases where a variable was followed immediately by a quote character.
  • .DS_Store files and other Finder administrivia are now hidden from file listings in projects and disk browsers, even when "[Show] Everything" is turned on.
  • Made a change to maybe prevent jumbo previews from appearing in the Counterparts menu.
  • Made a change to the low-level SGML parser, so that double quotes inside of processing instructions are expected to be balanced, and from that, prevent ?> inside of double quotes from prematurely ending the PI. This will ensure that (for example) PHP code is correctly scanned for functions and syntax coloring when it uses double-quoted strings that contain ?>.
  • Fixed bug in which spell-checking ranges would creep while editing in certain situations.
  • Fixed bug which would lead to multiple synthetic mouse events being lost (e.g. multi-click button programming using USB Overdrive or other mouse software), as well as some other unpredictable input event behaviors.
  • Fixed bug in which the Live Search box was initially unresponsive when the Editor_AlwaysOpenQuickFind expert preference was turned on.
  • Made a change to prevent the annoying system alert when trying to save a text document that doesn't use one of the state-approved filename extensions.
  • Fixed crash which would occur when insufficient memory was available to compare two very large files.
  • Fixed bug in which the Setup window bookmark editor would allow you to enter a bookmark without a server name, and then crash when trying to save it.
  • shell path and working directory are actually properties of the shell document AppleScript object class, not the shell window class. The scripting dictionary has been updated to reflect this.
  • Fixed bug in which the Counterparts menu would show gigantic previews from Photoshop documents instead of scaling them down to 16px for appropriate menu display.
  • Fixed bug in which the "Decimal" column in the Entities floater was not sorted correctly, and fixed layout goofs in the window. (Also, restored missing Hex column.)
  • When no other settings are present (having been carried over from old versions), Find Differences results will be presented on the largest display by default, rather than the "main" display (the one containing the menu bar).
  • All of the screen-geometry internals have been rewritten to use NSScreen instead of the legacy HIToolbox/Quickdraw APIs. Although there's no way of knowing whether this will fix any reported symptoms (such as window titles under the menu bar), it'll be easier to say "[NSScreen visibleFrame] is returning the wrong answer sometimes" and get help with a current API.
  • Fixed crash which would occur when using a #bbinclude script which returned text with no line breaks.
  • Fixed a collection of bugs which conspired to cause the application to consume more CPU when in the background than it should have.
  • Fixed spelling error in the Text Factory action popup.
  • Fixed a bug in shell worksheets in which they would cause event loop rollover in certain circumstances.
  • Fixed crash which could occur when closing text documents while the Live Search box was visible.
  • Updated the Wrap Around indicator for retina displays.
  • Updated the Clippings menu title art for retina displays.
  • When making the sidebar visible in non-project windows, limit its width for the sake of appearance and usability.
  • Fixed bug in which $CWD of the frontmost shell worksheet was used to seed the Open File by Name cache, which would cause long stalls when bringing the Open File by Name window up, even if the worksheet was not active. Now, $CWD is only used if the worksheet is in front, and the working directory is not the current user's home directory or a direct ancestor of it.
  • Changed the counterpart discovery logic ("Open Counterpart" and the Counterparts navigation bar menu) so that it looks in the document's directory (and suitable ancestral peers) before consulting Xcode or the Open File by Name cache.
  • Made a change to significantly improve the performance of counterpart matching for C-family sources.
  • The YAML parser wasn't handling EOF correctly in certain circumstances, resulting in incorrect fold points throughout the document.
  • BBEdit will now ingest your login environment in order to determine the P4CONFIG environment variable, if configured. If P4CONFIG is not set, BBEdit will look for .p4config files starting in the same directory as your source file, and searching up the directory tree.
If your Perforce working copy resides on a remote or MacFUSE volume, this search is disabled by default, and BBEdit will simply check your home directory for a .p4config file. If desired, you can enable searching for .p4config on remote volumes with:
defaults write com.barebones.bbedit DisableP4ConfigScanOnRemoteVolumes -bool NO
  • Fixed bug in which AppleScript comparison operators were potentially being unnecessarily executed multiple times for each comparison test. (There's no evidence that this caused any incorrect behavior, only that it was wrong.)
  • Fixed bug in which the Undo state for "Remove Line Breaks" was incorrect, leading to lost content when undoing a Remove Line Breaks operation.
  • Use NSUserName/NSFullUserName instead of CSCopyUserName.
  • Completed the list of ARC storage qualifiers and added some missing property attributes for Objective-C/C++, and added clang-specific __has_XXX keywords to the built-in keywords for C/C++/Objective-C/C++
  • Fixed bug in which the Objective-C/C++ function scanner would get confused by @interface and @protocol forward declarations.
  • Added a "Unix man page" language module, which is useful for live-previewing mandoc files as you edit them. (There's no "function" navigation or syntax coloring, only live-preview support.)
  • Added expert prefs help for the ExtraSpaceInTextViews setting.
  • Fixed bug in which the insertion point was not drawn correctly in inactive text views (it should have been drawn as a dashed line, but was drawn solid).

New in BBEdit 10.5.3 (Apr 4, 2013)

  • Fixes:
  • Quoted some parts of PCRE error messages to make them a little easier to read.
  • Fixed autorelease memory leaks while doing Process Lines Containing and some related text transforms.
  • Added preference search metadata for the "Open documents into the front window when possible" setting.
  • Plain-text drags into project lists are once again parsed for URLs. (This will only work on OS X 10.7 and later.) This allows adding of remote file references from applications such as Interarchy and Transmit.
  • Fixed bug in which the Text Encoding popup in the save panel did not reflect the document's current encoding setting.
  • Added UTI declaration for Textile: com.barebones.textile-source conforming to public.text.
  • Fixed bug in which clipping set matching based on the set's folder name extension did not work correctly, the primary symptom of which was that PHP clippings were not available as completions when typing in PHP code.
  • Updated various pieces of artwork to correct appearance on retina displays.
  • Corrected drawing layout of the inline "collapsed fold" indicator.
  • Made a change so that the file name extension is always displayed in the save panel when appropriate, even if "Show all filename extensions" is turned off in the Finder's preferences.
  • Removed is from the JavaScript/ActionScript keyword list.
  • Fixed a bug in the TeX syntax coloring which (under certain circumstances, such as whenever it was asked to run...) caused it to stop scanning as soon as it started.
  • Fixed bug in which counterpart matches from the Open File by Name cache were not correctly screened by language when they should have been.
  • Fixed bug in which relative path references ("../foo.mumble") in HTML or CSS documents were not properly resolved.
  • Added public.html to the list of file types that will get the application's "Text Document" icon.
  • Fixed a bug in which excessive memory was used for some internal data structures, which would lead to a crash when opening very large and complicated files (usually XML).
  • Mac App Store builds are now identified by a line item in the about box.
  • The display glyph for invisible spaces (when "Show Invisible" and "Show Spaces" are both turned on) is now U+00B7 (MIDDLE DOT). If spaces don't display when those settings are turned on, then your display font is missing that glyph, and you should report it to your font's developer as a bug. (I would have used U+1427 (CANADIAN SYLLABICS FINAL MIDDLE DOT) for the humour value alone, but not enough fonts supported that glyph. Sorry.)
  • Fixed bug in which using Hex Dump to dump a single character would make life miserable for all concerned.
  • Fixed performance bug in which the Functions floater would impose a heavy penalty when opening or navigating a source file with an extremely large number of function entries in it.
  • When pasting text into an empty untitled document, the application will now try to guess its encoding (from any metadata that may be in the text itself). This fixes a case in which you'd get an encoding mismatch warning when pasting (for example) XML with a character set of utf-16 into an empty document, which defaults to UTF-8.
  • When evaluating a line comment for removal, whitespace at the end of the comment delimiter is now disregarded.
  • Fixed bug in the Fortran (yes, Fortran) function scanner in which functions were missed unless there was at least one blank line after the end of the previous function (or the function was at the beginning of the file).
  • Fixed bug in which paths sent to the Terminal window for execution were incorrectly encoded in situations where an item in the path contained non-ASCII characters.
  • Fixed bug in which selecting an item from the Search History or Grep Patterns popups in the Find window would not correctly update its button enabling.
  • Fixed bug in which "Show hidden items" in the Open panel was checked, but the setting was not honored when opening the panel.
  • The "Enable:" popup in the Open panel now remembers its setting in between invocations of the panel (and across launches of the application).
  • Made changes so that the Save panel pre-selects the base file name of the file being saved, and enforces the correct filename extension for certain document types.
  • The application will no longer write HFS type and creator when saving a document in situations where it doesn't recognize the filename extension being saved; instead, it will write the type and creator only if the document has no filename extension.
  • "Close All in Project" works for instaprojects now.
  • The font/size displays in the Preferences window now display fractional point sizes.
  • Symlinks are now always enabled in the Open dialog, so that you can follow the ones that point to folders.
  • Fixed bug in which the "Enable" popup in TextWrangler read "All BBEdit Documents" instead of "All TextWrangler Documents".
  • Fixed bug in which the "x" widget highlighting in lists would get stuck when rapidly moving the mouse off the widget into another section of the window.
  • Fixed bug in which it was not possible to use the "Other..." button to choose a folder as a text factory processing source.
  • Fixed bug in which Unicode hex displayed in the Character Inspector was always displayed little-endian, even when it should have been displayed big-endian.
  • Fixed bug in which the "Escapes" line in the Character Inspector would not display character escapes correctly in some files.
  • Corrected display of the application icon in the about box on Retina displays.
  • Fixed bug in which site deployments via FTP would disable the Cancel button in the progress dialog for the duration of the process.
  • Made comparison of item names in FTP/SFTP listings case-insensitive.
  • Fixed case in which PHP line comments inside of single-line directives (e.g. , you can't make this stuff up...) would cause the PI closer to be missed and subsequently mess up color scanning.
  • Fixed a case in which PHP variable uses followed immediately by a question mark would confuse the syntax coloring thereafter.
  • Fixed crash when trying to use Tidy -> Convert to XML.
  • Fixed bug in which the application-modal Save panel for documents would not save the document when invoked (but the operation was cancelled, so using other means to save the document would work).
  • Non-App Store builds now prevent /Library/QuickTime/Sonix SN9C201 WebCam from loading and crashing us. If you are using an App Store build of BBEdit, remove /Library/QuickTime/Sonix SN9C201 WebCam.component manually.
  • Fixed bug in which certain interactions which could occur after a window-modal "Save As" (most notably, reporting of unmappable characters) would instead fail and report an error.
  • Fixed bug in which the Verilog function scanner would hang on any file.
  • Fixed a bug in the Markdown parser, where in some cases it would miss a closing tag in HTML sections. This affected both syntax coloring and document structure (folding and function popup).
  • Made a change to reduce the amount of time spent displaying startup progress (at the expense of not displaying the name of every single file being reopened).
  • Corrected handling of "//" comments in the Object Pascal function scanner.
  • Updated the I-beam cursor for improved appearance on retina displays.

New in BBEdit 10.5.2 (Feb 12, 2013)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features, nor changes to existing features.
  • Fixes:
  • Made a change so that the "Restoring [BBEdit] state" panel at startup shows the name of each document as it's opened, and also gives various timer services a chance to run.
  • Fixed a collection of bugs in the Functions, Jump Points, and Markers palettes that would cause them to inappropriately change the selection range when making a document active, as well as unexpectedly lose their contents when closing an unrelated floating window.
  • Fixed incorrect number formatting in the Functions floater.
  • Fixed a bug in which "Sort Lines" did not release memory that it allocated during the operation.
  • Worked around apparent bug on 10.6 which would cause the application to crash in the guts of QuickLook when doing a "Close All Documents". Unfortunately the solution involves disabling QuickLook support entirely when running on 10.6; if this is important to you, consider upgrading your OS to 10.7 (or 10.8, if your hardware supports it).
  • Fixed bug in which the "Restoring BBEdit State" panel would remain on screen longer than was necessary (and in some situations would never go away).
  • Fixed bug in which the drag image when dragging text was not correct when the selection didn't begin at the beginning of a line. (The correct text was dragged in any event.)
  • Fixed bug in which using "Save a Copy" would trigger a sequence of events which could end in data loss if the wrong choices were made.
  • Fixed bug in which callouts (MARK, FIXME, etc) were not recognized when used in # comments in PHP.
  • Corrected a math error which eliminated the dead space between the line bar (or gutter) and the left edge of the text, causing misalignment when the editing view was split, and also making it impossible to do single-click line selection.
  • Increased the maximum allowed length for element names, so that folding in XML documents works with element names that were longer than the old limit (which was perfectly reasonable since 1995, but there you go).
  • Worked around a performance problem in the system foundation classes which would cause undesired delays when editing in very large syntax-colored documents.
  • The minimum OS requirement has been changed to 10.6.8 (for both BBEdit and TextWrangler); there's no particular reason not to update, and on the contrary some very good reasons to do so.
  • The application now uses NSOpenPanel and NSSavePanel for presenting file choosers (including the Open dialog) and "Save As" dialogs, rather than the legacy Navigation Services interfaces. This should resolve problems with accessory controls not working correctly on Retina machines, and perhaps may cure other lurking horrors in the Navigation Services APIs.
  • Fixed bug in which clicking on the application's icon in the Dock would not un-minimize the front window when it should have, unless the Application preferences were set to do something other than "Nothing" at startup.
  • Fixed bug in which right-clicking in a document that was HTML or XML but not properly formed would play a beep.
  • Fixed an internal exception that would occur when decoding text with entities in it. Since this could occur during function scanning, it would lead to the application malfunctioning in certain circumstances.
  • Changed the order in which BBEdit searches for Unix tools, to make allowance for nonstandard installations of svn and the refusal of xcrun --find to locate same. You should be able to remove the SubversionToolPathOverride expert preference (use defaults delete) and have things work.
  • Line breaks in results entry text are now turned into spaces, to improve readability and resolve appearance problems.
  • Fixed bug in which files added to folders within a project were not immediately visible to the "Open File by Name" window as they should have been.
  • Fixed bugs in which certain legacy scripting interfaces which relied on the "user focus" for targeting events would fail when the application was in the background.
  • Adjusted the properties of the PHP language module specification so that typographer's quotes aren't inappropriately entered while typing.
  • The "Compare Against Previous Versions" command on the Search menu is now always enabled (as long as you're editing a local file), which avoids performance problems caused by [NSFileVersion otherVersionsOfItemAtURL:] taking an unconscionably long time in some cases.
  • Made the XML guesser more strict, so as to reduce the chances of non-XML files with XML-ish innards being guessed as XML.
  • If you would like to open a particular Preview CSS, Preview Template, or Preview Filter file from the popup menu in a BBEdit preview window, you may do so by holding down the Option key as you choose the desired item.
  • Fixed bug in which the "Search and Replace" automator action would commit a malfunction when "Use Grep" was turned on in the action's options. (What other words can you think of that end with "-tion"?)
  • Corrected a small layout fault in the Character Inspector floater.
  • Navigation floaters (Functions, Jump Points, Markers) now use the "unwrapped" line number in the display, thus giving correct results in soft-wrapped documents when Use "Hard" Line Numbering is turned on.
  • Fixed bug in which the "#doctitle#" placeholder wasn't processed correctly by the document/site updater.
  • Fixed bug in which the Functions floater didn't update as the document's function list changed.
  • Fixed bug in which changing the list selection in the Functions floater would then cause the selected item to be deselected. This hindered navigation through the floater, particularly when using the keyboard.
  • Fixed bug in which a Unicode BOM present in text dragged in from certain sources (I'm looking at you, Microsoft Word) would be misinterpreted, resulting in junk text being inserted.
  • Fixed bug in which pre-comparison screening for multi-file Find Differences didn't return accurate results.
  • Only show the state restoration progress panel at startup if there's any state to restore.
  • The Site Settings panel for project documents now comes up with the General tab selected, rather than the Deployment tab.
  • Fixed a bug in which the link checker would not correctly resolve references that were relative to the document's base URL, in cases where it had been specified.
  • The width and visibility of the editing window sidebar is now remembered correctly when saving window state across a quit/relaunch, as well as for "Save Default Text Window".
  • Fixed bug in which some operations depending on the current Clipboard contents would return stale information in cases where a clipboard import (from an external application) was necessary.
  • Fixed bug in which type-to-select in list views didn't work correctly.
  • When FlashBalancePointsWhenNavigating is on (as it is by default), navigating over the closing delimiter will no longer cause the document to scroll.
  • Fixed bug in which user-defined names for FTP/SFTP items in projects were reset to the file's actual name when saving changes.
  • Worked around performance problems in some FUSE clients which would cause BBEdit to hang when opening an instaproject on a remote volume. (This could sometimes affect SMB and netatalk AFP volumes served up over extremely slow connections.)

New in BBEdit 10.5.1 (Dec 19, 2012)

  • Fixes:
  • Fixed crash which would occur after using the "Other..." menu item to choose an alternate file in the Markup Builder panel, then cancelling the file dialog, and then immediately dismissing the markup panel. On a Thursday.
  • Made scrollbar activation in list views track the user-focus state of the host window, which cures an assortment of ills.
  • Adjusted examples in the expert prefs help to reflect current text antialiasing defaults.
  • Fixed crash which would occur when trying to manipulate the Text Options popup in a window that was displaying the "No Editor" placeholder.
  • Fixed bug in which Perl variables would mess up folding.
  • Fixed a bug in which the Markers floater wouldn't navigate; and the Functions floater wouldn't navigate when selecting items from a filtered list.
  • Worked around bug in the xcrun tool on 10.7.x which would cause the command-line tool install to fail on systems which did not have Xcode installed. (The tool is part of the default OS install, but has a bug in which it writes nonsense to stdout when asked to find a command.) [NB: this does not apply to versions purchased through the Mac App Store.]
  • Fixed bug in which choosing "Install Command Line Tools" would attempt to reinstall the tools, even if they were already present and up to date. [NB: this does not apply to versions purchased through the Mac App Store.]
  • FIXED BUG IN WHICH KEYBOARD EQUIVALENTS IN MODAL DIALOGS DIDNT WORK WHEN THE CAPS LOCK KEY WAS ENGAGED OK
  • Fixed bug in which PHP variables that occupied an entire PI (e.g. ) would throw off syntax coloring in the rest of the file.
  • Fixed bug in which URLs with percent escapes for encoding character values were not always correctly understood to be encoded, which would trigger an incorrect "this URL needs to be encoded" error when checking markup syntax.
  • Fixed bug in which #! lines were not properly parsed in scripts or filters in which there was space between the #! and the command path.
  • Fixed bug in which Markup -> Block Elements -> H1 through H6 didn't apply the correct heading level.
  • Fixed bug in which the application would crash at startup in situations where the "Universal Items" clipping folder couldn't be created because the permissions in the Clippings folder didn't allow it; or the "Universal Items" folder was an alias or symlink (neither of which is supported). The new behavior is to suppress the clippings system entirely.
  • Fixed crash which would occur when confirming the Markup Builder panel in some circumstances (usually before it had figured out which end was up).
  • Fixed bug in which scrolling list controls didn't work correctly in legacy dialog boxes (such as the CSS dialog for inserting properties in response to the "Edit Markup" command).
  • Fixed bug in which navigating through folders in an FTP/SFTP browser window would lead to strange event-handling behavior, usually manifesting as unpredictable lag in keyboard and mouse input. Thanks to Matthew Fischer and Dave Grenier for their assistance in isolating this issue.
  • Corrected line spacing when printing text documents.
  • Fixed -30871 error when attempting to print a subrange of pages.
  • Fixed bug in which palettes backed by folders on disk (e.g. Scripts, Text Filters) would refresh with inappropriate content when an unrelated support folder had an item added or removed.
  • Fixed bug in the scripting interface in which whose clause tests for text objects ending with a requested string would fail.
  • Fixed glitched name in FTP/SFTP delete confirmation sheet.
  • Made text view scrollbars work when focus is elsewhere in the window (like in the Live Search box).
  • Fixed bug in which attributes couldn't be removed from existing markup by using the Markup Builder panel.
  • Fixed bug in which named entity decoding was inappropriately case-insensitive, and hex entity decoding was inappropriately case-sensitive.
  • Default CSS property values inserted by "Edit Markup" are now selected, as they were in days of yore.
  • Fixed bug in which leading and trailing whitespace were not correctly trimmed from patterns used in codeless language modules.
  • Fixed bug in which clippings saved into the Clippings subfolders did not immediately appear in the Clippings floater or on the menu as they should have.
  • Fixed bug in which the Subversion progress dialog always showed "Subversion Progress" instead of the name of the actual operation being performed.
  • Icons for "Open File by Name" results are no longer prefetched, and are now loaded as needed when an item is actually drawn. This improves overall performance when there are more than a few results.
  • Corrected contact address and administrative credits.

New in BBEdit 10.5 (Dec 5, 2012)

  • Additions:
  • If you right-click inside of an tag, the contextual menu gets an additional item: "Update Image Dimensions". This will add, or update, the width and height attributes of the image file specified in the src attribute (assuming that BBEdit is able to resolve the reference to a file on your local disk). This saves a round trip through the markup panel. Note that as always you can use the "Images" commands on Markup -> Update to perform this operation for all of the tags in a document (or folder, or site).
  • Projects have a new action menu, Site. This menu contains commands for configuring the project as a "Web Site" project, with local root, defaults for new documents (and a "New HTML Document" contextual menu command), settings for the image updater, and a new feature: Deployment. This last allows you to configure the remote destination for a site's contents, and determine what additional steps to take before uploading. Thus, deploying a site takes the place of several operations that were previously manual.
  • When creating a new HTML document (from the dialog or from a template), there's a new substitution available: #LOCALE#. This is the "short" locale code corresponding to the "Language" setting in the dialog box, e.g. en, de, x-klingon, and the like.
  • There's a new command on the Search menu: "Compare Against Previous Version". If you're running on Mac OS X 10.7 or later, this command gives you access to previous versions of the document you're working on; you can compare and integrate changes from those versions, as desired. A new version is created each time you save a file. The version history is arbitrarily limited by the system; if you wish you may disable version creation entirely with an expert preference:
defaults write com.barebones.bbedit AllowVersionedSaves -bool NO
  • There's a new menu in the menu bar: "Go". This menu contains some navigation commands that were previously on the Search menu (thus shortening the latter), and adds new commands and capabilities.
  • There is a new command: Go -> Named Symbol... This is third on the "Go" menu, and has a factory default equivalent of Cmd-Ctl-J (you may need to assign it yourself if it doesn't show up automatically, which could happen if you have keyboard equivalents held over from a suitable ancient version of BBEdit).
This will present a sheet with all the functions and markers listed, and a filter box at the top. Choosing an item from the list jumps the text view to that location in the file.
  • The "ASCII Table" palette has been replaced by the Character Inspector, which gives you live inspection of your selected text. Although it's a static display, you can select any of the representations of your selection and copy (or drag) them as desired.
  • Added a new (dynamic) menu command to the File menu: "Close All in Project". When the front window is a project, and contains open documents, this command is enabled and will close all of the documents in the project without closing the project itself. The factory default equivalent for this command is Command-control-W.
  • "Compare Two Front Documents" has been changed to "Compare Two Front Windows". This more accurately reflects its behavior, and provides for a more predictable set of rules, specifically: this command is enabled only if there are two or more editing (or project) windows open, and a text document is active in each of the frontmost two windows, and if neither window is blocked by a modal dialog box).
  • Added a new command to the Edit menu: "Paste & Select". This is dynamic, and becomes visible when holding down the Option key. The factory default keyboard equivalent is Command-Option-V. (It's also visible in the contextual menu in text views, again by holding down the Option key.)
  • Live preview windows now have a new item in their navigation bar: "Preview Filter".
  • Both Unix scripts and Unix executables will receive the document's contents as UTF-8 text on STDIN; they should write UTF-8 text to STDOUT, and the output will be previewed.
  • The default preview filter can also be a symlink or alias to a filter elsewhere.
  • In addition to a Preview Filters directory, BBEdit packages can now also contain Preview Templates and Preview CSS directories, within their Contents directory. Items here follow the same rules as for the global Preview Templates and Preview CSS folders in Application Support/BBEdit/, and will appear on the appropriate menus in a live preview window.
  • Tags file discovery has been enhanced, and no longer relies strictly on directory scanning. Tags files are discovered using Spotlight; a file whose name is tags or whose name ends in .tags or .ctags (see below) is eligible, and if it resides in the ancestor directory hierarchy of the document, its symbols will be available for code completion and syntax coloring.
  • The contextual menu for file lists in projects gets a "Save" command; "Close" and "Close Others" now work in the "Project" section of the file list in project windows.
  • There's a new grouping in the sources list for multi-file search/replace and text factory application: "Open Editing Windows". This collection includes any window which has one or more editing documents in it. If you want to constrain the operation to the documents that are already open in a particular window, this is the place to do it.
  • There's a new color setting for syntax coloring: "Variables". Some languages support this (PHP and Perl); most do not but the color information may be generated by language modules at their discretion.
  • Projects save to disk have a new item in the bar below the file list: it presents a menu containing "Site Settings", which brings up a sheet for configuring the project as a web site. The old "Sites" in the Setup panel are no longer supported.
  • Text windows get a scripting property: "display magnification". This is a float; 1.0 is normal display.
  • There's a new switch for the bbedit tool: -m (long form --language). This allows you to specify a language name on the command line when piping data in to bbedit from a Unix tool.
  • The popup menu next to the "href" attribute in the Markup panel (when editing anchors and certain other tags) now includes internal anchors for eligible destination files. Anchors in the document you're editing are available at the top level of the menu; anchors for other files listed on the menu are in a submenu attached to each file.
  • Clippings may be used in Find and Find Multiple windows. If this causes you heartache, you may disable the feature using this expert setting:
defaults write com.barebones.bbedit ClippingsWorkInFindWindows -bool NO
  • When you use the right-arrow key to navigate over a closing delimiter (right paren/brace/bracket/curly quote), the opening delimiter will be briefly highlighted. If you wish to turn this off, there's an expert pref:
defaults write com.barebones.bbedit FlashBalancePointsWhenNavigating -bool NO
  • Changes:
  • Unix script output logs now live in ~/Library/Logs/BBEdit/, either in "Unix Script Output.log", or, in the case of script-file-specific log files, in ~/Library/Logs/BBEdit/Unix Script Output/{script name}.log.
  • "Hard Wrap" now does, essentially, what "Rewrap Quoted Text" used to (in fact, the two were virtually identical). So, the latter command is gone, and "Hard Wrap" brings up a sheet for performing a quoting-character-aware wrap. (If there are no quote-prefixed lines, then this behaves identically to the old Hard Wrap.) Note, also, that there is now only an option for wrapping to a specific character width.
  • The Markup Builder panel now provides additional options for choosing a file when editing URI attributes (such as href): a popup menu allows you to choose from files in the same directory as the front document, including submenus for folders (one level down). You can also easily get at recently used files, as indicated. The "Other..." command will open a file picker for choosing an arbitrary file.
  • The text view toolbar has been slimmed down and further simplified. The pencil has been consigned to the dustbin of history. The toolbar itself is now only one row of text, and displays the document's path (with the associated popup menu), as before. The "Last Saved" indicator has been moved into the status area at the bottom of the text view, and may be switched on and off globally, using the "Document save date" preference in the Appearance preferences.
  • "\n" is now a synonym for "\r" when searching and replacing, with or without Grep; use either when you wish to find or replace with a line break.
  • Support for CVS has been removed; the "CVS" menu no longer exists. Note that you can continue to use BBEdit as a commit editor and diff helper for CVS, with the appropriate CVS configuration variables referring to the bbedit and bbdiff tools, respectively; this is left as an exercise for the reader.
  • "Convert to ASCII" is gone as a discrete menu command; its ability has been rolled into "Zap Gremlins". ("Replace with Code" will replace with the nearest ASCII equivalent.)
  • Added a new setting to the Keyboard preferences: "Allow Page Up and Page Down keys to move the insertion point". It's off by default, which is the standard Mac behavior. Refugees from other platforms may feel more comfortable if it's turned on; doing so allows the insertion point to remain in the same position relative to the top and bottom of the window (which entails changing its position in the text) when scrolling via Page Up or Page Down.
  • There's new iconography for the toolbar and navigation bar.
  • Added a padlock next to the document save date, to indicate the document lock state. This takes the place of the old pencil. (Side note: "If you don't, I'll poison your dinner" is a compelling argument for a feature request, but can typically only be used once.)
  • Shell worksheets get a new icon to indicate sudo mode.
  • There's a new preference in the Appearance preferences: "Document Lock State". This controls whether the padlock indicator is visible in the status area (next to the save date). When the padlock is visible, you can click on it to unlock (or lock) the document.
  • In the Multi-File Search window, you can now choose Zip archives (or any file that looks like a Zip, including things like EPUB) as the source for a multi-file search (or replace).
  • There are three new commands on the Edit menu: "Move Line Up", "Move Line Down", and "Delete Line". These are single-command (and thus single-keystroke) equivalents for editing operations that might otherwise require multiple gestures. The keyboard equivalents can be modified in the "Menus & Shortcuts" preferences as usual. NB: Control-up-arrow and Control-down-arrow previously were used for scrolling the document using they keyboard. If you wish to restore that behavior, clear the keyboard equivalents for Move Line Up and Move Line Down, or set them to something else.
  • Enhanced the detection used by "Open Counterpart" and the Counterparts navigation bar item to include all files whose file names begin with the base name of the active document's file. The Counterparts navigation bar item now drops a menu with all of the available counterparts. There's a new keyboard equivalent in the "Navigation Bar" section of the Menus & Shortcuts prefs, so that you can use the keyboard to open the Counterparts menu, if desired.
  • The Find Differences results windows no longer display the pencil next to the new and old file names.
  • In addition to toggling Soft Wrap, the Text Display menu lets you change the wrap mode. Those options are now also in the toolbar's Text Options menu.
  • The legacy AutoAssignCommandKeysToWindows expert preference (which was deprecated in 10.0 and actually never documented) has been removed, along with all of the machinery that used it.
  • The search logic in "Open Counterpart" has been improved to cover cases that weren't previously served by strict project-searching logic.
  • The items listed in the "Menus & Shortcuts" preference pane get a subtle placeholder when no keyboard equivalent is assigned.
  • In addition to showing counterparts, the "Counterparts" navigation bar item now shows files that are in the same directory as the active document (as long as it exists on disk).
  • The "Project" item grouping in project windows can now be collapsed. The "Currently Open Documents" list will take up the slack.
  • More improvements to Open File by Name
  • When creating new markup (as opposed to editing existing elements/attributes), the markup panel will now remember the attributes that you used to create a given element. The memory is keyed by the element name, so attributes are remembered separately for the different elements that you use.
  • If there are no other alternatives, Open File by Name will figure out whether the front document is contained within a configured web site. If so, the site's root will be included in the file search.
  • BBEdit no longer promises or supplies Mac Roman text to the clipboard, nor looks for it. Since most Mac OS X applications now supply Unicode or UTF-8, this should have no visible effect.
  • There has been extensive internal rework, to remove cruft and pave the way for future improvements.
  • When considering dropped files for insertion or linking, the application will now inspect their contents in cases in which the file metadata doesn't indicate that it's a text file.
  • The Unix Script Output log file is now stored as UTF-8 with no BOM. (The on-disk encoding of this file is an implementation detail that you should not rely on.)
  • There's now a kill switch for default filename extensions
  • Results exported as text now include the full path to the file(s) in question, relative to the home directory if possible.
  • When using "Open Selection" or choosing an include file from the Includes menu in the navigation bar, BBEdit will use the same logic as Open File by Name to locate the desired file. Open Selection will no longer open the "Open File by Name" window (which used to require an extra step to open the desired file), unless there's more than one match found for the specified file name.
  • Changed the factory default setting for FixedWidthFontSmoothingThreshold to 8pt, so that Monaco 9 looks reasonable when antialiased (especially on retina displays).
  • The appearance of the file lists in disk browsers and project windows has been updated.
  • Made two behavior changes to Unix tool discovery: first, if the tool's override path is set to /dev/null, BBEdit will pretend that the tool doesn't exist at all, effectively disabling any features that depend on the tool. Second, if the override preference exists and is an invalid path, BBEdit will give up immediately rather than attempting to locate the tool in your PATH or elsewhere.
  • When doing an "Open Selection" on a full path ("/path/to/something"), home-relative path ("~/path/to/something") or URL, the indicated item is now opened immediately if found, rather than requiring a trip through the Open File by Name window.
  • The "modified" property of a document is now mutable while the document is being created. This allows constructions such as:
make text document with properties {contents:t, modified:false}
  • When running on 10.8 and later, BBEdit now uses the system-provided Notification Center for completion of certain operations, unless Growl is installed and running, in which case it will use Growl as before.
  • The "Show Clipboard" command on the Edit menu has been retired. It now lives on a farm upstate.
  • When entering full screen mode, the application figures out whether the window width should be increased to take up the full screen width, or not, based on the width of the window relative to the width of the screen that it's on.
  • Counterpart discovery (for "Open Counterpart" and the Counterparts navigation bar item) can now use an open project document to locate eligible files.
  • The single-file Replace All sheet is now off by default. The same expert pref is still available if you like forced interruptions.
  • If the xcrun tool is available, BBEdit now consults with it when looking for Unix helper tools (e.g. svn) in the absence of an explicit expert override.
  • If a Worksheet takes more than 0.5 seconds to complete its task, it will post a notification when it returns to idle.
  • Control-n and Control-p are synonyms for previous/next when navigating the list of results in Open File by Name windows.
  • Control-k is a synonym for Command-Delete (a.k.a. clear field) in Live Search.
  • In the Open File By Name window, holding down Option while clicking "Open" (or pressing "Return") will ask LaunchServices to open the selected items.
  • App state restoration has an indeterminate progress dialog, hopefully hinting that "No, we're not hung; we're busy".
  • The "current process" indicator in shell worksheets now has a spinny thing so that you know something's running, and a clicky thing if you want to stop the running thing indicated by the spinny thing.
  • When running a shell script from the shebang menu, additional arguments are passed along to the command
  • Update the internal HTML5 language spec to the current state of the working group's "living spec" as of November 14, 2012. It will surely be completely outdated by the 15th.
  • Fixes:
  • Leading and trailing whitespace and line breaks are now stripped from string values in codeless language modules, to resolve situations in which a multi-line formatted pattern using (?x:...) ended with one or more carriage returns after the closing parenthesis, which would in turn cause the pattern to not function as intended.
  • Fixed bug in which certain malformations in codeless language modules were not detected early enough to prevent them from causing problems later on.
  • Fixed bug in which "Run in Terminal" and "Run in Debugger" were inappropriately sticky for scripts run from the Scripts or Apply Text Filter menus.
  • Made a change to reduce the amount of time spent loading names from tags files for syntax coloring.
  • Fixed bug in which the #FILE# placeholder used an incorrect name when the document whose name should have been used was open in a project window.
  • Fixed a bug in which the Multi-File Search window did too much work in situations where documents were being opened (or closed) at high frequency.
  • Fixed bug in which changing the Soft Wrap Text settings (Page Guide/Window Width/Character Width) in per-language preferences would set them to the wrong value.
  • Fixed a bug in which Replace All operations consumed far more memory than was appropriate, which in turn would contribute to prematurely running out of memory while processing a large quantity of files.
  • Fixed bug in which the UseEscapeKeyAsCompletionTrigger expert preference didn't work. Also, its behavior has been changed such that when it is turned on, the Escape key is no longer functional as an Emacs command prefix. This eliminates the need to strike Esc twice in order to trigger completion (when the expert preference is in use).
  • Fixed bug in which the "Comment" and "Uncomment" buttons in the Utilities palette were incorrectly disabled. They're now coalesced into one, Un/Comment (which tracks the change to the menu structure for 10.1.1) and it behaves correctly now.
  • Fixed bug in which the window shape saved by "Save Default Project Window" was not honored when opening a folder or making a new project from scratch.
  • Fixed missing Command-key modifier on the keyboard equivalent for Un/Comment.
  • Added a few more types to the list of things that BBEdit recognizes as text documents.
  • Made a change to avoid tickling a bug on 10.6.x which could cause stalls or a crash while saving file references in projects and a few other locations.
  • Attribute values that look like they're dynamically generated are now skipped by the HTML syntax checker, in order to suppress the errors that would result.
  • Fixed a bug in which the #! line in unix filters run from text factories was parsed incorrectly when the Unix filter's source file was not marked +x (executable).
  • Fixed crash which would occur when cancelling a download of the user manual.
  • Corrected about-box link to Zocalo Coffeehouse; added a credit line for Funranium Labs (the Black Blood of the Earth).
  • Fixed a bug in which opening (by pulling down) the Open Recent menu would mount remote volumes or disk images when it was really not necessary. That work is now deferred until you actually choose an item from the menu.
  • Fixed internal exception and subsequent crash which would occur when trying to save a Grep pattern (via the Setup window) with an empty field.
  • Fixed bug in which a now-unused preference from an old version would cause the toolbar to remain visible, even when all of the gating preferences were turned off in the Appearance prefs.
  • Fixed bug in which included files were not properly located when specified relative to the site root of a configured web site.
  • Fixed bug in which Preview in BBEdit didn't work correctly for Lasso documents.
  • Fixed bug in which contextual-menu markup commands were not available in Lasso documents, even when the selection range was in an HTML tag.
  • Fixed bug in which saving a document would cause its name to reset in the project list, in cases where it had previously been renamed using the "Rename" command.
  • Fixed a bug in which file locators (used in projects and other places) would inappropriately carry over a legacy-format alias record.
  • Fixed a bug in which folders in project windows would sometimes refuse to twist open after opening the project.
  • Fixed bug in which "Copy as Styled Text" would cause a crash when applied to certain files (dependent on syntax coloring).
  • Fixed bug in which "Replace All" or "Replace to End" would fail in cases where the most recent direct search from the Find window was a "Find Previous", and there were no matches between the start of the selection range and the beginning of the document.
  • Resolved an incorrect icon reference in the application properties which caused blank icons to be displayed for TextWrangler documents; and removed some inappropriate UTI exports.
  • Fixed bug in which New (with Clipboard) incorrectly forced the document's language to "(none)" and thus interfered with automatic language guessing.
  • Fixed bug in which the esc-q Emacs keybinding brought up the Hard Wrap options sheet, instead of just doing it.
  • Fixed a pair of bugs that conspired to mangle windows located on a display which got disconnected; typically they would end up back on the main display, but at an unusably tiny size.
  • Armorplated the suspected site of a nonreproducible crash.
  • Fixed crash which would occur when decoding AppleDouble files from within Zip archives, and the file was missing an entry for the resource fork.
  • Fixed bug in which using the "Close" contextual menu to save and close multiple documents would result in the documents being neither saved nor closed.
  • Fixed bug in which the file type filter setting was not correctly retained when closing and reopening a project. Along the way, cleaned up some glitches in the file filter menu.
  • Added some missing search keywords for items in the Application preferences.
  • Added comment strings to the Verilog and VHDL language modules.
  • Changed the embedded Textile preview script to properly use UTF-8 I/O so that non-ASCII characters preview correctly.
  • Fixed a crash when starting up with items in our Startup Items folder and DragThing running.
  • Fixed crash which would occur when using a service to open items while DragThing was running (and in a couple of other situations).
  • Fixed a crash which would occur while trying to locate ctags files relative to a file that had been implicitly created by a command of the form bbedit ../path/to/some/file.txt, when the file in question didn't exist yet.
  • If the front editing window is in full screen mode, then Unix script output will be opened into the front window, rather than into a separate window (and separate space). (In cases where the Unix Script Output window is already open, there will be no change to document grouping or ordering.)
  • Fixed bug in which windows created while BBEdit was in full screen mode would end up with their title bars under the menu bar after exiting full screen mode.
  • Completion is now allowed in "content" runs of TeX documents.
  • When the HTML function scanner sees a tag missing an explicit language qualifier, it will now assume the element to contain JavaScript, so that JS function detection and folding work correctly within.
  • Fixed bug in which C++ typedefs containing namespace declarations would confuse the function scanner.
  • Attempted workaround of an OS bug in which keyboard events registered during or close to the end of a three-finger trackpad drag (to select text) were lost. So, if you did a three-finger drag and hit Cmd-X too quickly after releasing the trackpad, the desired Cut operation would not take place.
  • Fixed bug in which using "Save to FTP Server" on an open document would not correctly update the information in the Currently Open Documents list (or in the project).
  • Added "rgba" to the CSS keywords list.
  • Fixed bug in which automatically generated CSS markup would inappropriately use tabs for indentation, instead of spaces, when "Auto-Expand Tabs" was turned on in the document being marked up.
  • Fixed crash which would occur when trying to manipulate certain properties of a browser window when no document was being viewed.
  • The number of arguments passed to Unix command execution is now limited by the total amount of data that's allowed to be sent to the pipe (64K - 1), and not a hard number of arguments. This resolves a "too many arguments" error that would occur when trying to perform certain large-scale operations on discrete files (such as svn revert on a lot of selected files in a results list).
  • The inline collapsed-text "pill" indicator is now scaled appropriately for a larger range of font sizes (and looks more attractive at all sizes).
  • Fixed crash when running a text factory containing one or more "Run Unix Filter" actions.
  • Fixed a bug in which certain fonts could not be used for printing.
  • Fixed bug in which the sources list in the Multi-File Search window wasn't highlighted with the proper colors when the window (or the application) was not active.
  • fish is added to the internal list of shells that are run as login shells (for worksheets). Note that at this writing, fish isn't actually usable in worksheets, but these settings will be necessary for when it's compatible.
  • If necessary, BBEdit will now ask the installed svn for a file's status, in cases where no .svn directory is present. This allows the built-in subversion commands to work correctly with Subversion 1.7 and later.
  • Check for certain (very short) but canonical strings at the beginning of a possible text file. This corrects some cases in which a UTF8 check of the partial file can end up falsely reporting the file as non text, in case the file contains a lot of valid multi-byte UTF-8 characters, and the check ends on a character boundary.
  • Fixed bug in which the results of "Find Definition" were not properly sorted by line number as they should have been.
  • When enumerating an Xcode project, eliminate duplicates to avoid duplicate results in the Open File by Name window (and other places).
  • Fixed bug in which soft-wrap indentation preferences were not correctly applied when printing.
  • Improved guessing of Objective-C/C++ files.
  • Fixed bug in which the last line of the selection would be skipped entirely when doing a "Print Selection", if the selection did not end with a line break.
  • Fixed bug in which ridiculously long strings were not selectable in the search history menu.
  • "Select Line" and "Select Paragraph" are now disabled in the Find and Multi-File Search windows.
  • Fixed bug which allowed disk browser windows to be collapsed to zero width.
  • You can now use "Replace to End" when the Find window is in front (assuming that the window immediately behind is also an eligible target for a Replace All operation).
  • Truncate the file name in the "Run..." sheet (on the #! menu) to avoid wrapping in the control.
  • Fixed impedance mismatch in the scripting system internals, in which testing for uniqueness of an item's name was case sensitive, but resolving references to items by name was case insensitive, leading to errors when trying to do things like compare two open documents with names differing only in case. (Note that as a side effect of this fix, BBEdit will be strict about resolving references to objects by name; the case that you supply must match the case of the desired object.)
  • Fixed bug in which the Markup Builder panel would appear in outer space if the insertion point (or selection range) had been scrolled out of view.
  • Fixed bug in which the "Apply Text Filter" head menu couldn't be hidden, and corrected the name in the Menus & Shortcuts preferences.
  • Added plurals for project classes in the scripting terminology.
  • Added "!" to the list of characters which is considered when deciding whether a string needs to be shell-escaped before sending it to the Terminal.
  • Fixed bug in which the HTML checker was looking for the wrong kind of delimiter in 'headers' table attributes.
  • Fixed bug in which the "Run selection only" option in the Run... command on the #! menu had no effect. Note that along with this fix there's a behavior change: if you have an eligible selection, the "Run" (no ellipsis) command will run the selection; otherwise it will run the whole document. This is different from the previous behavior, in which the "Run selection only" switch was sticky (and since it was invisible, you never knew what would happen).
  • When doing "Find in Reference" URL lookups, only the symbol name (and, if used, the language name) are encoded with percent escapes, rather than applying them to the whole URL string. This way, you can use URL metacharacters in the template string (such as "#") and they'll work.
  • Fixed formatting of , , and other tags with special content considerations when using a profile (including the "Pretty Print" option).
  • The UseNumericKeypadForCursorMovement preference still works, but since there's no GUI for it, changes to it can only take place outside of the application. Such changes are now correctly detected. Also, there's now notification feedback for toggling the setting on the fly (which can be done using Option-Num-Lock [the upper left key on the numeric keypad]).
  • Canonicalize filter names for the "Apply [Last] Text Filter" command.
  • Fixed bug in which the ProjectsOpenItemsOnSingleClick expert preference was not honored for the Project and Recent lists, as it should have been.
  • Corrected bug which caused the Text Encodings preference pane to display stale values after Restore Defaults, unless the app was quit and restarted.
  • If you dismiss the Markup Builder panel while the combo box is open, we now hide the combo box.
  • Fixed bug in which certain tags which should have been allowed as selections in the markup panel (for creating a new tag via Edit Markup) were not.
  • Corrected the scripting dictionary to clarify that the search string and replacement string properties are returned as Unicode text; and the search string script and replace string script properties have been removed, since they haven't been used for a long time (and access to them didn't work).
  • Fixed bug in which the line number bar didn't always refresh correctly when adjusting the line spacing preference.
  • When creating a new HTML document using a Unicode encoding, non-ASCII characters in the title are no longer entity-escaped, since they don't need to be.
  • Fixed bug in which list views with keyboard focus wouldn't allow keystrokes that didn't belong to them to propagate to the rest of the system.
  • A bug in the python module caused folds to start in the wrong place when a foldable, non-comment block began with a comment.
  • A Java file's fold points and function popup would become confused if, under certain circumstances, a class instance was created and properties were accessed all in the same statement, such as with new Foo(new Bar(bat).baz()).
  • Attempts to change the soft wrap mode to an invalid value using the scripting interface will now report an error.
  • Fixed crash which would occur when leaving certain terms blank in a file filter.
  • Fixed bug in which the "Edit" button for editing the known_hosts file in case of an SSH host verification failure didn't work on newer versions of the OS.
  • "Save As" is now disabled when the active document is "synthetic" (derived from the contents of a Zip archive or tarball, or downloaded directly from a URL). Use "Save a Copy", which behaves correctly in ways that "Save As" did not when it was inappropriately enabled.
  • Removed inappropriate attribute specifications from the tag definition in the HTML 4.0/4.01 syntax checker definitions.
  • The font panel accessory view (with the tab width setting) no longer comes and goes whenever the font panel's event target changes; this in turn eliminates the tendency of the font panel to "shimmy" when closing or opening a bunch of documents.
  • Fixed bug in which the per-language tab width setting wasn't properly applied when changing a document's language setting.
  • Added large and high-resolution icons for the application.
  • When importing the clipboard from another application, we now rotate the clipboard ring (in a fashion similar to what happens when you Copy; so no rotation occurs if the current slot is empty). This way, "Paste Previous" can be used with text copied from other applications.
  • When enumerating a project for Open File by Name, duplicate entries are eliminated in order to avoid duplication in the results.
  • Fixed crash which would occur when quitting with a project window open, and a document with unsaved changes was open (not in the project window) and "Restore unsaved changes" was turned off in the Application preferences.
  • When running a shell process (for #! scripts and other purposes), we take a moment to grab the login environment and use that to set up the shell environment for the script being run. This should (among other things) ensure that $PATH and other important environment variables are set correctly when running Unix scripts and commands from within the application.
  • Fixed bug in which window split options were inappropriately mirrored into other windows (e.g. results or disk browsers).
  • Fixed bug in which in-document token completion didn't work for Fortran-9x documents.
  • Fixed bug in which site-defined environment variables were not set for #bbinclude Unix scripts when they should have been, and were instead passed through as "undefined".
  • Fixed a bug which caused the delete key to behave oddly when editing an href in the Markup Builder panel.
  • Fixed bug in which windows containing editing views (including project windows) were allowed to be made narrower than was healthy.
  • Fixed crash when using the contextual menu to create attributes.
  • Prevent Worksheets from executing commands that start with an opening paren, but do not end with a closing paren.
  • Fixed a memory leak managing a project's recent items.
  • Fixed a bug which cased Worksheets to not save if CWD could not be determined at save time (due to broken pipes, or a busy worksheet).
  • Corrected a bug which caused the Menus & Shortcuts pane to display stale keystroke data until the window had been recycled.
  • Made it possible to use the Menus and Shortcuts pref pane to assign key equivalents to scripts nested in folders.
  • Fixed a bug which made clearing or assigning key equivalents which contained glyphs unreliable.
  • The Patterns setup editor and find menus menus are kept in sync. Items may be rearranged in the Setup window, and the menu will immediately reflect those changes.
  • Removed some obsolete floaters from the AppleScript dictionary.
  • Disk Browsers expose a r/w "root path" property in the scripting dictionary. It does what it sounds like it does.
  • Fixed a bug which caused Live Search to mis-report the hit count if a match abuts its own doppelgänger.
  • replacing all the text in a view via the scripting interface (or certain other mechanics) no longer scrolls to the end.
  • Fixed crash which would occur after copying diffs to the clipboard, or exporting them to a text file.
  • When exporting results from a Find Differences window or results browser, the application now provides a default file name.
  • Results exported from a Find Differences window are now written with Unix line breaks, instead of legacy Mac OS.
  • When exporting results from a Find Differences window or results browser, the resulting file will only have its file type and creator assigned if the application determines that the file name indicates that it's not a text file.
  • Fixed a hang which could occur if a codeless language module had a grep pattern that returned a 0-length match.
  • Disable the Replace All command if "Selected text only" is checked, and the target view has a rectangular selection.
  • Disable all the Find buttons if the search string is empty.
  • Clicks in the text view while the completion panel is displayed both dismiss the completion, and move the insertion point.
  • Zip browsers' nodes are sorted alphabetically, not by pack date.
  • Changes to the File Filters are reflected immediately in Project Windows.
  • Shift Right only adds whitespace to lines that contain non-whitespace characters. The new behavior is keyed to an expert preference.
  • Changed case of and added a couple additional values for PHP ENT* attribute completions.
  • Fixed a bug which caused the functions popup (and floater) to display callouts regardless of the preference setting.
  • "Use Selection for Replace" with an empty selection clears the replace string.
  • Fixed case in which using "Replace" or "Replace & Find" in the Find window would replace the entire contents of the document with the replacement string, in specific cases involving a zero-length Grep match and the document not having a selection range.
  • If a remembered window was full screen when quitting, it is restored to that state when starting up.
  • When restoring application state which includes a zip browser, we open a zip browser instead of a disk browser to the parent folder.
  • When saving a new untitled document, we now make an attempt to pick a reasonable default directory for the save panel, when a disk browser or instaproject is immediately behind the document's window.
  • Auto-folds can be collapsed from either start or end indicators.
  • When saving a file with "Save a Copy" we attempt to create the copy with same permissions as the original file.
  • Made a change to improve performance when filtering ctags completions by language.
  • Wordsmithing.
  • Fixed a problem where block commented code ended up with an incorrect selection.
  • Corrected a bug which would cause the Preferences window's panel selector and panel content to get out of sync.
  • Corrected a long-standing bug which made it impossible to clear an existing value (including placeholders) from the Markup Builder Panel.
Is it too early for scotch?
  • If you enable Typographer's quotes, BBEdit will only insert them in stuff that looks like prose. This allows you to have fancy quotes in the comments and strings in your C files, but still use the real deal in the code parts. (also works in HTML, etc.)
  • Fixed bug in which synthetic project documents (created by dropping a folder on the application to create an instaproject) would report an empty string as their name, which confused internal mechanics and would trigger scripting errors when attempting to access the document by reference (for example, during a documentDidOpen attachment event).
  • New documents created as output from text transformations (e.g. Process Lines Containing) will follow the same rules as all other created or opened documents, when deciding whether to make a new window or not.
  • Fixed a bug which could cause the scrollbar size/position to become stale when cutting text.
  • Command-backspace is now an alternative to Command-D in the "Save changes before closing" dialog.
  • Fixed a bug which would cause the vertical scrollbar to get out of whack if BBEdit was tracking changes to a file on disk, and the file got substantially shorter (like less than one screenful).
  • Corrected horizontal scrollbar calibration when dealing with long lines containing characters which required glyph substitution in the current display font.
  • Assigning or removing a shortcut to a submenu no longer collapses the parent node. While I was at it, selecting a new top menu resets the scroll position and selection in the right pane, so things look much neater.
  • Call -deselectAll: when loading each pane of the Setup editors. This looks nicer, IMO.
  • Shell worksheet views get Last Saved and Text Statistics in the status bar.
  • Holding-down the Option key when double-clicking, pressing the Return or Enter keys, clicking the Open button, or closing your eyes and thinking of ponies, will open an additional FTP/SFTP browser window if the selected item is a directory. (Just like it says in the manual.)
  • Fixed bug in which the application didn't look for Application Support/BBEdit/PreferenceData/ in your Dropbox the way the documentation said it did.
  • This only applies to the folder containing non-preference data files. The com.barebones.bbedit.plist file is managed entirely by the system, and you should not move or rename it. (There's no way to share preferences settings using Dropbox, in other words.)
  • Fixed bug in function generation for Fortran (yes, really) which caused Go -> Functions -> End to fail on the last function in the file.
  • Made some changes to guard against the suspected cause of a crash while attempting to arrange windows under some conditions.
  • Fixed bug in which the function menu would navigate in the wrong window in situations where a document was opened from a Search Results window into an existing multiple-document window.
  • Added some HTML5 block elements to the default format profile (used for the Pretty Print option in Markup -> Utilities -> Format).
  • Fixed crash which would occur when trying to use the scripting interface to create something in a project document that didn't make sense.

New in BBEdit 10.1.2 (May 11, 2012)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features, nor changes to existing features.
  • Fixes:
  • Fixed crash which would occur when decoding AppleDouble files from within Zip archives, and the file was missing an entry for the resource fork.
  • Fixed bug in which using the "Close" contextual menu to save and close multiple documents would result in the documents being neither saved nor closed.
  • Fixed bug in which the file type filter setting was not correctly retained when closing and reopening a project. Along the way, cleaned up some glitches in the file filter menu.
  • Added some missing search keywords for items in the Application preferences.
  • Added comment strings to the Verilog and VHDL language modules.
  • Changed the embedded Textile preview script to properly use UTF-8 I/O so that non-ASCII characters preview correctly.
  • Fixed a crash when starting up with items in our Startup Items folder and DragThing running.
  • Fixed crash which would occur when using a service to open items while DragThing was running (and in a couple of other situations).
  • Fixed bug in which New (with Clipboard) incorrectly forced the document's language to "(none)" and thus interfered with automatic language guessing.
  • Fixed bug in which the esq-q Emacs keybinding brought up the Hard Wrap options sheet, instead of just doing it.
  • Fixed a pair of bugs that conspired to mangle windows located on a display which got disconnected; typically they would end up back on the main display, but at an unusably tiny size.
  • Armorplated the suspected site of a nonreproducible crash.
  • When considering dropped files for insertion or linking, the application will now inspect their contents in cases in which the file metadata doesn't indicate that it's a text file.
  • Fixed bug in which "Replace All" or "Replace to End" would fail in cases where the most recent direct search from the Find window was a "Find Previous", and there were no matches between the start of the selection range and the beginning of the document.
  • Fixed bug in which "Copy as Styled Text" would cause a crash when applied to certain files (dependent on syntax coloring).
  • Fixed internal exception and subsequent crash which would occur when trying to save a Grep pattern (via the Setup window) with an empty field.
  • Fixed bug in which a now-unused preference from an old version would cause the toolbar to remain visible, even when all of the gating preferences were turned off in the Appearance prefs.
  • Fixed bug in which included files were not properly located when specified relative to the site root of a configured web site.
  • Fixed bug in which Preview in BBEdit didn't work correctly for Lasso documents.
  • Fixed bug in which contextual-menu markup commands were not available in Lasso documents, even when the selection range was in an HTML tag.
  • Fixed bug in which saving a document would cause its name to reset in the project list, in cases where it had previously been renamed using the "Rename" command.
  • Fixed a bug in which file locators (used in projects and other places) would inappropriately carry over a legacy-format alias record.
  • Fixed a bug in which folders in project windows would sometimes refuse to twist open after opening the project.
  • Fixed an internal error that generated lots of console noise when starting a multi-file search.
  • Fixed missing Command-key modifier on the keyboard equivalent for Un/Comment.
  • Fixed a bug in which the Multi-File Search window did too much work in situations where documents were being opened (or closed) at high frequency.
  • Fixed bug in which changing the Soft Wrap Text settings (Page Guide/Window Width/Character Width) in per-language preferences would set them to the wrong value.
  • Fixed bug in which password changes (for items already stored in the keychain) were not saved when they should have been.
  • Fixed a bug in which Replace All operations consumed far more memory than was appropriate, which in turn would contribute to prematurely running out of memory while processing a large quantity of files.
  • Fixed bug in which the UseEscapeKeyAsCompletionTrigger expert preference didn't work. Also, its behavior has been changed such that when it is turned on, the Escape key is no longer functional as an Emacs command prefix. This eliminates the need to strike Esc twice in order to trigger completion (when the expert preference is in use).
  • Fixed bug in which the application didn't accept public.url or public.file-url data types via the Services interface, even though it claimed it did so.
  • When writing links in a document that is not in the site root, but the link makes reference to a file that is in the site root, and the destination site's addressing is set to "Automatic" or "Relative to Site Root", BBEdit will now generate the link to be relative to the destination's site root, rather than always generating a fully qualified URL.
  • Added a few more types to the list of things that BBEdit recognizes as text documents.
  • Fixed bug in which the "Comment" and "Uncomment" buttons in the Utilities palette were incorrectly disabled. They're now coalesced into one, Un/Comment (which tracks the change to the menu structure for 10.1.1) and it behaves correctly now.
  • Fixed bug in which the window shape saved by "Save Default Project Window" was not honored when opening a folder or making a new project from scratch.
  • Made a change to avoid tickling a bug on 10.6.x which could cause stalls or a crash while saving file references in projects and a few other locations.
  • Attribute values that look like they're dynamically generated are now skipped by the HTML syntax checker, in order to suppress the errors that would result.
  • Fixed a bug in which the #! line in unix filters run from text factories was parsed incorrectly when the Unix filter's source file was not marked +x (executable).
  • Fixed crash which would occur when cancelling a download of the user manual.
  • Corrected about-box link to Zocalo Coffeehouse; added a credit line for Funranium Labs (the Black Blood of the Earth).
  • Fixed a bug in which opening (by pulling down) the Open Recent menu would mount remote volumes or disk images when it was really not necessary. That work is now deferred until you actually choose an item from the menu.

New in BBEdit 10.1.1 (Jan 11, 2012)

  • Additions:
  • In project windows, "New Text Document" and "New Folder" now prompt you (using a standard save panel) for the location of the item you wish to create. After creating the item, BBEdit will figure out whether the item needs to be added to a collection (if one was selected when using the commands) or to the top level of the project, or adjacent to another item already in the project.
  • There's a new script attachment point for documents: documentShouldFinalizeAuthenticatedSave. This gets called in cases where an authenticated save is necessary (for text documents only). An attachment script for this purpose might look like this (the comments are important, so read them!):
  • on documentShouldFinalizeAuthenticatedSave(theDocument, tempFilePath, destinationPath)
  • on input: tempFilePath points to the contents of the document
  • written to a temp file, ready to move to the destination;
  • destinationPath is where the file should be copied.
  • on exit: if the operation succeeded, delete the temp file (or
  • else the application will assume the operation failed) and
  • return YES for success
  • this is pretty straightforward: "cp tmpFilePath destinationPath"
  • do shell script "cp" & " " & quoted form of tempFilePath & " " & quoted form of destinationPath with administrator privileges
  • now remove the temp file, this indicates to the application that we did the work
  • do shell script "rm" & " " & quoted form of tempFilePath
  • return true
  • end documentShouldFinalizeAuthenticatedSave
  • More improvements to Open File by Name:
  • If there's no project open, and Xcode isn't running, OFBN will look in the root directory of the frontmost disk browser (if available). If there isn't one, then OFBN will look in the CWD of the frontmost shell worksheet (if available). And finally, if that isn't available, OFBN will use the directory containing the frontmost text document (if it has been saved to disk).
  • Choosing "Open Selection" (which is available when appropriate text is selected in the front editing view) will now bring up the Open File by Name window, and populate the search box with the selected text (and the search results, if any).
  • The contents of the search box are now accessible via the scripting interface, as the search string property:
get search string of open file by name window set search string of open file by name window to "Hello World"
Changing the search string will update the results.
  • The site setup panel (for each site in the BBEdit -> Setup -> Sites list) now contains an "Addressing:" setting. This lets you control the default addressing used when generating links for anchor and image (and other tags with URI attributes). The settings are:
  • Automatic (pre-10.1.1 behavior): When the linked file is in the same folder or a descendant of the document, generate the link relative to the document. Otherwise, generate the link relative to the site root directory.
  • Relative to site root: Always generate the link relative to the site root directory.
  • Relative to document: Always generate the link relative to the document.
  • The "Strip trailing whitespace" and "Ensure file ends with line break" options can now be configured per-language, if desired.
  • Added a "Privacy" button in the Application preferences for non-App Store builds, linked to the privacy policy on our web site.
  • Changes:
  • BBEdit will no longer automatically reveal documents in the project list when you select them. View => Reveal in Project List still works. If you want automatic revealing back:
defaults write com.barebones.bbedit AutoRevealSelectedDocumentInProjectList -bool YES
  • Scanning for .bbeditSettings files is now off by default, gated on an expert preference. The feature is deprecated, so don't get too attached to it because it's going to go away for good in a future version. Meanwhile, if you rely in it, please let us know how you use it, and you can turn it back on using an expert preference:
defaults write com.barebones.bbedit EnableSettingsScan -bool YES
  • Added support for the emacs esc-T (transpose-words) gesture.
  • BBEdit now makes a reasonable guess at a filename extension when using "Save As" for a new document.
Language modules can specify a "BBLMPreferredFilenameExtension" key, with a string value. This will be used if necessary. If it is absent, the first item in the BBLMSuffixMap array is used.
You can also use an expert preference to set the preferred extension on a per-language basis:
defaults write com.barebones.bbedit PreferredFilenameExtension_ -string "abc"
Replace with the actual language name; for example:
defaults write com.barebones.bbedit PreferredFilenameExtension_C++ -string "cxx" defaults write com.barebones.bbedit PreferredFilenameExtension_YAML -string "yaml"
Note that the extension you specify should not include the leading period.
  • The user manual is no longer included in the application package. When you choose "User Manual" from the help menu, the application will download the proper user manual PDF and store it in the Application Support folder. (Thus, it only needs to download the PDF once, unless you remove it or update to a new version.)
  • The "Open the User Manual" option has been removed from the first run dialog.
  • The file filter menu used in disk browsers and project windows has been reworked to make it a little more useful. The options are now:
  • All Available: When selected, an item is listed if BBEdit recognizes it as one of its own document types. This includes text files, images, text factories, and so on.
  • Text Files Only: Only text files will be listed.
  • Everything: Every item is listed, including invisible files and folders.
  • The default keyboard equivalent for "Un/Comment Selection" is now Command-/, for consistency with Xcode.
  • The Markup -> Utilities -> Comment and Uncomment commands have been removed, since they're redundant with Text -> Un/Comment.
  • When using Un/Comment, if nothing is selected, BBEdit will apply the line-comment delimiter to the entire line containing the insertion point. If you preferred the old behavior:
defaults write com.barebones.bbedit CommentWholeLineWithInsertionPoint -bool NO
The PreferLineCommentsWhenCommenting expert preference now defaults to YES (and it is documented in the Expert Preferences help now), so BBEdit will prefer to use the language's line-comment delimiter whenever possible.
  • Fixes:
  • Fixed bug in which certain external file system changes would cause the project window to inappropriately activate (and de-minimize, if it had been minimized).
  • Fixed bug in which a project document closed with its file list hidden would be confused when reopened.
  • Fixed bug in horizontal scrollbar calibration in files with extremely long lines.
  • Fixed a TeX syntax coloring bug for math sections delimited like \(math\) and \[math\].
  • Fixed bug in which an incorrect error was returned from attempts to save changes in a Zip archive.
  • Fixed crash in the Pascal function scanner which would occur in files that used "Object" as a data type.
  • Fixed bug in which dragging a window to a screen that was too small to contain it would fail to resize the window to fit on the screen.
  • Fixed bug in which the markup panel wouldn't open to the proper size when it was invoked at or below a certain point on screen.
  • Updated the Growl framework to 1.2.2.
  • Fixed bug in which CSS url(...) values with nothing (or only whitespace) in between the parentheses would crash the CSS parser.
  • Restored site-installation-specific preferences (for large managed installations) to working order.
  • Fixed bug in which an "omnibus" attachment script (Application Support/BBEdit/Attachment Scripts/BBEdit.scpt) was not consulted for attachment points when it should have been.
  • Fixed bug in which an inopportune click in the markup tools palette while the markup panel was coming up would result in an undismissable error alert behind the markup panel, and a hung application.
  • Fixed cosmetic bug in which stale action buttons were briefly visible in windows with the file list collapsed.
  • Fixed bug in which settings saved in document state were inappropriately applied when language-specific settings already existed.
  • Added .cxx as a factory default extension mapping for C++.
  • Worked around bug in the old Flip video codec (which many folks still have installed) which would cause BBEdit to crash when opening or viewing images.
  • Fixed bug in which properties specified in an "open" event were not properly applied when the target of the event was already open. Among other things, this meant that saved workspace restoration didn't move any palettes that were already open.
  • Fixed bug in which projects would stop letting you interact with items stored on unmounted volumes, even after the volume had been remounted. (For example, an SMB or AFP server volume.)
  • Fixed a couple of bugs which made it difficult to relocate project documents, and which may interfere with a project's ability to find files contained in it.
  • Fixed a latent memory management bug in the Open File by Name text ranking.
  • Made a change to improve performance of "Open File by Name" in situations where a long file name (often complete) was entered or pasted in to the search box.
  • Clicking on a project list item that is already selected will now cause it to be opened, in the case where it had previously been closed by clicking on the "X" widget and nothing else had been selected in the meantime.
  • Fixed bug in which revealing a file in the project list would sometimes twist open the wrong ancestor, in cases where the ancestor's name was a prefix of the file's actual ancestor directory name.
  • Fixed bug in which clicking on a project list item would cause it to open in a new window when the project window's editor view was collapsed.
  • Quieted a console warning about an autoreleased NSCFLocale, which occurred when doing a single-file Replace All.
  • Fixed crash which would occur when attempting to use a font with defective metrics, such that it reported a zero line height.
  • Fixed bug in which manually selecting a tag name from the markup panel's combo box did not correctly autofill the panel's attribute list.
  • When using the short-form "echo" construction in PHP, the opening = is now colored as a directive, along with the opening

New in BBEdit 10.1 (Oct 6, 2011)

  • Additions:
  • "Open File by Name" has gotten a makeover. The window that opens is now modeless, and you can leave it open while doing other things in BBEdit. Activating the Open File by Name window (or choosing the menu command) will place keyboard focus in the search box and select its contents, so that you can just start typing. Use the "x" widget to clear your entry.
  • As you enter a file name, BBEdit will search for the name as well as wildcard matches, and present all of the possible matches in the name field's combo box. If the name you enter contains wildcard characters (such as * or ?, e.g. NS*.h or index.*) then the entered name is used as a wildcard pattern. If the name you enter does not contain wildcards, then BBEdit will use it as a basis for casting a pretty wide net. Searching is capped to a maximum number of matches, so that performance is reasonable while typing in the dialog box. The factory default is 200, and may be adjusted: defaults write com.barebones.bbedit OpenByNameMaxWildcardMatches -int 200
  • Search-as-you-type will first look for matches in one of two possible places, in order of preference: the files in the front (Z-order) project document; and the files in the active Xcode project. Then, if Xcode is running, BBEdit will look for files in the system frameworks and includes.
  • If you desire, you can enter an absolute path (e.g. /usr/include/stdio.h), a home relative path (~/Library/), or a URL (http, ftp, sftp, and several other schemes are supported internally), and clicking the "Open" button will open the indicated item (assuming it exists).
  • Otherwise, if no matches are found for the string you entered, the "Open" button will instead read "Search". Clicking the Search button will search for appropriate matches to the file name: a wildcard match if you employed any wildcard characters when entering the name; or an exact-name match if not.
  • There's a search history; when you open a matched item, the string you used is stored. The magnifying glass contains a popup menu listing the recently used strings.
  • The Arrange command on the Window menu toggles to "Tile Two Front Windows" when you hold down the Option key. It does what it says.
  • The Multi-File Search window now has a target called "Frontmost Project". Ticking this option will add the frontmost project to the search targets.
  • It's now possible to preview things using "Preview in BBEdit" that aren't HTML or HTML generators. So, for example, if you preview a C++ document, you'll see an HTML rendering of the document as it appears in your editing window (and the same HTML that would be generated by using the "Copy as Styled HTML" or "Save as Styled HTML" commands). This is useful in situations where you want to typeset your code, and need to be able to experiment with different page templates and styles.
  • When previewing documents in a particular language, you can specify the default CSS to be used when previewing, simply by placing an appropriately named CSS file in Application Support/BBEdit/Preview CSS/. The name of the file should be of the pattern DefaultCSS_*.css, in which the * is replaced by the name of the language. So, for example, to designate a file as the default CSS for previewing Markdown, you'd name the file DefaultCSS_Markdown.html.
  • A new expert preference is available to control the generation of markup: defaults write com.barebones.bbedit HTMLImageMarkupUseInlineStyleForImageSize -bool YES
  • If HTMLImageMarkupCreatesSizeAttributes is turned on, then turning on HTMLImageMarkupUseInlineStyleForImageSize will instruct BBEdit to generate the image size as an inline style attribute:
  • There's a new expert preference to control the default language for new untitled documents: defaults write com.barebones.bbedit DefaultLanguageNameForNewDocuments -string "" ("" should be the name of a language shown as installed in the Language preferences).Added a tweaky expert preference: defaults write com.barebones.bbedit ReplaceAllResultsIncludeTiming -bool YES
  • When turned on, the sheet (or Growl notification) reporting the results will include the time required for the single-file Replace All operation that just completed.
  • Fun things to try:
  • Drag the "favicon" from your Web browser's address bar into the edit field, and note that the URL appears there. Now hit the "Open" button.
  • Type "NS*.h" while an Xcode project is open (or while Xcode is running).
  • Open a project in BBEdit which contains the sources for a Rails app, and type practically anything.
  • Changes:
  • Unix filters (run from the "Apply Text Filter" menu) now accept the selection on STDIN. This is a change from previous versions, in which BBEdit wrote a temporary file and passed it as argv[0]. If you have any Unix scripts in the "Text Filters" folder, you will need to modify them in order for them to continue working. On the other hand, this change will generally make Unix filters easier to write, and makes it possible to share Unix filters with text factories, because the latter has run their filters this way since forever.
  • When entering full screen mode, document windows are now sized to the same width as they were before entering full screen mode, which preserves the "distraction free" semantics of full screen mode.
  • If you want your full-screen windows to consume screen real estate like a hungry wumpus, you can hold down the Command key while clicking on the "enter full screen" widget, or use an expert preference:
  • defaults write com.barebones.bbedit FullScreenWindowsHogScreen -bool YES
  • Full-screen FTP browser windows are not particularly useful, so they're no longer full-screen-able.
  • Support for reading QuickTime movies has been removed (it was off by default, anyway).
  • Made some ergonomic improvements to the markup panel:
  • Promoted attributes are now filled in reasonable order; e.g. href is first when editing an anchor tag;
  • For URI attributes, the file picker button is moved to the right-hand side of the edit field, for a more reasonable tab order;
  • The selection range is now placed on the first attribute value, rather than on the first attribute name.
  • Fixes:
  • Fixed bug in which opening a gzip or bz2 compressed file would in some circumstances cause non-wonderful things to happen.
  • Eliminated the pause when enumerating a project for multi-file search/replace or text factory application. (You'd need close to a million files in the project to notice.)
  • Corrected incorrect key in the Expert Preferences help for "report single-file Replace All results" expert preference.
  • Fixed bug in which the "Any/All" setting for file filters was lost when editing a filter (and got reset to "All" internally, even though the editing panel indicated "Any").
  • Fixed bug in which the "(current criteria)" setting and terms were lost when the Multi-File Search window was closed.
  • Fixed bug in which it was not possible to clear keyboard equivalents for scripts, filters, or clippings.
  • Fixed bug in which project documents would incorrectly check for self-modification before auto save, and a crash which would occasionally occur thereafter.
  • Fixed bug in which FTP bookmarks weren't correctly loaded or saved in the Setup UI when certain components (such as user name or password) contained URL-unsafe characters.
  • Fixed bug in which changing the soft wrap mode setting in language customized options didn't take effect.
  • When using the Markup Panel to apply markup for , , , and by converting existing unformatted text, the markup and attributes are applied to all eligible lines of text.
  • If something that looks like a URI is selected when choosing the "Anchor" markup command, an href attribute will be populated using the selected text.
  • Corrected factory default of ClippingsIgnoreTrailingReturns expert preference.
  • When generating image markup using the Markup Panel, alt, height, and width attributes are now created (or updated) when an image file is selected. The presence of these attributes depends on the HTMLImageMarkupUsesFileNameForAlt, HTMLImageMarkupCreatesSizeAttributes, and HTMLImageMarkupUseInlineStyleForImageSize attributes.
  • Fixed incorrect default of MakeShebangScriptsExecutable expert preference.
  • Improved the contrast of the I-beam cursor when used over dark backgrounds.
  • Fixed a drawing glitch which would occur when revealing an item in the project list would cause it to scroll by more than a screen's worth.
  • Generated image markup will now make a more educated guess for the alt attribute than the image file's name, if necessary. If the image file name must be used, the extension is stripped first.
  • Fixed bug in which a project window was inappropriately activated in situations where changes to the filesystem caused changes in the project list selection.
  • Fixed crash which would occur in certain situations where, due to external file system changes, multiple items in the Currently Open Documents list ended up pointing at the same location.
  • Fixed bug in which full document paths were not displayed on the main Window menu in situations where they should have been.
  • Fixed bug in which too much work was being done at window refresh time, leading to observable delays while typing and when running scripts in some situations.
  • Fixed bug in which closing a document which had only dirty state would attempt certain inappropriate operations, some of which took an observable amount of time, others of which resulted in unintended effects (for example, if the document didn't have unsaved changes, the modification-date test still took place, which would result in an alert if another process had changed the file).
  • Worked around a bug in the OS (9983127) in which dragging text from an editing view to an application's icon in the Dock resulted in the receiver creating a window full of byte-swapped Unicode rather than the text that BBEdit supplied.
  • Fixed bug in which selecting a document in a project window would cause the project window to move, in cases where the document was the first one being opened in the window, and had saved state of its own.
  • Fixed crash which would occur because the "Edit Filter" button in the text factory options dialog was not disabled when it should have been, allowing an inappropriate operation.
  • In addition to the beep when starting with Shift or Option held down, BBEdit will now notify with Growl.
  • Fixed a bug in which \end commands which close off math-related blocks in TeX documents were not being syntax colored as commands (keywords).
  • Fixed a bug in the Ruby language module where it was being a little too aggressively lazy in looking for weird operators. So =` is now seen as an assignment followed by the opening delim of a type of string token, rather than some Frankendelimiter. (As if Ruby would allow you to have weird delimiters...)
  • Fixed bug in which documents would open but fail to show the insertion point (or would show the insertion point but not accept typing) in situations where Editor_AlwaysOpenQuickFind was turned on.
  • Fixed bug in which hiding the file view while it had keyboard focus would leave the focus in the Quick Find box if it was visible, rather than in the edit view.
  • Differences lists no longer have a horizontal scrollbar.
  • Fixed bug in which expanding a folder in a project window's file list didn't put close widgets in the items corresponding to open documents.
  • Fixed bug in which conflicts were not detected when assigning a keyboard equivalent for a script/filter/etc in the Menus & Shortcuts preferences.
  • Removed the default block-comment delimiters for the Ruby module, since using them with Un/Comment creates more problems than it solves.
  • Eliminated the tendency to touch the "Not Key Shortcuts" setup file when starting up (and at other times).
  • Browser windows (disk, Zip, results, etc) get a Text Statistics status bar item.
  • Fixed crash which would occur when using "Update Document" on a document which hadn't been saved to disk.
  • Changed the way we save files in zip archives so Adobe Digital Editions doesn't freak out trying to read them.
  • The Setup window now remembers its position on screen.
  • Fixed bug in which changes made in the Bookmarks setup editing panel weren't saved when you clicked on the "OK" button (instead of using Return or Enter).
  • Fixed bug in which custom per-language color schemes didn't load the correct colors at startup time.
  • Made a change to guard against unwanted color value changes when choosing colors in the Text Colors preferences.
  • When searching for HTML includes during an "Update Document" or "Update Site" (or folder) command, BBEdit will now look in the centralized HTML Templates folder for includes, if they are not found in a more proximate location.
  • Added some more type identifiers to the advertised list of editable file types.
  • Added a default suffix mapping so that .scss files open as CSS.
  • When an CSS document gets reloaded from disk, open preview windows are asked to refresh. (This is useful when looking at CSS generated by SASS or other automatic systems.)
  • Made a change to the WebKit caching policy for preview windows, so that reloading to pick up changes from external files should work as desired.
  • The Markup Builder panel does not try to complete single-character tags, making "a", "i" and so forth much easier to type.
  • Single-file "Replace All" now runs dramatically faster. Typical performance gains will be between 4x and 5x, but if your machine has more than two cores, you may see even bigger improvements.
  • Fixed crash which would occur when double-clicking in the "Recent Documents" list to open a remote (FTP/SFTP) document.
  • Eliminated latency in enable/disable of markup tools palette buttons, which would cause them to be disabled immediately after window activations, which in turn led to them appearing to ignore the first click.
  • Fixed bug in which compiled mach-o executables didn't appear on the Apply Filters or Scripts menus.
  • Text completions that depend on examining the document's contents (both for tokens in the document, and for possible completions from the system spelling checker) are now skipped when the document is above a certain size. The cutoff can be adjusted with an expert preference:
  • defaults write com.barebones.bbedit MaxDocumentLengthForCompletionTokenizer -int N# N is an integer value, expressed in characters. The factory default is 1048576.
  • Fixed bug in which quitting BBEdit while a window was in full-screen mode (on Lion) would cause the window to reopen at its full-screen size, but not in full screen mode. (The window is reopened at the size it was before it was put into full screen mode.)
  • Let the system know that it's OK for BBEdit's palettes to function as auxiliary windows in full-screen mode.
  • Dropping a .bbpackage (BBEdit package) on the application now offers to install it for you.
  • Fixed bug in which "Show Files" or "Hide Files" would resize a window when it was in full-screen mode, leading to various sorts of antisocial behavior.
  • Fixed bug in which double-clicking on the closing angle bracket of an HTML or XML tag would in some circumstances shorten the selection inappropriately.
  • Fixed bug in which editing a file filter in the Setup window that had been added using the Setup window directly (versus having been created somewhere else) would write the changes out to permanent storage correctly, but not display them when viewing the filter in the Setup window in that session of BBEdit.
  • When the Live Search command is executed, the text in the Live Search field is selected (making it easier to overtype with a new string).
  • Fixed bug in which doing a "Save As" to change an HTML/XML file's encoding, and the selected encoding was in conflict with the document's internal metadata, upon confirming the warning sheet, the document would be saved with its previous encoding, rather than the selected encoding.
  • Historical backups are once again enabled for documents opened via built-in FTP/SFTP.
  • Fixed crash which would occur when trying to close a results window (search, unmappables, etc) after deleting the last item from the list.
  • Fixed bug in which windows closed from full-screen mode would have their full-screen size remembered in the document state, which caused them to take up all available space upon being reopened.
  • Fixed crash would could occur while using the close box to close a project or editing window with multiple open documents.
  • Fixed bug in which values entered in to the Sites setup editor panel didn't stick sometimes.
  • Fixed bug in which "Open File by Name" was inappropriately treated as "Open Selection" in projects which had a selected file and no active editing view.
  • Fixed bug in which paths dropped into text views or shell worksheets weren't properly delimited with the appropriate separator (space for worksheets, line break for text views).
  • Fixed bug which prevented CSS files from showing up in the "Preview CSS" menu in live preview windows, and which also broke language-based clipping set auto switching.
  • Preview windows now remember the page template and CSS that were in use for the document being previewed.
  • Fixed bug in which "Reveal in Project List" didn't work if the parent folder(s) of the document being revealed weren't open.
  • Corrected bundle versions, Get Info short strings, and copyright dates in the built-in language modules.
  • Made a memory management fix and modernized some code in the bbdiff tool.
  • Made changes to deal with unexpected circumstances that arise when using the Dictionary popup window.
  • Fixed a longstanding bug where restoring the checked items in a search source list would sometimes synthesize, then select an item in "My files & folders" instead of leaving the Disk Browser or Instaproject selected.
  • "Enable Shift-Delete for forward delete" is (once again) in the Keyboard preferences.
  • After moving numerous mountains and ignoring several inconsequential molehills, the cause of The Great TeX Math Environment Syntax Coloring Inconsistency Bug of Pain (2011 Edition) was finally identified and killed in battle. Lok'tar! Pnoies fhtaghn!
  • Fixed bug in which using the SurfNextPreviousInDisplayOrder expert preference had no effect when SortWindowsAndDocumentsByName was turned on (which would only have been possible for existing installations upgraded to 10.x).
  • The document popup menu in the navigation bar now reflects the same ordering as the file list, i.e. the display order of the documents open in that window, and correctly updates if items are manually reordered in the Currently Open Documents list. The SurfNextPreviousInDisplayOrder expert preference only affects the ordering of next/previous, using either the arrows in the navigation bar or the "Next Document"/"Previous Document" commands.
  • Fixed bug in which some Subversion menu commands were inappropriately enabled when a non-text document was active.
  • Fixed a bug in the TeX module which prevented syntax coloring of commands within the parameter blocks of \newcommand (and other, similar commands), but then allowed some of the syntax coloring during edits of that block. The syntax coloring should now be present and stable.
  • The horizontal scrollbar in editing views now scales to an approximation of the longest line in the view, when soft wrapping is turned off.
  • Fixed bug in which Open File by Name would prompt you to choose another search directory (when doing a forced search), and then ignore your choice.
  • Fixed bug in which scrolling a text factory window would cause the items to draw blank.
  • Fixed bug in which Python decorators weren't colored when they should have been.
  • Fixed bug in which special-purpose results windows and source control commit windows didn't remember their positions on screen.
  • When running #! scripts, we now set up the environment for UTF-8 I/O (for Python in particular).
  • Fixed crash which would occur when trying to make a new disk browser after having previously used "Save Default Window" to hide the edit view.
  • Fixed bug in which disk browser window defaults weren't applied properly when they included a hidden editor view.
  • Fixed a bug in the Java module, wherein it would be confused by some flavors of nested array structure, get distracted by shiny, and start calling any old thing a function (in the function popup).
  • Pass -f plain to ri to get the correct output format back when using "Find in Reference" in Ruby code.
  • Fixed bug in which dragging a document from one window's file list to another would fail to remove it from the originating window as it should have.
  • Fixed bug in which choosing "Custom Settings" from the color scheme popup in the Text Colors preferences when "Custom Settings" was already selected, would set the colors back to factory defaults.
  • Fixed bug in which the drag image for text selections was blank or incomplete.
  • The super-ultra-meta-extended keys on the Apple keyboard (F16-F19) are now supported as keyboard equivalents and can be assigned in the Menus & Shortcuts preferences (or Clippings, Text Filters, Scripts, etc palettes) as desired.
  • Fixed bug in which undoing after typing to replace a column selection would scramble the text in the editing view, and/or crash.
  • Fixed bug in which URI attribute values were not properly entity decoded/encoded on a round trip through the Markup Panel.
  • Corrected the internal HTML/XML "Find in Reference" templates to remove percent escapes, since the correct escaping is already applied before sending the URL out for dry cleaning.
  • Fixed bug in which using the refresh button in an FTP/SFTP browser window would not pick up listing changes in cases where files had been deleted using the browser, and a like number of files had been added on the server.
  • Fixed bug in which multi-file search would fail when encountering a file that looked enough like a Zip archive to pass the test, but which wasn't really a Zip archive.
  • When typing an incompletely qualified URL (e.g. http://www.apple.com instead of http://www.apple.com/) into the Open File by Name window, BBEdit will now postulate the path instead of reporting an error.
  • Fixed bug in which dragging the last document from a non-front window's Currently Open Documents list into the Currently Open Documents list of the front window would cause the latter to (incorrectly) close and leave an empty window behind.
  • Restored Startup Items and Shutdown Items to working order.
  • Fixed bug in which keyboard input intended for editing views was ignored in some situations.
  • In HTML5, is now correctly recognized as a "flow" and "phrasing" element, as well as "interactive."
  • Edits in the fields of the custom language sheet are now correctly committed when you confirm the sheet without first tabbing out of the field.
  • Filename extension mapping for languages is now case-insensitive.
  • Restored the ability to specify a custom terminal application: defaults write com.barebones.bbedit TerminalBundleID -string "com.apple.Terminal"
  • This affects the behavior of "Run in Terminal" and "Go Here in Terminal". The factory default is com.apple.Terminal for the OS-supplied Terminal application.
  • Removed the do-nothing help buttons from the Preferences window.
  • Corrected incorrect pref pane reference in the First Run help page.
  • Corrected some anachronisms in the First Run help and in the tutorial.
  • Removed incorrect block comment delimiter defaults from the Tcl language module.

New in BBEdit 10.0.1 (Aug 11, 2011)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features, nor changes to existing features.
  • Fixes:
  • Fixed a crash which would occur when performing certain editing operations in a rectangular selection (typically an Undo) while the Text Statistics status bar item was visible.
  • Fixed crash which would occur when closing a shell worksheet window.
  • Fixed crash which would occur when trying to drag a palette while a system floating window (fonts, colors, spelling, etc) was also open.
  • Fixed crash which would occur if something unexpected went wrong very early in the application startup process.
  • Fixed bug in which the #GENERATOR# placeholder would report your BBEdit version as 16.0.
  • Fixed bug in which language modules and color schemes were not correctly loaded after the Application Support/BBEdit had been moved to Dropbox.
  • Fixed crash which would occur when launching and a codeless language module had an error in it (typically an invalid matching pattern).
  • Fixed bug in which "Open Selection" would punt with a -120 (directory not found) error when used in an HTML document.
  • Fixed crash which would occur when invoking a Find Differences from the command line or scripting interface in some situations.
  • Changed the default for EnableShiftDeleteAsForwardDelete to YES, so that it agrees with reality as expressed in the user manual.
  • Fixed bug in which the Emacs ^R and ^S keystrokes didn't invoke Live Search as they should have.
  • Fixed bug in which certain combinations of legacy preference settings would prevent drag-and-drop of an image file into an HTML document from generating markup.
  • When dropping an image file into an HTML document, the following expert prefs can be used to adjust behavior:
  • defaults write com.barebones.bbedit HTMLImageMarkupUsesFileNameForAlt -bool YES # by default, generate an "ALT" attribute with the file's name as the value
  • defaults write com.barebones.bbedit HTMLImageMarkupCreatesSizeAttributes -bool YES # by default, generate width and height attributes for the image
  • Removed references to the old Find dialog and other anachronisms from the Expert Preferences help.
  • Applied a bandaid to stop double-drawing while autoscrolling during a drag operation
  • Fixed crash which would occur when saving document state in some situations.
  • The old preference controlling whether Previous/Next Document operated in display order or history order was not migrated. It is now, and the new preference is:
  • defaults write com.barebones.bbedit SurfNextPreviousInDisplayOrder -bool YES
  • Restored support for the Word Services property, pBackgroundHilite (pBgH)
  • There is a new expert pref: AlwaysShowFileList
  • If "Open documents into the front window when possible" is turned on, and this expert setting is set to YES, all text windows will open with the file list showing (this replicates the old drawer setting of "always").
  • Corrected a problem where attempting to disable a hierarchical menu head node would cause all the separators to be crushed out of the menus.
  • Corrected a problem where the head of a hierarchical menu could not be disabled/removed.
  • Fixed bug in which hiding the editor pane in a project window failed to make the window narrower, as it should have.
  • Fixed crash which would occur when saving certain document state changes, or when saving a file to an FTP/SFTP server (disjoint use cases which went through the same shared code) in some situations.
  • Fixed crash which would occur after opening and closing a markup tools palette, and then using a menu command key or performing certain other operations. (Note that using Script Debugger's dictionary explorer was a reliable way to trigger this.)
  • Fixed bug in which the "All file types" setting for multi-file search/replace/text factory was ignored, and "text files only" was always enforced.
  • The "Text files only" test used by multi-file search/replace and text factory application will now examine the beginning of a file if necessary; if it looks like text, the file will be treated as text in situations where the filename extension, HFS metadata, or UTI are insufficient to identify the file as text.
  • Fixed crash when trying to use "Run in Debugger" for Python scripts.
  • Fixed bug in which existing source control configurations were not loaded as they should have been.
  • Fixed crash which would occur when trying to rename a newly created Grep pattern in the Setup window.
  • Fixed bug in which "Capitalize Words" and "Capitalize Sentences" didn't work correctly in Text Factory application.
  • Fixed bug in which preview windows would take up the entire screen, unless you previously did a "Set Default Preview Window" or had a saved position. Now, preview windows without a default or saved position will open at a reasonable width, and if space allows, will open up to the left or right of the document's window instead of on top of it.
  • Fixed a bug in which using "Preview in BBEdit" on a file in a Zip archive would open a tiny preview window, and fail to remember the preview window's position and size.
  • Fixed bug in which the page header was printed in the incorrect font size.
  • Fixed bug in which the "Format" button on the CSS palette invoked the Text dialog instead.
  • Fixed missing defaults for FixedWidthFontSmoothingThreshold and FontSmoothingThreshold expert preferences.
  • Removed the vestigial setting for the Document Info toolbar button in the Appearance preferences.
  • Removed undesired zoom control from the Open File by Name dialog.
  • Fixed a bug which prevented the authentication helper from being updated when necessary.
  • Changed the factory default for EnsureTrailingLineBreak to NO (consistent with previous versions and resolves confusion when making clippings).
  • If the system thinks that a file is an image, even when it isn't, BBEdit would decline to display it in results windows. Now, if a file tests out as text, it's displayed, even if it would pass the system's sniff test as an image (or movie).
  • Restored the ability to switch off distinct coloring of attribute names and values. The legacy preference is migrated; if necessary you may set it manually:
  • defaults write com.barebones.bbedit UseDistinctColorsForHTMLAttributesAndValues -bool YES
  • Added a mapping for legacy TEXT HFS file types so that they have the correct icon.
  • Fixed cause of a hang when editing TeX documents.
  • Packages now expect the Info.plist and Resources items to be within Contents.
  • Fixed bug in which changes to the default line break setting (in the Text Files preferences) had no effect.
  • Updated the application plist to use net.daringfireball.markdown, the new official UTI for markdown documents.
  • Fixed bug in which "Save Default Window" for editing windows didn't correctly remember whether the file list was visible or not, and didn't correctly adjust if it wasn't.
  • Fixed bug in which non-project document windows would creep in width each time the application was quit and relaunched with such windows open.
  • Fixed bug in which CSS formatting preferences (and other CSS-related settings) were migrated correctly from pre-10 versions, but not correctly applied.
  • Quieted a Core Foundation warning when loading existing Perforce SCM configurations on Lion.
  • BBEdit will now look for completion data ctags files in packages; use Completion Data/-language name here-/ as the container directory.
  • Fixed problem where cancelling an authenticated operation would cause the authenticated helper process to consume 100-200% CPU.
  • Fixed bug in which commands which invoked the markup panel were nonfunctional in the Mac App Store build.
  • Fixed some anachronisms and errors in the user manual.
  • Updated obsolete references in the Expert Preferences help, and added additional expert preferences to the list.

New in BBEdit 10.0 (Jul 20, 2011)

  • Additions:
  • BBEdit now supports "packages". A package is nothing more (or less) than a collection of the sort of things you'd place into ~/Library/Application Support/BBEdit/ to extend BBEdit, but makes it easier to collect related items together and install them all at once, rather than having to manually install and manage items spread out between different folders.Tag Maker and Edit Tag have been replaced by a single command: "Edit Markup", which now presents a completely new user interface.There's a new command on the Window menu: "Show Unix Worksheet". This will open a worksheet document that is application-wide, and backed by a worksheet file saved in your Application Support/BBEdit folder. Like the Scratchpad, changes here are saved automatically.If you use Dropbox, you can relocate your BBEdit application support data to your active Dropbox folder, and BBEdit will use them there in preference to the locations in ~/Library/. In this way, you can easily share supporting files with multiple BBEdit installations (handy for multiple machines on your desk).There is a new folder in Application Support/BBEdit/; named Setup. It contains data that previously was stored either in the application preferences or in the com.barebones.bbedit.preferenceData folder that was in ~/Library/Preferences/. Specifically: file filters, FTP/SFTP bookmarks, Grep patterns, web site settings, and key bindings are stored here; thus, they will be synchronized as well if you have placed your BBEdit application support folder in your Dropbox folder (as described above).Slick new feature: preview templates and adjustable CSS for "Preview in BBEdit" windows.BBEdit's multi-file search can now search inside of Zip files. This is automatic: if a Zip file is encountered while searching, its contents are explored, and any entries whose names indicate that they are text files will be unpacked and searched. Matches are displayed in search results as usual.The bbfind tool has been updated with a new option: -C (or --no-compressed-files), which if present suppresses the searching of Zip/gz/bz2 files as described above.
  • There's a new command on the View menu, "Show File List" (or "Hide File List"). When a project or MDI window is in front, this command quickly toggles the visibility of the list(s) on the left.
  • Discrete Change Case options are now available on a submenu below the main "Change Case" command.
  • FTP browsers get a "Manage Bookmarks" command, which opens the Setup window and selects the Bookmarks list.
  • The Find and Multi-File Search windows get "Manage Patterns" and "Manage Filters" commands, which open the Setup window and select the Patterns (and Filters, respectively) lists.
  • There's a new command, on the Application menu: "Setup." This opens a window for configuring saved bookmarks, file filters, Grep patterns, and site settings for the Markup tools. Use the "+" button to add something, "-" to remove it, double-click (or Enter) to edit.
  • The "Text Colors" preferences now add an interface for loading and saving color schemes. The format for color scheme files is the same one used by BBColors and in fact, BBEdit will import any BBColors files that you have created.Color schemes live in ~/Library/Application Support/BBEdit/Color Schemes/.
  • Language pref customization now allows for per-language selection of a color scheme.
  • The View menu now has commands for toggling the visibility of various sections in the project/MDI file list. (These commands will show or hide the section entirely, versus using the disclosure triangle to collapse or expand them.) You can assign keyboard equivalents in the Menus and Shortcuts preferences, if desired.
  • If you turn off the Subversion menu (because you don't use it), BBEdit will also hide the Subversion-related contextual menu commands in project/MDI window file lists, and will hide the Subversion menu button at the bottom of the list pane.
  • The "Application" preferences get a new setting: "Open documents into the front window when possible." This controls MDI behavior: when turned on (the factory default), new and opened documents will be placed into the front window when appropriate; when off, a new window is created for each new or opened document.
  • There's a new expert preference: "AutoShowFileList". By default, it's set to YES, but if you set it to `NO', the file list will not automatically become visible when you open the second document into an editing window: defaults write com.barebones.bbedit AutoShowFileList -bool NO
  • You can now use the "Menus and Shortcuts" preferences pane to assign key shortcuts for Scripts, Stationery, and Text Filters.
  • The Export command on the File menu is now enabled when the active document's language supports previewing in HTML (Markdown is a good example of this). In that case, the command name on the menu will read "Export as HTML", and will bring up a save panel so that you can save the generated HTML into a file. Note that this command's availability depends entirely on the language module.
  • FTP browsers get a "Kind" column.
  • When MDI is turned on, documents are now opened (or created) in something that looks and behaves substantially like a project window. The Documents Drawer has been retired: use the file list on the left for navigation, or the document menu in the navigation bar. The "Show Documents Drawer" command has been removed from the View menu, the document drawer icon has been removed from the toolbar.
  • Project windows grow a couple of new lists: "Recently Used" and "Scratchpad & Worksheet".
  • There is a new command on the File menu: "Print Selection". When chosen, it will print the selected range of text in the document.
  • There's a new control in the Editor preferences: "Line Spacing". You can use this to adjust the amount of space between lines of text in editing views. The minimum value is consistent with previous versions of BBEdit.
  • Verilog and VHDL language modules are now built in. These were previously written by Yasuhisa Kato.
  • Added support in HTML5 documents for all of the ARIA attributes and their pre-defined values.
  • For a complete list of supported ARIA attributes and values, see here and here.
  • Added support for the include command/directive in ActionScript files. Included files are now listed in the file inclusions popup.
  • BBEdit now stores document state (window positions, etc) for files opened using the built-in FTP/SFTP interface.
  • Simple Emacs repetitions (ctl-U followed by a number) can now be used to insert repetitions of a single character.Contextual menus for projects (instant or otherwise) now include SVN "Show Status" when one folder is selected.
  • For languages backed by a codeless language module, BBEdit now generates fold points for delimited blocks. (A good example of this is the "Go" language module, available at http://www.barebones.com/support/bbedit/plugin_library.html, but there are no doubt others.)
  • The Ruby module now supports the standard callouts for the function popup, including FIXME:, NOTE: REVIEW: TODO: ???: and !!!:
  • Added ".md" and ".mdown" to the default suffix mappings for Markdown.
  • When doing a "Paste Column", BBEdit will perform a "fill down" in the selection range if the text being pasted contains no line break (or contains only a single line break at the end).
  • Added "Capfile" to the default name mappings for Ruby.
  • Full-screen mode is supported for editing windows on Mac OS X 10.7. Use the "Enter Full Screen" command on the View menu. (This command is hidden when running on 10.6.x.)
  • The dock menu has a new command: "New Text Document" It creates a new, empty text document in the same location File->New Text Document would have, then pulls BBEdit to the foreground.
  • The "Show items starting with '.'" switch in FTP browsers is now 'sticky'; whether it is turned on (or off) will be applied for the next time you create an FTP browser or use "Open from FTP/SFTP Server".
  • Callouts (FIXME, TODO, MARK, etc) are now supported in PHP comments.
  • Changes:
  • Made some pretty significant changes to the way scripts and filters are installed and managedWhen starting up, BBEdit 10 will copy items from your Unix Scripts, Unix Filters, and Text Factories folders into your Scripts and Text Filters folders, as appropriate. BBEdit leaves a cookie behind in its Application Support folder to indicate that this has been done.
  • The old modal Find dialog is gone.
  • The legacy (pre-8.7) file group format is no longer supported.
  • Removed the custom color menus and palettes. The system color picker interface is used everywhere.
  • The Super Get Info icon has been removed from the toolbar, and the "Open in Super Get Info" command has been removed from the View menu.
  • Removed support for importing of preferences and FTP bookmarks written by versions of BBEdit before 8.0.
  • Unix filters now operate as "pure" text filters: they take the selection as input (a path to a temporary file is passed as the first argument), and replace the selection with stdout. If anything is present on stderr, then the selection is not replaced, and the output is instead placed in the Unix Script Output window (as well as being parsed for errors). This was the default behavior before; it is the only behavior now.
  • The old "what to do with unknown file types" expert pref has been disconnected and is no longer supported. If a file's name matches an extension-to-language mapping in the Languages preferences, or if its name maps to something the system recognizes as text, then we'll treat it as a text file; otherwise we won't. This change primarily affects file filtering, as used during multi-file search and replace, folder comparison, disk browser and project lists, and various other places.
  • The Languages preferences have been reworked and re-imagined. Rather than presenting an overwhelming list of installed languages and filename extension mappings, per-language settings and extension mappings are now handled on a "customizing" basis.
  • The Find Differences dialog box has been rewritten and modernized.
  • "Save Default Window" on the Window menu now shows the type name of the window whose defaults you are saving: "Save Default Project Window", "Save Default FTP Browser", etc.
  • The "Sleep" command is gone from the application menu. Instead, "Quit" behaves as "Sleep" used to. There is a new preference in the Application preferences, subordinate to "Reopen documents that were open at last quit". The new setting, "Restore unsaved documents", causes BBEdit to capture any unsaved document contents when you quit (including untitled documents) and restore them when it starts up. If you prefer the previous Quit behavior, turn this preference off.
  • The rules governing which windows contain new and opened documents are a little clearer now (applicable when MDI windows are in use)The "Unix Scripting Tools" palette has been consigned to the dustbin of history.
  • The "Run..." command on the #! menu is now visible at all times, instead of being buried behind an alternate modifier.
  • Multi-file replace, and text factory application, can now be used to modify files inside of Zip archives.
  • It is now possible to edit and save documents opened from Zip files, not just view them. Edits are written back into the Zip archive.
  • The UI for creating and editing file filters has been completely rewritten.
  • Filename extensions are now hidden on the Scripts menu/palette as well as on the Text Filters menu/palette.
  • The "Arrange..." command on the Window menu has been replaced with a simple "Arrange", which cascades windows down and to the right, in customary fashion.
  • The "Get Info" command and its associated toolbar icon have been retired. (All of the relevant information is presented directly in the editing view itself, except for pagination, and if you care about that, you can run a print preview...)
  • Single-click line selection is now on by default.
  • The UI for the markup button palettes has been redesigned and rewritten.
  • The complement of markup tools palettes has been reduced; remaining are the main tool palette, the Utilities palette, and the Entities palette.
  • The Text Statistics status bar display now automatically toggles between selection-only and whole-document display: when there is a selection, it'll show status for the selection; when there isn't, for the whole document.
  • BBEdit will no longer warn you before closing an instaproject or a project window with open (non-dirty) documents. (The warning is unnecessary and just adds an extra step to the process.)
  • The "New HTML Document" dialog box has been rewritten and modernized.
  • The "Text Printing" settings have been removed from the Print dialog. This is to improve compatibility with current versions of Mac OS X, and to ensure compatibility with future versions of the OS. You can still modify the settings using the "Printing Options" command on the Edit menu.
  • The "Print Watermark" (or "rubber stamp") option has been removed; the system provides a facility which is actually more featureful, so the built-in feature is no longer required.
  • "Normalize Tag Case" has been removed, since what it did was always vaguely defined in terms of a setting that was not obvious. If you want upper case tags, use "Raise Tag Case"; otherwise use "Lower Tag Case".
  • Because Cmd-M and Cmd-Option-M are system standard keyboard equivalents (for Minimize Window and Minimize All Windows, respectively), the default keyboard assignments have been changed accordingly. The keyboard equivalent for "Edit Markup" is now Cmd-Control-M. (As always, you can edit this and other keyboard equivalents using the "Menus & Shortcuts" preferences.)
  • The discrete preference settings for controlling markup generation have been consigned to the dustbin of history. Current best practices are to generate markup in lower case and to always quote attribute values (even in cases where it might not strictly be necessary), and so that is the implemented behavior.
  • Drag-and-drop of files to create anchor and image tags no longer presents a UI; if desired, Edit Markup may be used after the fact.
  • All of the direct markup commands (on the Markup menu, and from the palettes) now go through the new Markup Builder panel, rather than the old dialogs.
  • Command-control-F is now Enter/Exit Full Screen Mode on 10.7, so it has been removed as a default for the "Font" markup command.
  • The preference system's internals have been extensively reworked, and the Preferences window has been completely rewritten and reimagined. Many obsolete preferences, as well as settings never used in daily operation, have been removed from the GUI. The name space has been overhauled, so virtually every preference key has been renamed. Existing preferences are converted where appropriate. The conversion is non-destructive, so old settings are left in place (but will never change).
  • Safe saves are now off by default. The benefits are abstract, but because the system's implementation changes file permissions and breaks hard links, the downsides (when encountered) outweigh the (abstract) benefits.
  • The ponies learned that their saronite shoes were not RoHS compliant and had a huge carbon footprint. So, they've switched to Five Fingers and Birkenstocks. They've also been studying the post-apocalyptic arts, because fortune favors the prepared.
  • The "Text Files Only" filtering in project lists and disk browsers now looks inside of files if necessary, for improved filtering accuracy. This may be disabled (restoring the behavior of previous versions) with an expert preference: defaults write com.barebones.bbedit InspectTextFileContentsForListFiltering -bool NO
  • The "Find Definition" sheet now does partial matches.
  • JavaScript and ActionScript now have separate expert preferences to control the display of anonymous functions in the function popup.Tools (and their man pages) are no longer copied to /usr/local/bin, but are instead symlinked out of the application to those locations. Thus, updating the application automatically updates the tools, once the symlinks are installed.
  • Shift-key at startup no longer suppresses Dreamweaver integration or the loading of #! menu content.
  • Saved window positions for "property" windows (in which there is only one in the application, such as the Find window, or any of the floating windows) are now keyed by display configuration, for the convenience of those using the application on laptops that spend part of their time connected to an external display.
  • Source control form windows (used for commit with cvs, svn, and p4) now remember their position.
  • The option dialogs for "Run" and "Run…" on the #! menu have been modernized.
  • Made the spelling panel accessory checkbox a little less unnaturally large.
  • Vertical scrollbars in list views are now hidden when they're not required.

New in BBEdit 9.6.3 (Jan 24, 2011)

  • Additions:
  • This release consists entirely of fixes for reported issues, and contains no new features, nor changes to existing features.
  • Fixes:
  • Fixed a fistful of bugs which contributed to unnecessarily high memory utilization.
  • Fixed crash which would occur when files were deleted outright from folders being watched by a project file list.
  • When importing service data, line breaks are now converted to the internal representation.
  • BBEdit now advertises its ability to supply and accept service data as UTF-8 (as well as UTF-16 and plain Mac Roman text).
  • Fixed bug in which using the "Plain" format would remove the first character of the markup being formatted, in cases in which the markup was a document fragment and the first character was an element opener ("

New in BBEdit 9.6.2 (Dec 15, 2010)

  • New:
  • Added JSON language support (syntax coloring and "function" navigation).
  • Changes:
  • When generating markup in HTML5 documents (that is, there's an explicit declaration), BBEdit will now generate markup according to XHTML rules. This can be controlled via

New in BBEdit 9.6.1 (Nov 12, 2010)

  • Additions:
  • Previously, disk browsers and projects always hid SCM admin data, even if "Show Invisibles" was turned on. This is the 99% use case, but on the other hand sometimes it's handy to be able to peek inside. So, here's a new expert pref:
  • defaults write com.barebones.bbedit Misc:ShowSCMDataCommandIsVisible -bool YES
  • When this is turned on, the file filter menu in projects and disk browsers grows an extra command for toggling the display of SCM data.
  • Changes:
  • Cache files for FTP/SFTP are now kept in ~/Library/Caches//FTPTemp/, rather than ~/Library/Caches/ Utilities -> Format.
  • Corrected item alignment in the FTP connection sheet.
  • Fixed bug in which using the FTP Browser to create a new file using FTP (not SFTP) would report a -50 error.
  • Corrected an error in the XHTML 1.0 Transitional syntax table which caused the checker to incorrectly report an error for font-style elements inside of an anchor.
  • Fixed bug in which "Update Folder Images" and "Update Site Images" would report an error if invoked with no documents open.
  • Fixed a bug which would cause a crash while editing in some situations (which themselves are not clearly understood, nor reproducible).
  • The "Open..." dialog now allows you to choose a folder by clicking on the "Open" button in the dialog. This is very useful to folks working in Rails, Django, and other web application frameworks. (You can still dive into a folder by double-clicking on it or using Command-down-arrow in the usual fashion.)
  • If you prefer the old behavior:
  • defaults write com.barebones.bbedit Misc:AllowFolderSelectionInOpenDialog -bool NO
  • Commenting a selection range (or using Un/Comment to insert comment delimiters) once again selects the text inside the comment delimiters.
  • Fixed bug in which the markup formatter would incorrectly insert a blank line at the end of content in indented tag blocks.
  • Fixed crash which would occur when trying to add a Perforce configuration in the Source Control preferences.
  • Fixed crash in bbfind at the end of execution in some situations.
  • Fixed bug in the FTP library in which the setting to show "." files in FTP listings didn't work correctly if the server didn't support NLST -a.
  • Fixed bug in which quitting or sleeping with results windows open would cause a subsequent failure to reload the application state completely.
  • Fixed a bug in which malformed Boolean flags in .bbeditSettings files were not ignored as they should have been.
  • Fixed a class of latent bug which would cause a crash in situations where attempting to bring a sheet up would fail.
  • Corrected selection behavior in lists, so that an item is scrolled into full view when it's selected by clicking or key stroke.
  • Fixed bug in disk browsers in which invisible aliases were shown even if "Invisible Items" was turned off.
  • Fixed bug in which Translate (text to HTML or HTML to text) with "Selection Only" did not properly preserve the selection range.
  • Fixed bug in which Un/Comment Selection behaved incorrectly when applied with certain combinations of start/end delimiters (and ignored the possibility of using a line-comment delimiter when it could have). Now, when commenting a single line, Un/Comment will use a codeless language module's line-comment delimiter, if available. If you want Un/Comment to always use the line-comment delimiter, even when commenting a multi-line selection, you may request this with an expert preference:
  • defaults write com.barebones.bbedit LanguageSpecific:PreferLineCommentsWhenCommenting -bool YES
  • This may also be controlled on a per-language basis by adding the language name, for example:
  • `defaults write com.barebones.bbedit "LanguageSpecific:PreferLineCommentsWhenCommenting:6502 Assembler" -bool YES
  • (using a hypothetical "6502 Assembler" language module as an example, since as far as I know there is no such thing.)
  • Tag Maker now makes an effort to match indentation when inserting non-inline markup.
  • BBEdit will no longer attempt to compare image files when you click on them (or use keyboard navigation to select them) in a Find Differences folder comparison results window.
  • Fixed suspected cause of unreproducible crash when using "Find Next Misspelled Word" (or "Find All Misspelled Words").
  • Fixed bug in which Previous/Next Conflict (for cvs, svn, and p4) didn't scroll the conflict selection range into view as it should have.
  • Fixed bug in which transparent elements (in HTML5 documents) would prevent the generation of auto-fold points in their immediate container.
  • Fixed bug in which use of the #dont_update# placeholder would cause the file containing it to be wiped when using "Update Folder" or "Update Site".
  • Fixed misformatted reporting of "Update Folder" results.
  • Results lists for HTML Update Folder/Site, CVS "Show Lurkers", svn "Show Working Copy Status", and p4 "Show Opened Files" now use a more compact list layout.
  • The "file was not updated because it is protected" result from HTML Update Folder/Site is now listed as a warning, rather than as a note.
  • Enhanced reporting of unmappable characters, to show the character's Unicode glyph and code value.
  • The "Preview in BBEdit" WebKit view now puts the application name and version in the user-agent string. This is primarily intended as a platform for back ends that depend on specific agent identification to trigger behaviors, such as TypeKit.
  • The factory default is to use "BBEdit/x.y.z-nnnn", where "x.y.z" is the release version number, and "nnnn" is the build number, as in:
  • Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) BBEdit/9.6.1-2860
  • If you wish to change the application string, you may do so with an expert preference:
  • defaults write com.barebones.bbedit HTMLPreview:UserAgentAppName "Safari"
  • This will result in:
  • Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Safari
  • (Note that if you override, the version information is not included, and the string is used exactly as supplied.)
  • Fixed edge case in which backspacing deleted only one space, instead of a tab width's worth as it should have.
  • BBEdit suppresses the encoding-mismatch warning when saving the Emacs-style autorecovery file (which happens when "Make Backups before Saving" is turned on and you close a document without saving). This avoids a crash which would occur when an encoding mismatch did in fact exist in the autorecovery file.
  • The remote-volume check used to disable scanning for tags and .bbeditSettings files now includes volumes mounted by ExpanDrive.
  • Fixed bug in which errors when loading files during Check Folder Links and Check Folder Syntax would stop the process entirely. (The errors are now logged in the results.)

New in BBEdit 9.6 (Oct 26, 2010)

  • Additions:
  • A syntax table is now in place for HTML5, so that Check Syntax, Tag Maker, and Edit Tag should now behave reasonably on HTML5 documents.
  • The Translate command (Markup -> Utilities) has been split into two: "Translate Text to HTML" and "Translate HTML to Text". Each command's dialog is simpler than the previous combined one, and the split affords the ability to assign distinct keyboard equivalents. Also, the options dialogs are now run as sheets.
  • BBEdit now supports directory-specific settings. To use these, write a well-formed INI file, whose keys and values are the same format as those in ~/.bbedit. The file may be named anything, as long as its name ends in ".bbeditSettings". The settings specified in that file will override all others and will apply to any file that is opened from the same directory as the settings file, as well as any file opened from a subdirectory of the settings file. So, given this arrangement of files:
  • Any settings specified in Foobar.bbeditSettings will apply to mumble.c, as well as all of the files in misc, but not to super.h.
  • You can now put Automator workflows into ~/Library/Application Support/BBEdit/Scripts/, and they will appear on the Scripts menu (and in the Scripts palette).
  • There's a new option in the bbedit command-line tool: --project. Invoking the tool with this option will create a new synthetic project ("instaproject") containing all of the specified files. The project's name is derived from $CWD as of when the tool was invoked. Some examples:
  • # create an instaproject containing /usr/local/bin and /usr/bin 
bbedit --project /usr/local/bin /usr/bin
  • # create an instaproject containing Apache's httpd.conf and /etc/passwd: 
cd /etc;bbedit --project apache2/httpd.conf passwd
  • In the special case of a single item being specified, the project's root is the item (if it was a directory) or the item's parent (if it was a file).
  • When writing a #script# clipping expansion, you can now use POSIX-style absolute paths to refer to the script file, as in:
  • #script /Users/me/example/folder/Script.scpt#
  • Worksheets created via the bbedit tool (with bbedit --worksheet) inherit CWD from the tool (Hi, Jim!)
  • Tags files in ~/Library/Application/Support/BBEdit/Completion Data// are now allowed to be aliases; this makes it easier to share tag data between C++ and Objective-C++ (for example) without requiring duplication.
  • When editing files that are on remote file servers (AFP, NFS, SMB, etc), BBEdit will no longer look for directory-relative tags files or settings files. This is a particular performance win when the file is located on a volume mounted via MacFUSE/SSH or similar, or if the file server is over a slow or high-latency link.
  • To re-enable scanning for tags or settings files, use these separately or together:
  • defaults write com.barebones.bbedit Misc:DisableCtagsScanOnRemoteVolumes -bool NO
  • defaults write com.barebones.bbedit Misc:DisableSettingsScanOnRemoteVolumes -bool NO
  • If you Select All in a Find Differences results window, the Apply buttons will then copy the entire document in the indicated direction. (Note that it is not currently possible to selectively apply a subset of more than one diff - you can apply one, or all, and nothing in between.)
  • The HTML/XML syntax checker now reports duplicate attribute names as errors.
  • When opening a CSS file, the character set specified in the @charset rule (if present) is used to interpret the document's encoding.
  • Completions for HTML/XHTML documents are now generated contextually for tags and attributes, based on the doctype currently in use.
  • Substantially beefed up coloring of CSS properties.
  • Improved completion for CSS properties; in most cases it is no longer necessary to start by typing the vendor prefix. Also, completions include a colon and placeholder.
  • Changes:
  • The application has undergone extensive internal rework, in order to improve performance, remove some longstanding limitations, and pave the way for new features. By and large, the internal changes should be invisible, but the following top-level changes deserve mention:
  • Support for BBXT plug-ins has been removed. This means that the "Plug-Ins" window is gone from the Palettes menu, the plug-in summaries are gone from the About box, and the Tools menu is gone (if you didn't see it before, you won't notice any difference). If you drop a BBXT plug-in on the application, you'll get an alert to the effect that plug-ins aren't supported.
  • Automatic import of pre-8.0 format Grep pattern data is no longer supported. (If you have such a file, please write to support for assistance.)
  • It is now possible to open files significantly larger than before; the ceiling isn't unlimited, but it is no longer limited by the previously extant constraints in the OS.
  • The following large-scale text transformations are significantly faster and/or require less transient memory:
  • Multi-file search (and replace)
  • single-file Find All
  • Process Lines Containing
  • Sort Lines
  • Process Duplicate lines
  • Prefix/Suffix Lines
  • The "New Document" dialog has been updated so that it's now possible to create documents using HTML5.
  • The options for the markup formatter (Markup -> Utilities -> Format) have been renamed: "Gentle Hierarchical" is now "Pretty Print", and "Hierarchical" is now "Strict Hierarchical". This is closer to the actual intended use of each. In addition, the ordering of the options has been changed, so that "Pretty Print" is at the top of the list. (By default, it's a better choice for pretty-printing code than Strict Hierarchical.)
  • For text documents whose size exceeds a certain threshold (expressed in bytes, factory default 1MB), BBEdit will ignore the Soft Wrap Text preference and leave wrapping off in order to improve the performance of opening very large files. The threshold may be adjusted if desired:
  • defaults write com.barebones.bbedit Editor:SoftWrapLengthThreshold -int 1048576
  • If you set the limit to zero, BBEdit will always honor the Soft Wrap Text preference, even in situations where soft-wrapping a large file may cause it to take a very long time to open.
  • Since "Find All Misspelled Words" is pretty much pointless on files over a certain size, the maximum amount of text checked by this command is now limited to 1M (1024 squared) characters. This may be adjusted with an expert preference:
  • defaults write com.barebones.bbedit Editor:SpellCheckLengthLimit -int NN
  • where "NN" is some decimal value. Use -int 0 to suppress the limit check altogether.
  • The ponies are fully geared and anxiously awaiting the release of Cataclysm.
  • The "When generating markup in unspecified documents" preference has been removed from the "HTML Markup" preferences. It was confusing, and a consistent set of rules is now in place: If the document does not have an explicit DOCTYPE declaration, BBEdit will treat it as XML when appropriate if its content looks like XML (or XHTML), and like HTML otherwise. If it can't determine, BBEdit will use the document's language setting to decide.
  • The PageMill, GoLive, and Claris HomePage code cleaners have been removed from the markup tools and scripting interface.
  • The "Misc" menu on the Markup menu, and the commands on it, have outlived their usefulness and been removed.
  • The modal dialogs for Document Type and Character Set markup generation are gone; instead, simply choose the desired doctype or character set from the appropriate submenu on the Markup menu.
  • The "Don't Process" (or equivalent) buttons have been removed from the following commands' dialog boxes:
  • Add/Remove Line Numbers
  • Change Case
  • Find and Mark All
  • Hard Wrap
  • Hex Dump
  • Prefix/Suffix Lines
  • Process Duplicate Lines
  • Process Lines Containing
  • Rewrap Quoted Text
  • Sort Lines
  • Zap Gremlins
  • Adjusted the terminology and keyboard equivalents in the Add/Remove Line Numbers sheet to be a little more consistent with expectations.
  • Markup -> Inline -> Convert to Client Side Map has been consigned to the dustbin of history (like the NCSA image map format was, long ago).
  • The "Pretty print" option for Markup -> Utilities -> Format is now implemented internally using a Dreamweaver-style source format profile. This affords slightly prettier output than was possible before. Advanced users can override the factory format profile by placing an appropriately constructed file at ~/Library/Application Support/BBEdit/SourceFormat.profile.
  • The markup tools with file panels (Anchor, Image, and many many others) now run the file panels window-modal (as sheets), rather than application-modal.
  • The internal representation of the tables used by the HTML/XHTML syntax checker has been radically reworked. In general this should not be user-visible, but it paves the way for future enhancements.
  • The software update checker will provide notifications when the machine has been idle for 30 minutes, in addition to at launch and after manual check.
  • The "New HTML Document" dialog now shows the globally available templates in ~/Library/Application Support/HTML Templates/ as well as any templates available for the selected web site configuration.
  • When opening a document into anything other than an editing window (or project window), saved split state is no longer restored.
  • When creating results windows from the scripting interface, the name is no longer mandatory -- if absent, the application will generate one.
  • When creating results windows from the scripting interface, the application will use narrow list items if none of the results items have a "message" or "match_string" property.
  • When creating results windows from the scripting interface, the "result_kind" may be omitted from the item records; if absent the kind is assumed to be "note_kind".
  • When you are backspacing with an insertion point, BBEdit will delete a tab stop's worth of spaces if there are only spaces (and tabs) between the insertion point and the start of the line on which you're editing. This may be disabled by an expert preference if desired:
  • defaults write com.barebones.bbedit Editor:DeleteIndentationWhitespaceToTabStop -bool NO
  • The HTML/XML attribute value checker will no longer report entity-encoding errors for values that look like they might be dynamically generated, for example:
  • " but wasn't. This no longer occurs.
  • When populating the Open Recent menu, the application avoids banging the file system for items that are located on remote volumes. (If you choose a recent item that's on a remote volume, BBEdit still needs to resolve it, so you'll take the hit then.)
  • Added the keyword date to the SQL (PostgreSQL) language module.
  • The bbedit command-line tool will report (to stderr) any explicit error message returned by the application; if none is available it will report the item you were trying to open and the error code that was returned.
  • Fixed a problem in the Markdown language module which sometimes prevented nested lists from being correctly syntax colored and folded.
  • Fixed one cause of incorrect syntax coloring on list item markers in Markdown files.
  • fixed a bug in Markdown support which prevented code blocks from being recognized correctly.
  • Fixed bug in which project lists would end up scrolling back to the top when refreshing after detecting a file or folder change on disk.
  • Fixed crash which would occur when sending certain badly formed URL requests from the bbedit command-line tool.
  • Creating a new XHTML 1.1 document now specifies the correct content type in the element.
  • Changing the text encoding of an XHTML 1.1 document now correctly rewrites its with the appropriate content type.
  • Fixed bug in which dragging text to an empty text field in the Find or Multi-File Search window would cause it to be syntax colored according to the original window's language setting, and not use Grep coloring when it should.
  • When using ctl-S or ctl-R to trigger a live search, keyboard focus will end up in the Live Search field.
  • The markup syntax checker no longer reports errors on correctly formed "id" attribute values in XML/XHTML.
  • Fixed bug in which errors encountered when trying to save a file at the end of a multi-file Replace All or text factory operation were not reported, and the document's contents on display were not updated.
  • Added the Xcode config (.xcconfig) file UTI to our internal test for "is a text file".
  • Fixed bug in which completions were not grouped by kind as they should have been.
  • The PHP function scanner now allows anonymous functions.

New in BBEdit 9.5.1 (Jul 27, 2010)

  • Additions & Changes:
  • There are no new features or behavior changes in BBEdit 9.5.1.
  • Fixes:
  • Fixed bug in which "Find Definition" and the contextual menu would show the pseudo-definitions of symbols in completion data files (which were intended only for completion and coloring).
  • Fixed crash which would occur when inserting a clipping which used the #BASENAME# placeholder.
  • Restored the pre-9.5 behavior for Capitalize Sentences and Capitalize Lines, by lowercasing the string before applying the Sentence/Line transform.
  • Fixed bug in which changes to some of the HTML markup preferences didn't take effect immediately when they were made, and instead required a quit/relaunch cycle.
  • Fixed bug in which prefixed Emacs commands (usually using Esc) didn't work correctly.
  • Fixed bug in which disk browser windows didn't open to the correct location when restoring application state.
  • Fixed bug in which leading digits would be clipped from printed line numbers when printing a selection range from a sufficiently large document.
  • Fixed bug in which sentences preceded by line breaks didn't respond to the Capitalize Sentences option to Change Case...
  • Fixed bug in which floating plug-ins (such as TextSoap) didn't get xfBBEditIsQuitting when the application was quit while their window was visible.
  • Fixed a bug in which new project items couldn't be created through the scripting interface unless their properties contained an explicit «class pexp» key and value.
  • Fixed bug in which the "Save as Stationery" option in the Save panel didn't set the "Stationery Pad" bit for the saved file when it should have.
  • When doing a safe-save, the system does not attempt to preserve the ownership or permissions of the file being saved; this resulted in the ownership/permissions being reset to the umask defaults. This is not generally a problem for user-created and -managed content, but did occasionally get in the way. BBEdit now attempts to preserve permissions, but it cannot preserve ownership. If this continues to pose a problem in actual usage, disable safe-saves with the following expert preference:
defaults write com.barebones.bbedit Filing:SafeSavesDisabled -bool YES
Note that we do not recommend disabling safe-saves in general; only if you have a problem caused by the change of ownership when saving a document.
  • Fixed bug in which saving a text document would cause it to be de-selected in the Multi-File Search window's sources list; in cases where the document did not get de-selected, the source list's reference to it was nonetheless invalid and in certain situations would cause an error to be reported when trying to search that document.
  • Fixed bug in which the "Live Search" menu command was enabled for shell worksheet windows, but didn't actually do anything.
  • Fixed bug in which the documentShouldClose attachment point was called more than once when it shouldn't have been (and its result was ignored, so if the script returned "false" the document would close anyway).
  • Fixed hang which would occur when trying to use a disk browser in a directory containing FIFO files.
  • Fixed crash which would occur when quitting with one or more preview windows open.
  • Fixed bug in which tags files located at / were not detected.
  • Fixed bug in which shell worksheet window positions were not correctly saved and restored in the document state.
  • The browser list in the "HTML Preview" preferences now shows the correct icons for some browsers which previously displayed the generic icon (in particular, Unity apps made available by VMware Fusion 2.0 and later).
  • Fixed bug in which shell worksheet window positions were not correctly saved and restored in the document state.
  • Fixed bug in which the documentDidClose script attachment point was called too late to be of any use.
  • Fixed bug in which Un/Comment didn't work for languages specified by a codeless language module. Absent an explicit preference, BBEdit will now prefer the "Block Comment Start" and "Block Comment End" delimiters, but if those are not specified, it will use "Line Comment Start" for commenting.

New in BBEdit 9.5 (Apr 28, 2010)

  • Additions:
  • The Quick Search window is gone, and has been replaced by an in-window Live Search bar. Choosing the "Live Search" menu command on the Search menu will open this bar.
  • As you type in the search field, matches for the string get highlighted in the window's editing view. The search is always literal and case-insensitive. The "previous" and "next" arrows to the left of the field are useful for navigation; you can also type Return or Shift-Return in the search field to go forward or backward.
  • The Emacs key bindings ctl-S and ctl-R will open the live search bar if necessary; if the search bar is already open, ctl-S will search forward, ctl-R will search backward (assuming that something is entered in the search field; and also that the Emacs keybinding support is turned on in the preferences).
  • BBEdit now offers enhanced script attachability. In addition to adding scripts to menu commands as has been possible for a long time, you can now attach scripts to certain application and document events.
  • The attachment points (corresponding to the function names in your attachment scripts) are listed below. Except as noted, all of them share the following characteristics:
  • Every function takes a single argument, which is a reference to the object in question: the application for application entry points, or the document being opened/closed/saved/etc for document entry points.
  • Any attachment point whose name contains should is expected to return a Boolean result: true or false. If it returns true, the operation will continue. If it returns false or throws an error (see below) then the operation will be cancelled. So, for example, applicationShouldQuit returning true will allow the application to quit; returning false will not.
  • If an attachment script causes a scripting error and does not handle it within the script itself, BBEdit will report the error. In the case of functions which are used to allow a should action, this will prevent the action from occurring.
  • Compiled language modules may specify a new plist key: BBLMCompletionTagsFileNames. This is an array of strings, each one corresponding to the name of a file in the language module's Resources directory. Each file (if present) is expected to be a valid tags file, and is used when generating completions.
  • Made the regex for detecting python #! lines more precise.
  • Added support for swipe to navigate between documents to MDI windows and the documents drawer.
  • Services clean-up for Snow Leopard:
  • Renamed certain services to provide better context in the services menu, contextual menu, and configuration interface on Snow Leopard.
  • Provided NSRequiredContext in the service specification so that a) services are enabled by default and b) non-file path text selections are excluded from the open file service.
  • #bbpragma now supports an encoding attribute to specify an encoding hint to the syntax checker for document fragments. For example:
  • a new field is supported in tags files: optional_args:(...). In the parentheses are three possible constructions: "-" indicates that no arguments are optional; "*" indicates that all arguments are optional; otherwise, the parentheses contain an ordered positional list of optional arguments. For example, optional_args(2, 3) indicates that the second and third arguments are optional.
  • When an optional_args field is present, BBEdit will alter the construction of the argument placeholders when generating the function signature for text completion, so that it's easier to delete the optional arguments that you want to use.
  • If a file lives in a location "claimed" by multiple source control configurations (a Subversion checkout below a P4CONFIG file, for example) enable menu items for all claimed SCM styles, and let the user choose commands from the correct one.
  • When you drop a tarball (a ".tar" file) on BBEdit, or double-click on such a file in a disk browser, BBEdit will now browse into the tarball instead of opening its raw contents in an editing window.
  • If for some reason you prefer the old behavior:
  • defaults write com.barebones.bbedit Misc:OpenDiskBrowserForTarballs -bool NO
  • There's a new placeholder format: . This is used for optional arguments generated during completion. It can be selected in the usual fashion; and if you delete a selected optional-argument placeholder with the Backspace key, BBEdit will delete any leading whitespace, back to a preceding comma (if there is one).
  • The window scripting object class now has a property: "live search bar visible", which indicates whether the Live Search bar is currently displayed in that window.
  • BBEdit can now browse Zip archives (in the format created by the Finder's "Compress", or by using ditto -k from the command line). Drop a Zip archive on BBEdit to see it in action.
  • There's a new command on the View menu: "Reveal in Project List". When one or more projects are open, this command will locate the front project which contains the active document, and reveal the document's file in the project's file list.
  • The default behavior of the HTML updater has changed when running #! scripts. By default, STDERR is no longer inserted to the document unless the script exits with a non-zero exit code.
  • To restore the previous behavior
  • defaults write com.barebones.bbedit HTMLUpdater:AlwaysIncludeSTDERR -bool YES
  • Added support for enums to the Java language module. Enums now receive auto-fold points and are enumerated in the function popup.
  • BBEdit now uses the ctags files in ~/Library/Application Support/BBEdit/Completion Data/ for more than just completion: "Find Definition" (and the contextual menu) will now include definitions specified on those tags files (which is handy if you've built a tags file from a Mac OS X or iPhone SDK); and symbols defined in the central tags files will also appear in an appropriate color.
  • When you first save a file which begins with a shebang line, BBEdit will now make that file executable (a+x, as modified by the umask).
  • Completion data dictionaries generated by language modules can now contain an additional key: AutoIndentCompletionText. It's optional, but if present signals the completion system that the completion text, if multi-line, should be auto-indented according to where the completion is inserted.
  • The "search here" command (third on the Search menu, after "Multi-File Search") is now enabled when a text document is active and exists on disk.
  • Edit -> Insert gets a new command: "Emacs Variable Block". This brings up a sheet for confirming the insertion of Emacs variables describing the option settings for the current document. (Using all of the options can result in a pretty verbose result; so you may find it useful to prune the resulting text as desired.) These variables are honored and have precedence over saved document state when BBEdit opens the document. (Inserting the explicit settings can be useful when sharing the document with others.)
  • BBEdit now remembers preview window positions on a per-document basis, keyed by the document's location (which also works for documents opened via the built-in FTP/SFTP interface) and screen layout. If there is no stored position, BBEdit will use the default location as saved by the "Save Default Window" command; failing that, it will arrange the window on the same display as the parent document window.
  • The ponies' saronite shoes have been reinforced with titanium, and have a buff applied which increases both ground and flight speed by 30%.
  • BBEdit can now generate completions for include file names in C/C++/ObjC/ObjC++ source files. (This applies when typing in an #include or #import directive.) The data is sourced from the active Xcode project, system headers and frameworks, and the directory containing the source file in which you're completing.
  • ObjectiveC 2.0 @property declarations now appear in the function menu.
  • Results lists get a contextual menu. Typically, "Copy" is the only item available; but if any of the selected files are in a Subversion working copy, the menu will contain some useful Subversion commands for those files.
  • The contextual menu in project lists now contains Subversion commands for appropriate items, and commands on the Subversion menu are enabled appropriately when the project list is the target of user events.
  • Project windows and disk browsers get a new menu button at the bottom of the file list. This button shows the Subversion icon, and contains some Subversion commands which may be usefully applied to selected items in the list.
  • The visibility of this button is linked to the top-level Subversion command menu; so if you want to hide all things Subversion-related, go to the Menus preferences and turn the Subversion menu off. (Changes here will take effect the next time you make a new project window or disk browser.)
  • The contextual menu in project lists now contains Subversion commands for appropriate items, and commands on the Subversion menu are enabled appropriately when the project list is the target of user events.
  • When setting up ~/Library/Application Support/BBEdit/ for the first time, the folder skeleton contains a "Read Me.txt" file at the top level, with helpful information and pointers.
  • Changes:
  • The internal format of saved document state has been reworked, as well as the behaviors for saving and loading it. The most important visible changes are as follows:
  • When saving state, BBEdit captures only those settings which are fundamental to the document (window position, selection range, folds, splitter setting), or settings which vary from the global preferences. The latter ensures that changes to the global preferences are never inappropriately overridden by document state.
  • So, for example, if the default document font is Consolas when you save the document, and the document uses that font, but you change the global preference to Menlo before the next time you open that same document, the document's font will be set to Menlo. (Note that this behavior applies to any document setting which takes its default from the prefs; the font is used only to illustrate.)
  • This change should resolve lots of confusion surrounding the question of "I changed my prefs, how come my document settings don't reflect that?"
  • The internal data format of the state has changed to accommodate this new behavior. Documents with existing saved state will exhibit the old behavior when they are opened; this is not a bug. BBEdit will write out the new state format the next time you save the document.
  • Note that the new format is not backward-compatible; so if you open the document with an older version of BBEdit, the new format state will be ignored.
  • Also: o If you are using the expert preference to save state in the document's resource fork (rather than in a central location), please note that the new format state data is not actually saved in a resource anymore - it is now written into an extended attribute, which you can verify from the command line using xattr -l /path/to/some/file.
  • And finally: o A new "Normalize Options" command is available on the Edit menu. This command will reset the front document's display and editing options to the current defaults established by your preferences (including any language-specific overrides), and clear the document's saved state. This can be useful in situations where previously saved state is restored and contains undesired variances from your preferences.
  • The following UI changes have been made to text encoding selection:
  • "Unicode (UTF-8, no BOM)" has been renamed to "Unicode (UTF-8)".
  • "Unicode (UTF-8)" has been renamed to "Unicode (UTF-8, with BOM)".
  • The text encodings menu (as used in the status bar, preferences, and other locations) has been rearranged so that the most commonly used Unicode variants (UTF-8 and UTF-16-BE+BOM) are at the top of the menu, with a separator between them and the rest.
  • A fresh install of BBEdit will no longer populate the Application Support/BBEdit folder; instead it will simply create empty placeholder folders so that you know where stuff goes.
  • The "Open Hidden" command has been removed from the File menu, since the "Show Hidden Items" check box is available on all supported systems now (and it works).
  • When saving a document to a mounted file system (not FTP/SFTP), the application now does a "safe save" so that the existing data on disk is not replaced until the new document data has successfully been written.
  • "Replace All" text factory operations no longer generate a results entry so a results window should no longer appear at the end of a factory run containing Replace All actions, unless errors occurred.
  • Reworded scary confirmation text when deleting items from the Multi-File Search sources list.
  • Support for synchronizing the BBEdit application support folder via MobileMe has been removed. If you wish to sync this folder across multiple computers, we recommend the use of DropBox or something like it.
  • The GUI switch to use the old Find dialog has been removed from the Text Search preferences. The preference is still supported, so if you previously changed it, the change remains in effect.
  • The expert preference for controlling use of the old Find dialog is:
  • defaults write com.barebones.bbedit FindDialog:UseOldSk00lFindDialog -bool YES
  • The --gui option to bbfind now brings the application to the front when starting the search. To suppress this, add -b or --background to the command line.
  • Support for "source format profiles" has been dropped. (This affects the "HTML Markup" prefs pane, and the Markup -> Utilities -> Format... dialog, as well as the scripting interface.)
  • Project windows will now allow you to open documents which have no clear application association but which nonetheless look like text files.
  • The on-disk storage format for file filters has been changed to something more future-friendly; the saved filters are now located in "File Filters.filefilters" in ~/Library/Preferences/com.barebones.bbedit.PreferenceData/. (Note that although the file is readily human-readable, the internal structure is undocumented and subject to change; modifications made without using the application's UI are not supported...)
  • Existing filters will be converted (nondestructively) to the new format. Note that the new format cannot be used with older versions of the application.
  • When browsing a Zip archive or tarball, if there is only one top-level item and it's a folder, the rest of the items are hoisted (and the top-level item is not shown).
  • If a window contains multiple documents, its submenu on the Window menu will contain diamond indicators as appropriate for any documents with unsaved changes or state.
  • Since the supported system versions can no longer run Classic applications, support for using them as preview helpers has been removed.
  • If a file changes on disk and the copy open in BBEdit has unsaved changes, you now have the option to ignore future changes to that file (for as long as the document remains open in BBEdit; closing and reopening will cause the behavior to reset).
  • The expert pref for controlling whether or not temporary files area eligible for the Open Recent has been changed. The new invocation to do so is:
  • defaults write com.barebones.bbedit RecentItems:RememberTempFiles -bool YES
  • Fixes:
  • Changes to the Text Files Only and Show Invisibles properties of an insta-project are remembered. These settings are subsequently applied to new insta-projects.
  • When selecting a function from the function popup, avoid scrolling when the resulting selection range is already in view.
  • Fixed bug in which the function menu would open with the wrong item under the mouse in some situations.
  • In some cases, the document contains an encoding specification which is valid, but does not map to a user-readable encoding name. (One example of this is "utf-16".) In such cases, the encoding mismatch warning sheet now uses the IANA name if possible.
  • Fixed bug in which function menu entries for operator definitions in Ruby would contain junk.
  • Fixed bug in which adding or changing (but not clearing) a keystroke on a #! script or filter would not take effect immediately in some situations.
  • Fixed a bug in which font and tab settings for a document already open in another window were not correctly applied when opening the document into an additional window. (This tended to occur when the document had an embedded declaration such as an Emacs variable.)
  • Fixed bug in which changes to the global color prefs didn't affect the display of open documents, when they should have.
  • Fixed bug in which changes to the editing view chrome preferences (line numbers, tab stops, gutter, and page guide on/off) took effect immediately for windows containing multiple documents, but did not apply to documents opened into existing windows subsequent to the change.
  • Fixed bug in which the comment strings for languages not backed by a language module (including the "(none)" language) were always empty.
  • Note that there is no user interface for setting the comment strings for the "(none)" language; the factory default is to use "#". To adjust this, you can use the following expert prefs:
  • defaults write com.barebones.bbedit LanguageSpecific:CommentPrefix -string "some string" defaults write com.barebones.bbedit LanguageSpecific:CommentSuffix -string "some other string"
  • Fixed incorrect printing of line numbers when printing the selection range of a soft-wrapped document with hard line numbers in effect.
  • Corrected broken folder subscriptions on root of disk browser
  • The Help book code gets extensive coding rework and a visual appearance upgrade, thanks to Kerri Hicks and her forbidden exercises.
  • Subversion commit files (svn-commit.tmp), files living inside of various SCM commit directories, and files in /var/folders and /private/var/folders are no longer eligible for listing on the Open Recent menu, nor is their state saved (unless, in each case, the appropriate expert pref is enabled).
  • Fixed bug in which the Find window's buttons would not enable (or disable) correctly in situations where the window immediately behind the Find window got closed.
  • Fixed bug in which twisting a folder open or closed (in a disk browser or project list) while changes were occurring in the folder's parent would have a pretty high likelihood of crashing.
  • Fixed bug in which insta-projects did not correctly reopen after an application sleep (or when restoring from previously saved application state).
  • BBEdit now prefers /usr/local/ as the destination when installing the command-line tools and associated man pages on 10.6 and later.
  • Fixed bug in which a document's state was not saved when it should have been, when saving the document to disk for the first time.
  • Fixed bug in which using an insta-project as a Text Factory source would report a -1409 error.
  • Fixed bug in which "Use Selection for Find" and friends would not correctly generate hex escapes for certain unprintable characters.
  • Fixed bug in which "Save All" would create instaprojects on disk when it shouldn't have.
  • Fixed bug in which the "exclude matches" multi-file search option didn't generate the correct results.
  • Syntax coloring for embedded JavaScript and CSS (in HTML documents, between .. and .. tags, respectively) will now end at the appropriate closing tag, rather than at the first occurrence of 42,000 nested function calls like foo( bar( bat( etc...
  • Fixed crash which would occur when asking BBEdit to open a project which was missing its project data component.
  • Menu command attachment scripts now work for items on the named application menu.
  • The Ruby language module now recognizes regular expressions as legitimate ends to if statements, such as in the following:
  • def foo(s) 'a' if s =~ /regex/ end
  • This bug generally manifested as fold points not being generated for the method or block which contained the 'if statement'.
  • Fixed bug in which "Balance while Typing" was turned on in the Find window edit fields, which in turn led to undersired warnings while typing Grep patterns and such.
  • Fixed bug in which the "Look Up in Dictionary" contextual menu command didn't work correctly (typically, might launch the Dictionary application but look up the wrong word).
  • Vector typing such as foo:Vector. in ActionScript files should no longer confuse the function popup and auto-folder.
  • Fixed hang in Markdown module which could be triggered by lines beginning with a hyphen in the middle of a paragraph block. A side effect of this fix is that the Markdown module now auto-folds and colors Markdown files in a fashion more consistent with what Markdown.pl produces.
  • Fixed bug in which the GUI preference "Link file's encoding to HTML/XML character set" was not honored in situations where it should have been.
  • Fixed bug in the FTP/SFTP connection panel, in which arrow navigation in the user name field didn't work correctly.
  • Fixed bug in which any open documents located on an AFP volume (or other server volume which allowed the use of kevent() to monitor changes to the document's parent folder) would have a reload triggered when its parent folder's mod date got changed. This in turn would lead to inappropriate "document changed on disk" warnings for open documents in the same location with unsaved changes.
  • Fixed a bug where diffs invoked by the bbdiff tool weren't canonicalizing RCS keywords as appropriate.
  • Fixed bug which could prevent define blocks (methods, as described in the new Lasso syntax) from receiving autofolds or being listed in the function popup.
  • Fixed crash which could occur when closing a Search Results window after a Grep search.
  • Fixed bug in which the FTP browser UI wouldn't let you make a new item with the same name as one that you just deleted, without making you first refresh the listing.
  • Fixed a case in which the application did not prompt to authenticate a save in a situation where it should have done so.
  • Fixed bug in which a document reloaded due to an attributes change which caused it to become read-only would discard any unsaved changes without asking.
  • Fixed bug in which Shift Left and Shift Right didn't honor the document's "Auto-Expand Tabs" setting when applied to a rectangular selection.
  • Integrated updated version of PHP completion data, now with optional arguments.
  • Fixed cosmetic glitch in the Text Factory UI when displaying Grep strings with embedded line breaks.
  • Fixed a bug in which "Apply Text Factory" to an open document with a selection range would add a junk character to the end of the document in cases where the selection range was at the end of the document and the document did not end with a line break.
  • Fixed bug in which MFS file filter terms containing strings would not work correctly when specified in the scripting interface.
  • The Strings language module now offers spell checking for values.
  • When doing "Save a Copy", the Save panel will now open pointing to an appropriate location (typically the folder in which the document is located, for documents already on disk).
  • Fixed bug in which the window title path popup menu didn't update if the document was relocated on disk.
  • Fixed bug in which the sources list in the Multi-File Search window didn't update correctly when projects were opened and closed.
  • Fixed bug in which dropping an archive (zip or tarball) on the application didn't check to see whether it was already open in a browser window.
  • Fixed bug in which dropping a folder on BBEdit would open a new instaproject even if one already existed for that folder.
  • Changing file filter settings in an instaproject will no longer cause a prompt to save when closing the project (unless you've made substantive changes to the project, like adding files).
  • The URL detector now correctly picks up vnc:// URLs.
  • Instaprojects now appear under the "Projects" item in the Multi-File Search window's sources list.
  • Fixed bug in bbfind and twfind in which certain options were not passed through correctly. This prevented the -R and -I options from working as they should have.
  • Fixed bug in which inappropriate encoding choices crept on to the default read encoding menu in the Text Files preferences after choosing an item from that menu.
  • BBEdit now returns the missing value object when asked for the file property of documents which were opened via built-in FTP/SFTP from remote servers, or which have not yet been saved on disk.
  • If there was an error writing out the temp files for comparison, we released a string that we didn't own, and subsequently crashed when the outer autorelease pool was popped.
  • Fixed bug in which tarballs would be deleted after having been used in a browse list (as in a disk browser).
  • Disk browsers get some internal rework to reduce resource usage while one is open, and to make room for planned features.
  • Changed the order of precedence when mapping file names to source languages, so that suffix matching is applied first. Thus, a file named Makefile.pl will now (correctly) map to Perl, rather than Make.
  • Fixed bug in which codeless language module function patterns which resulted in a zero-length function body computation (for folding) would cause premature termination of function scanning.
  • Fixed a bug in which the Lua language module didn't advertise that it supported spell checking, so spell checking didn't work correctly in Lua documents.
  • Fix bug in the C/C++/ObjC/ObjC++ function scanner in which symbols whose names overlapped with language keywords would confuse the scanner.
  • Added metadata to aid locating items in Source Control preferences.
  • Fixed bug in which fold indicators in split editing views were not drawn correctly in the split which didn't currently have keyboard focus.
  • The "Change Case" transformations have been rewritten to work correctly with non-Roman characters.
  • Fixed bug in which the AppleScript interface to searching looked for the "filter" parameter in the search options, rather than in the event (which is where the scripting dictionary says to put it). Note that the old form will continue to work for the sake of compatibility with existing scripts, but it is deprecated; so you should adjust your scripts accordingly.
  • Fixed crash which could occur when shuffling documents in a results window in some circumstances.
  • Fixed deadlock caused by the DreamweaverIsRunning() test not being thread-safe and requiring execution on the main thread.
  • Corrected a bug where the valid parent elements for and were incorrect for HTML 4 variants.
  • Fixed a bug in the HTML translate tool where it did not translate entities which didn't map into the MacRoman space back to their character representation.
  • Fixed bug in which the last item in the text encoding popup menu (Windows Latin-1) would not get a bullet next to it if previously selected as the document's encoding.
  • Fixed hang which could occur at various points when BBEdit encountered a named pipe or other non-usable entity.
  • Added "sleep" to the application scripting dictionary.
  • Global ctags (as located in the Completion Data support folder) are now used when generating completions for unsaved documents (as long as the document's language is correct).
  • Fixed class of bugs in which command-click on URLs didn't work when the URL was enclosed in nonstandard delimiters.
  • Fixed bug in which command-click didn't work for non-delimited URLs located at the beginning or end of the document.
  • Fixed bug in which command-click of a URL didn't work for URLs which were broken across line boundaries.
  • Clicks on a disclosure triangle in a hierarchical list are never treated as a double-click.
  • A disk browser is opened when handling an 'odoc' for a package, rather than creating a temporary project with the package as the single project item.
  • Fixed a bug where P4 preferences would get confused about override paths, and not let you correct it
  • Fixed performance regression in case-insensitive Replace All involving single characters (which also affected Change Case).
  • Supplemented UTI test for smart folders (which doesn't work on 10.5, since the necessary UTI isn't known to the system) with a filename extension test when adding to a project.
  • Fixed bug in which "Show Toolbar" in a project window did not restore the toolbar in the project list; only in the text view of a project window.
  • Fixed bug in which the title bar path popup didn't work for project documents when no text documents were open.
  • The "Detab" sheet once again allows you to specify one space per tab (effectively replacing each tab with one space, which you could accomplish by other means, but whatever).
  • Fixed a bug where "Set unmodified" was broken in the New BBEdit Document Automator action.
  • Fixed a bug where accessing the properties of a project item via the scripting interface failed.
  • When the menu attachment script stub is created, set its file type to 'osas' so that Script Editor on 10.6 will open it properly
  • Fixed a behavioral regression where scripts run from the scripts menu which did a multi-file search, replace, or apply text factory could leave a dangling progress window open.
  • The --gui switch for bbfind now works as intended on PowerPC machines.
  • Fixed bug in which the -E option for bbfind did not correctly suppress the additional context as it should have.
  • Snow Leopard removed the default typeFSS -> typeUnicode text coercion handler. Worked around the binary compatibility issue this caused for existing HTML updater scripts.
  • Fixed bug in which clicking the "Don't Install" button in the command-line tools installation dialog failed to note that you didn't want to install the tools; so you'd get prompted again at the next application launch.
  • Fixed bug in which project documents would sometimes fail to remember their saved state (typically settings changes, but other properties as well).
  • Fixed a bug where the initially selected item for the line ends popup was incorrect.
  • The command modifier is no longer required to expand/collapse nodes in a hierarchical list. This is consistent with NSOutlineView (and thus most other instances of hierarchical lists people will be familiar with.)
  • Fixed off-by-one in calculation of line numbers for endLine and endDisplayLine scripting properties.
  • Fixed bug in which file names containing (or ending) with a question mark couldn't be opened via FTP/SFTP.
  • Documents opened as a batch in the course of opening a project document are no longer subject to the warning about opening a lot of documents as once.
  • Fixed a bug where the stderr string of the shell command was left in a locked state if an error occurred while parsing the data.
  • Fixed a bug where the p4 menu commands malfunctioned if the PWD in BBEdit's environment was out of sync with the actual result of getcwd.
  • Fixed a bug where the p4 environment/command was not correctly setup when doing an operation such as compare revisions out of a results browser and using a P4CONFIG based setup.
  • Fixed a bug where BBEdit would silently fail while creating a Perforce configuration if the server was unreachable.
  • Fixed bug in which documents reloaded due to outside changes were marked dirty.
  • When a document is changed on disk outside of the application, we now make an effort to preserve the scroll position of any views on that document, rather than always scrolling back to the top.
  • Fixed a bug where the bbedit tool would crash when invoked with --maketags when the environment lacked a PWD.
  • Fixed a bug in which manually disconnecting from an FTP server, and then reconnecting to another server with a different directory layout would result in a blank file listing and a 22125 error if the manual disconnect took place after the timed automatic disconnect.
  • Fixed a case in which a single-file Find All, multi-file search or replace, or a text factory operation on an untitled document would perform certain unsafe operations and possibly cause a crash.

New in BBEdit 9.3.1 (Dec 8, 2009)

  • Additions:
  • Added #! based language guessing to the Lua language module.
  • Changes:
  • If the document's on-disk encoding is set to use UTF-8 with a BOM, and the document also contains an explicit character set declaration of "utf-8" (which implicitly does not include a BOM), BBEdit no longer displays an "encoding mismatch" alert. (In general, you shouldn't save documents this way, though most modern software and user agents should recognize a UTF-8 BOM.)
  • Fixes:
  • Fixed typo in control title in the Text Printing section of the print dialog.
  • Fixed POD errors in the bbfind man page.
  • Fixed a bug where the first group of results in a search results list were sometimes inappropriately collapsed.
  • Fixed a couple of bugs related to insta-projects: "Open File by Name" would report -43 if the front project were an insta-project, and opening a document directly would not open into an insta-project's window when it should have.
  • When creating a temporary project for a folder 'odoc', the top level node is expanded automatically.
  • Command-D works in the "confirm save" sheet for insta-projects (on those occasions when it's necessary).
  • Fixed regression which caused bundle tool floaters (e.g. TextSoap) to appear in the Tools menu but not run when selected.
  • Restored previous behavior of "Compare Two Front Documents".
  • Refined the file filtering for multi-file Find Differences so that files' contents are inspected to help determine if the file is a text file. Restored the previous UI behavior so that if a file appears in the "In Both" list, selecting on it causes a comparison, even if the file isn't text.
  • Clicks on a disclosure triangle in a hierarchical list are never treated as a double-click.
  • Layout change to confirm-close sheet for projects.
  • Fixed bug in which "New HTML Document" did not create the document in the front project's window when it should have.
  • Fixed performance regression in case-insensitive Replace All involving single characters (which also affected Change Case).
  • Worked around bug in SMB client on Mac OS X 10.4.x which would randomly trigger a "this file has been modified" warning when saving documents on SMB volumes.
  • Removed the overly strict test for OSA script files in the #script# glossary token expansion, which prevented shebang files from being used.
  • Restored a workaround for a bug in the SMB client on Mac OS X 10.4.x which would cause a -36 error to be reported when saving an empty text file.
  • Fixed a bug where accessing the properties of a project item via the scripting interface failed.

New in BBEdit 9.3 (Nov 4, 2009)

  • Fixed a bug where the Find Multiple window did not honor color preferences for grep search/replace strings.
  • Fixed regression in which the End key didn't jump to the end of files with more than (32K-1) lines.
  • Resetting language specific preferences also resets the general settings.
  • "Recent Items" shows up in the preferences search drawer.
  • Fixed the formatting of the --maketags line in the output of bbedit --help.
  • Fixed a bug where we would install a new bbedit tool in /usr/bin, instead of upgrading one in an alternate location.
  • Fixed bug in which dragging text into one of the fields of the Find (or Multi-File Search) window would cause the other field to reset to the previous global state of the Find settings.
  • Only initialize ASL for debug builds (this eliminates the console logging of all BAS interactions).
  • man pages are installed in /usr/local/share/man/man1/ if the bbedit tool is located in a directory which contains the path segment "/local/".
  • Before performing any authenticated operations, BBEdit ensures that the auth helper tool is current.
  • Adjusted the authentication prompt string when installing the auth helper tool on 10.6 and later.
  • Using the font panel to change a document's font/size/tab width will now dirty the document's state.
  • Deleted a stray line from the CSS keyword list.
  • Fixed a bug in which expanding a project collection which contained expanded folders would duplicate the folders' contents.
  • Fixed regression in which "Move to Trash" for an item on a server volume would report a -120 error instead of asking you to delete the item immediately.
  • results windows created through the scripting interface no longer get created with a prefs key, to avoid filling the prefs with settings for arbitrarily named windows.
  • Fixed bug in which windows with custom names (as set by the scripting interface) didn't have those custom names restored when restarting after an application sleep.
  • Fixed bug in which an auto-saved document's line break setting was not restored correctly when reloading it.
  • Fixed disk browser bug in which safe-saving the file behind the displayed document from another application would cause the display to be cleared and reset to "No Editor".
  • Fixed #base_url# placeholder not expanded.
  • Fixed suspected cause of a crash while resolving script object accesses to the Find window.
  • Fixed terminology error that made it difficult to access the Find or Multi-File Search windows via the scripting interface.
  • "Replace" and "Replace & Find Next" now update the search history.
  • Some per-language overrides were not applied when a document was reopened. Fixed.
  • Some per-language overrides were not applied when a document's language was changed (when saving, or choosing the language from the menu).
  • Fixed crash which would occur when trying to use Check Links from the scripting interface.
  • http/https URL items in a project now use the generic Internet location icon instead of the Safari (or default browser) application icon.
  • Fixed regression in which you couldn't open an http/https URL from the project list.
  • Dragging host-only URLs to a project list no longer creates a project item with an empty name; the whole URL is used as the name.
  • Fixed bug in which trivial FTP/sftp URLs in a project list were allowed to open with a single click.
  • "Save a Copy" for the Scratchpad now honors the global line break preference, rather than always saving with CR line breaks.
  • Fixed a regression where the wrong template was restored when invoking the New HTML Document command.
  • Returned tooltips to the Open Recent menu.
  • If the remote server drops the SFTP connection (or it's broken for some other undetermined reason), the FTP browser or dialog will now alert you and invite you to reconnect.
  • Eliminated unnecessary computation, resulting in a 2x speedup when opening a large, soft-wrapped document.
  • Fixed crash which would occur when dragging items around in or into a project list.
  • Keyboard focus is now forced to the file listing when an FTP browser window gets created.
  • The warning shown when trying to close a results browser with items removed is no longer shown if you've deleted all the items.
  • Fixed bug in which printing a document without making any changes to its print settings would disconnect it from the preferences, so future preferences changes would have no effect on the document's print settings until the document had been closed and reopened.
  • Fixed bug in which changes to the default text printing font preference didn't stick.
  • Gruber's [REDACTED] "url-like" links are recognized and launched.
  • Fixed a hang in the YAML language module which would occur if you typed a '%' at the head of the file.
  • When opening a file located on a remote (file, NOT ftp/sftp) server, BBEdit will now listen to the document's parent folder for changes, rather than the document's file. This resolves a -61 error reported when attempting to save a file that had been opened from an AFP server by client on two different computers.
  • Fixed bug in which the listing in the FTP Browser/save dialog would not correctly scroll to the top of the list when displaying items not returned in something close to alphabetical order by the server.
  • Fixed bug in which "Save to FTP/SFTP Server" would report a -1728 error if the front FTP browser window was not connected to a server (and never had been).
  • It is now possible to scroll (horizontally) to the end of a line that's more than 65536 pixels long.
  • Fixed crash which would occur when reading certain gzip files.
  • Made changes to reduce the file system overhead involved in opening a document.
  • If a file is pure ASCII, it is now read using the default encoding for new documents, rather than allowing the fallback mechanics to take effect. In practice with factory default prefs, this means that pure ASCII documents will load as UTF-8 (no BOM), which is preferable to the previous behavior (reading them as Mac Roman).
  • Fixed bug in which hard wrapping a paragraph would cause the text view to scroll inappropriately.
  • Fixed crash which would occur if events ended up dispatched to a window which was in the process of being closed. (This tended to be irregular and hard to reproduce for some, not so much for others.)
  • When manually showing or hiding the Dock, BBEdit no longer resizes any windows, even if they would overlap the dock. (This is consistent with the standard application behavior.)
  • Fixed bug which prevented Disk Browser windows remembered by a Sleep from being reopened when starting back up.
  • Fixed bug in BBEdit wouldn't come to the front when opening files from an FTP browser by click-through.
  • Adjusted the file filtering for folder comparisons so that files which cannot be compared are still allowed to appear in the lists of results if "Text Files Only" is turned off.
  • Fixed a bug in which unmounting the volume containing one or more files that referred to by a project would cause an error to be reported when trying to close the project (and the project would become uncloseable).
  • Fixed a bug in which supplying UTF-8 data from a text view to a drag receiver would fail.
  • Worked around a crash in ClearDeadKeyInlineSession where AppKit inappropriately handled a TSM event destined for one of BBEdit's TSM documents.
  • Fixed a bug in the command line tool where open/print errors returned from BBEdit weren't reported to the user.
  • PHP here-doc opening tags are now allowed to contribute tokens for text completion.
  • When calculating completions in a case-insensitive language document, we no longer allow any built-in symbols (keywords or predefined names) to override tokens found by examining the document, unless the case is an exact match.
  • Application state saves (for sleep and autorecovery) now include the drawer state (open or closed) and the drawer width.
  • Fixed bug in which Hard Wrap using "Page Guide" as the limit would calculate line break points incorrectly.
  • Restored the ability of shell worksheets to ssh.
  • Fixed bug in which some commands in the disk browser's action menu were enabled inappropriately after the volume under the disk browser had been ejected.
  • Fixed bug in which application state (or sleep state) would fail to save if it included a disk browser whose backing disk had been ejected.
  • Long path names now extend to the width of the list in the Multi-File Search window, rather than being cut off at 64 characters.
  • Fixed bug in which deleting remembered items from the source list in the modal Find dialog or the Text Factory run window would fail to remove the item from the appropriate recent items list.
  • Fixed bug in generation of summary text in the modal Find dialog when "Exclude Matches" was turned on.
  • Fixed a bug in which opening a file from an FTP/SFTP browser didn't correctly use the browser's connection to the server. This would occasionally cause problems with servers running Pure-FTPd whose admins blindly followed the example in the server software's man page, and started the server with "-C 2" to limit client connections to two per IP address.
  • Fixed a bug where choosing "Learn Spelling" or "Ignore Spelling" left the spelling ranges in a state where they could not subsequently be updated.
  • Fixed bug in which invisibles placeholders drawn with "Show Invisibles" and "Show Spaces" active were drawn in the wrong font, which would in turn cause misaligned columns.
  • Fixed bug in which Shell Worksheet documents were not properly restored from saved application state (including a Sleep).
  • Fixed a problem where Preview didn't work correctly with Opera 10.
  • (Opera changed their versioning system in such a way that broke the version check in the Preview code for whether to send a POSIX or HFS style file URL to the browser. BBEdit always sends POSIX style file URLs to Opera now. Opera versions prior to 7.0 are no longer supported by the Preview tool.)
  • Fixed bug in which "Change Text Factory" and "Change Line Endings" actions in a factory applied by using "Apply Text Factory" on the front document did not have any effect.
  • Fixed bug in which language-specific text wrap preferences were not applied when opening an existing document.
  • Update the recent menu on inspection events so that it isn't blank when accessed by spotlight for menus.
  • When doing a "Use Selection for Find" (with grep turned off), we now escape literal CR, LF, TAB, and FF in the selected text.
  • BBEdit prefers public.utf8-plain-text to the UTF-16 based variants when reading data from the pasteboard or placing text via drag-and-drop.
  • This is the native type provided by Cocoa applications. By using it in preference to the UTF-16 variants we avoid getting a translated version of the rich text data which is also on the pasteboard. In certain situations, this can result in data which differs by more than just the encoding. (For example, when copying from Safari, WebKit places non-breaking space translated plain-text on the pasteboard, and tab-delimited data for any selected tables. But the translation of the rich text data results in something quite different.)
  • Fixed bug in which un-splitting an editing view would cause non-US text entry to fail, if the bottom pane had focus before the view was un-split.
  • Removed the hard-wired limit on the number of items representable in a menu that is backed by a folder (Scripts, Stationery, Text Factories, Unix scripts/filters).
  • Fixed bug in which tags in XML (vs. HTML) were incorrectly treated as CSS.
  • Fixed a bug which caused the Xcode projects Search Source node to be empty on 10.6.
  • Fixed broken wording for tool installer authorization when running on OS versions prior to 10.6.
  • bbedit --maketags now validates that the paths you passed exist and are directories and reports an error if they are not (rather than building a tags file for a filesystem tree you didn't intend to process.)
  • Fixed bug in which the "Text Files Only" setting in the Open dialog incorrectly disabled folders.
  • Fixed crash which would occur when dropping folder items in a project list on to themselves, i.e. selecting one or more items, dragging just enough to generate a highlight but not far enough to actually move anywhere, and then dropping.
  • Fixed bug in which tarball files weren't correctly handled by "Open with Finder" (and friends) from the contextual menu in disk browsers.
  • Corrected passive FTP expert prefs in help.
  • Fixed crash which would occur when trying to do a scripted format operation with no HTML source profile specified in the preferences.
  • Fixed bug in which opening files with non-ASCII names from the disk browser would fail.
  • Fixed crash which would occur randomly at some point after bringing up the Multi-File Search window.
  • Fixed bug in the C/C++ scanner in which it would crash instead of bailing when encountering excessively nested parens and/or braces. This typically happened when setting the default language to C++ or similar and then opening files which were most assuredly not.
  • Marked additional columns in the source control dialogs as sortable.
  • Fixed bug in which the shell worksheet padlock (to authenticate and perform privileged operations) didn't work in 10.6 (it always reported "Sorry, you entered an invalid password").
  • Fixed bug in which packaged script applications (as created by the Script Editor on 10.6) were not recognized as AppleScripts; this caused invocation from the clippings system (and other contexts, like the HTML document/site updater) to fail when they should not have.
  • Fixed bug in which changes to a tags file in a given source file's hierarchy did not correctly trigger recoloring of the source file when they should have.
  • Fixed a bug which caused split windows to draw the top pane as if it were scrolled to the top if a replace all was performed in the bottom pane (the scrollbar was actually left in the correct position, but the content was incorrect).
  • Fixed bug in which the "Input is XML" option to the Tidy Reflow text factory operation was not passed to the operation, resulting in incorrect output.
  • Added fix for the documents drawer not updating after a Save All.
  • Added SUHelpAnchor keys to BBEdit/TextWrangler's plist, and created help pages for the software update checker dialog.
  • Fixed bug in which closing a document and requesting a save to an explicit location would ignore the save location and prompt. This construction now works correctly: tell application "BBEdit" to close text document 1 saving yes saving in file "Boom Box:Users:siegel:Desktop:text.txt"
  • Fixed bug in which using Save As to change the encoding or line break type of an unmodified document (by saving over itself) wouldn't work.
  • Made changes so that automatic saving of application state only takes place when something has changed.
  • Fixed a bug which caused updates to man pages to succeed, but new installs of man pages to fail.
  • Fixed bug in which identifier names containing language keywords would confuse the Pascal parser and cause it to generate wacky fold points for procedures and functions.
  • Fixed bug in which "New Text Document" and "New Folder" were incorrectly enabled when a collection item was selected; and choosing either command would report an error.
  • Corrected capitalization of control titles in the Text Printing section of the print dialog.
  • When doing an Open Counterpart, BBEdit first checks to see if the document in which you're working is in the active Xcode project, before asking Xcode for the counterparts. In this way, we avoid opening inappropriate counterparts when the file happens to have the same name as one in the project.
  • Adjusted the behavior of Open Selection/Open File by Name to match that of Open Counterpart: if the front document exists on disk and is not in the active Xcode project, we don't ask Xcode for anything, to avoid possibly opening the wrong file with the same name.
  • Fixed bug in which changing a document's language would not cause the associated preview window to refresh when it should have.
  • Fixed bug in which some commands were inappropriately enabled for the editing fields in the Find and Multi-File Search windows.
  • Fixed bug in which closing a multi-document window in which at least one of the documents had been opened from an FTP/SFTP server would cause an attempt to save those documents back to the server, even if they hadn't been modified.
  • Changed wording of the alert which appears when you try "Move to Trash" on an item and no trash folder is available.
  • Fixed a crash in the Java function scanner which would occur when encountering a package class.
  • Fixed a bug which prevented the installation of an updated Application Support folder.
  • updated bbdiff/twdiff man pages to reflect the positional significance of the file arguments.
  • Fixed bug in the scripting object model for project documents which made it impossible to address items nested more than one level deep.
  • Fixed hang in the YAML tokenizer which would occur when encountering a block string start character in some contexts.
  • Fixed bug in which executable files with a shebang line were not correctly recognized as text files when working in project lists.
  • Fixed authorization dialog wording.
  • Fixed bug in which "Save Default Window" was not enabled for FTP browsers as it should have been.
  • Fixed crash which would occur when closing the Multi-File Search window with certain search sources selected.

New in BBEdit 9.2.1 (Jun 23, 2009)

  • Additions & Changes - There are no new features or behavior changes in BBEdit 9.2.1.
  • Fixes:
  • Fixed crash which could occur when dragging items around in or into a project list.
  • “Replace” and “Replace & Find Next” menu commands now correctly update the search history.
  • BBEdit now displays a progress dialog when upgrading the contents of its Application Support folder during a version update/upgrade.
  • Fixed a crash which would occur in some situations when bringing up the Find window from the scripting interface.
  • Fixed a crash which would occur if an SFTP server returned file names that were invalid UTF-8.
  • Fixed a bug which prevented setting a key equivalent for the “Sleep” command.
  • Worked around a bug in Mac OS X 10.4.x which caused the “Open with Finder” action in project and disk browser lists to crash.
  • Fixed a bug in the Lua language module which would cause the app to hang when opening a Lua file with comments.

New in BBEdit 9.2 (May 7, 2009)

  • Trimmed 1 pixel off the effective width of thin view splitters. This makes the effective width (more) consistent with AppKit applications.
  • Fixed “Show Module Documentation” for python files which contain non-ASCII characters.
  • Fixed “Show POD” for perl files which contain non-ASCII characters.
  • N.B. The documentation for pod2text appears to disagree with the implementation with respect to the output encoding. Furthermore, in some cases it:
  • outputs iso-8859-1 when utf-8 is expected
  • outputs files which contain multiple encodings
  • BBEdit does its best to cope with this.
  • Fixed math error which would cause a Hex Dump operation to take up to twice as much memory as was required to complete the operation. For dumps close to the size limit, this would result in errors at the end of the dumping process.
  • The reopen application behavior will fire the startup action if there are no non-floating windows open. (Previously, having a floating window open caused the action to be suppressed.)
  • The --scratchpad option from the command line tool invokes “automatic” mode scrolling, which means that if the EOF was previously visible when the text is added, the window sill scroll EOF back into view (like Terminal does).
  • Fixed bug in which project contents got duplicated in the list (and consequently on disk) if the project document got reloaded due to a change in its backing file (for example, when checking in or out of an svn repository).
  • Fixed bug in which Text Factory documents did not correctly reload if the backing file was changed on disk, and behaved strangely when using Revert to discard unsaved changes.
  • Fixed a bug where P4 Show Opened would report no files opened when your login ticket had expired. It now reports the correct status.
  • The Show Gutter command is correctly disabled for the scratchpad window.
  • Fixed a bug where the incorrect relative data was generated for a reference to the project’s parent folder.
  • Fixed bug in which Save As on a document opened from FTP/SFTP would point the save panel at the “FTP Temp” directory.
  • Fixed crash which would occur if an error occurred while invoking pydoc in the course of a “Find in Reference” operation.
  • Fixed a problem where -9870 was sometimes reported when setting the font with the font panel.
  • Corrected a bug which caused the text statistics placard to not refresh after the word count timer fired. (the visible symptom being the ellipsis sliding from word count to line count instead of the placard growing in width)
  • Scratchpad View Settings changed via the View->Text Display menu persist.
  • Fixed a bug which prevented the “Unicode” line ending option in the status bar from being enabled when it should have been.
  • BBEdit no longer allows you to change the tab width of an editing view to zero. This, along with some internal changes, resolves a crash which would occur when attempting to do so.
  • The file filtering in projects now treats packages (like nibs) as files when “Invisible Items” is turned off, so that custom filters work correctly.
  • The ”.” and ”..” items are now filtered out of the file listings in FTP/SFTP browsers and save panels.
  • Fixed a bug in the ActionScript function parser. No longer tripped up by a function return type of * (which is the explicit way of typing something as “untyped”).
  • Fixed crash which would occur if BBEdit ran out of memory while trying to compare two files of sufficient size.
  • Fixed a bug which prevented the progress dialog and/or dock progress from appearing for some operations.
  • Fixed a bug which caused incorrect operation when trying to Save or Save As to a new file whose name contains a ”/”. (Trying to use ”/” in filenames is eventually going to cause you pain. Now there is one less place.)
  • Fixed a bug which allowed ActionScript’s get to be recognized as a function-starter in JavaScript files (similar to the function keyword).
  • Fixed possible cause of a crash related to populating the function popup in JavaScript files.
  • Fixed crash which would occur when trying to do a Find All in the selected text in a text view that was not backed by a document (such as the Scratchpad or Clipboard).
  • Fixed crash which could occur during a threaded Replace All (from multi-file search or text factory execution).
  • Fixed bug in which symbols whose names began with extern were listed incorrectly in the function menu for C/C+/ObjC/ObjC+ files.
  • Put in some armor plating to resolve a reported crash when trying to present search-status annunciators (wrap around, “not found”).
  • Fixed the HTML “submit” clipping – it incorrectly inserted “insert”.
  • Fixed bug in which accessing the URL property of a non-text document via the scripting interface would fail.
  • Fixed bug in which the “Find All” and “Replace All” buttons in the Multi-File Search window weren’t correctly enabled when they should have been after using the history or Grep pattern menus to fill in the text fields.
  • Made a change to reduce the amount of work done by the application to maintain the web browser list (for the Markup->Preview menu) when an application is launched or quits.
  • Fixed a bug where certain preferences which should have been excluded from syncing were not.
  • Fixed crash which would occur when adding a folder or path in the File Search preferences, after having previously deleted certain other entries in the list.
  • Fixed case in which “Find in Reference” would crash when invoked on an empty Python file.
  • Fixed errant “Unmappable characters found” sheet and subsequent crash which would occur when closing an unsaved document containing unmappable characters, and “Make backup before saving” is turned on, and “Keep historical backups” is turned off.
  • Fixed bug in which the “Save to FTP/SFTP Server” dialog didn’t allow you to follow symlinks on the server.
  • Fixed bug which prevented language-specific options from taking effect for new documents.
  • Find in Python Reference (pydoc) works correctly when pydoc emits non-ascii or non-utf-8 output, as is the case for modules with broken doc strings. (e.g. plistlib, Python Issue #5432)
  • The shipping build of ctags/readtags is built with NDEBUG=1 so that assertions don’t bring the tool down in normal use.
  • Made a bunch of changes to reduce the performance hit associated with using files located on high-latency remote file systems.
  • Fixed a bug where Save to S/FTP server inappropriately required a password when saving to an SFTP server (where you might be using public key authentication.)
  • Fixed bug in which certain operations (such as previewing in a browser) would attempt to save documents that weren’t dirty.
  • Fixed bug which caused a -50 error to be reported when trying to invoke “Text Options” for a Subversion commit window.
  • Fixed a problem where we would sometimes target the wrong P4 repository.
  • Fixed bug in which the “Search For” field in the modal Find dialog always got focus when bringing the application to the front while the dialog was up.
  • Fixed a bug where undo after a reload/verify didn’t mark the document dirty.
  • Fixed bug in which Jump Back and Jump Forward didn’t scroll the window back to the correct vertical point (i.e. where it was when the state was captured).
  • When opening files from a project window’s file list, BBEdit will now hand off to the system any files that BBEdit could open, but shouldn’t (OmniGraffle documents being one of many possible examples).
  • During project file autosave, if the project file can’t be found (due to USB drive dismounts, network changes, etc.) we notify the user once, and continue trying to autosave.
  • Fixed missing fold widgets for fold ranges containing a single line break.
  • Fixed a bug where the fold range end indicator would draw on the wrong line when soft-wrapping. (This also improves where the start indicator is drawn in those same situations.)
  • Adjusted the factory sizes for Disk Browsers and Projects so the text view size is consistent with text windows.
  • If you have chosen “Save Default Window”, those saved settings will still supersede these.
  • If the project’s backing disk file isn’t available and the project needs to be saved when closing, BBEdit will now give you the option to save it somewhere else, or to close it without saving.
  • Fixed a bug computing scrollbar widths in text views (which showed in Disk Browsers and project windows)
  • Fixed bug in which “Arrange” would put a window under the title bar if there was no saved default position.
  • Fixed bug in which ctags completions for languages which were not HTML-ish but embeddable in HTML were not offered as options when completing.
  • Fixed crash when JavaScript functions with assigned names, such as foo.bar[bat] = function() {...}, were not in a recognized/expected form.
  • Folder compares now avoid comparing documents that can’t be usefully compared.
  • Open from FTP/SFTP Server will no longer show project or file group documents.
  • Fixed bug in which a page break at the end of a line would cause an extra blank line to be printed at the top of the next page.
  • Fixed error performing P4 commands when a browser window was frontmost, and the selected item corresponded to an item in the trash
  • Fixed bug in which the “add to recent list” parameter to a “save” event was ignored.
  • Fixed bug in which using “Save As” did not change the document’s language if the default was something other than “(none)”. This change also addresses a bug in which the document’s language wasn’t recalculated if the file’s name changed on disk.
  • When the Find window is up, “Replace All” is disabled if the search target is blocked by a sheet.
  • The “Selected Text Only” setting in the Find window is now remembered across invocations of the window (and runs of the application).
  • Fixed crash which would occur when trying to set or change a keyboard equivalent after having started the application with the Shift key down (which disables loading of plug-ins and other services).
  • readtags will bail gracefully when asked to parse a tag file that it doesn’t know how to read, rather than crashing.
  • Fixed a bug where expanding a collapsed editor view in a results browser would sometimes result in screen turds left where the editor view should have been drawn.
  • Fixed bug which prevented you from adding packaged documents to a project window using the “Add” button in the project’s toolbar. (Dragging the package to the project list did work.)
  • The ponies’ steel shoes have been replaced with ones crafted from saronite, which should provide greater long-term durability in the field.
  • Fixed a bug in which the search/replace history wasn’t updated when doing a search or replace from the Search menu after editing the search or replace string in the Find window, switching to another document (without closing the Find window), and then using the Search menu.
  • Non-text documents now require a double-click to open from a project’s file list when single-click-to-open is turned on.
  • Expanded the VBScript keyword list
  • When looking up passwords given only a host name, the FTP/SFTP connection sheet will only look for keychain items with the right protocol identifier, to save wear and tear on the keychain.
  • A variety of changes have been made to reduce application startup time.
  • Fixed bug in which the SQL language guesser was a little too enthusiastic, and would guess files as MySQL that weren’t.
  • Fixed a bug where if “Save Default Window” was applied to a browser with a collapsed editor view, the next instance of the window would incorrectly show the editor view at its minimum size.
  • Fixed a bug in the Ruby module which would cause a multi-line, general delimited input string (%+string+) to fold incorrectly (the closing fold point was one character too soon).
  • Fixed a bug in the Ruby module where Begin/End blocks could cause fold points to be be placed at seemingly random places in the document.
  • Fixed a bug in the Ruby module where complete for or while loops, written on a single line and within curly braces, could throw off the folding for the entire document.
  • Fixed a bug in the TeX module in which a $math$ section within a {required param}, where the $math$ section contained a closing curly brace (e.g. caption{foo $i_{0}$ foo}), would confuse the parser. This tended to manifest as incorrect autofolds and improper indentation in the function popup.
  • When auto-saving, documents that have not yet been saved or have unsaved changes now retain additional state information that cannot be reproduced from the document on disk.
  • Fixed bug in which choosing certain text encodings (for example, “Chinese (GB18030)”) from the encoding menu would rewrite the document’s charset declaration with a junk string.
  • If an HTML/XML document has a character set declaration that specifies UTF-16, but the document has already been eliminated as a UTF-16 document, the charset declaration is ignored. This resolves the problem which arises if you save a document as UTF-8, manually edit the charset declaration, and save again, rendering the document unopenable by BBEdit.
  • Fixed a bug where Check Syntax for Python didn’t show a results browser when using Python 2.6.x.
  • Fixed an edge case in the C folds generator where cuddled braces didn’t generate the correct fold range when at the left margin.
  • Fixed a bug where the contextual menu contained disabled search commands (instead of omitting them) when the selection range was empty.
  • Deleted what appears to be a stray line in the PHP predefined names list.
  • Fixed crash which would occur when trying to drag a project window from the Windows palette and no document selected in the project (or the editing view collapsed).
  • Files which are +x and begin with a shebang (#!) are now assumed to be text files.
  • When doing a Save As, if the document’s name already ends in the recommended extension, we won’t add the recommended extension again.
  • Fixed bug in which some open documents were left out of the saved application state if the auto-save interval triggered while in the process of reviewing unsaved documents.
  • Fixed bug which prevented language guessing from working when doing a “New (with Clipboard)”.
  • The Ruby module will no longer detect regular expressions as the first token immediately after a string or another regular expression. This resolves a syntax coloring bug found with the syntax used by the Merb framework (which uses an overloaded ”/” method.)
  • Fixed bug in which a Subversion source control configuration didn’t properly record the password you entered when creating it in the Preferences window.
  • Fixed bug in which closing the Multi-File Search window had the side effect of turning off “Wrap Around” for future interactive searches.
  • Application state restoration (reopening documents that were opened the last time you quit or slept the app) now honors Projects:RememberOpenDocuments and will not reopen documents that were open in a project window.
  • Fixed bug in which the cursor position display was initially incorrect in new editing windows created from existing documents.
  • Fixed bug in which using a keyboard equivalent for an item on the Text Options menu in the Scratchpad would cause a drawing artifact in the Scratchpad window’s toolbar.
  • Fixed a bug where temporary files written for ‘Preview in BBEdit’ through a local web server were written incorrectly, resulting in ‘gremlins’ appearing in the preview window.
  • Updated the built-in list of VectorScript keywords, and added a list of predefined names, suitable for completion duty.

New in BBEdit 9.1.1 (Feb 2, 2009)

  • Changes:
  • When saving a local (or new) document to FTP/SFTP server, and an FTP/SFTP browser is open, BBEdit will now use the browser’s current server location as the default connection location for saving.
  • The Consolas font supplied with BBEdit has been renamed to “Consolas for BBEdit”. If you previously set your Editor Defaults font setting to use Consolas, it will be updated to use the renamed font.
  • Fixes:
  • Fixed a regression which caused projects not to restore their expanded nodes on reopen.
  • Fixed bug which broke FTP compatibility with DOS-style listings on Windows NT servers.
  • Fixed a bug in which various operations which involved moving a temporary item to the trash would cause an alert to appear inappropriately when the user’s home directory was hosted on a remote AFP or SMB file server.
  • Fixed a regression which caused expired recent items to be moved to the trash instead of deleted.
  • Somehow, the “Save All” button in the modal Confirm Save panel (used when quitting with unsaved documents) ended up in the middle of the panel, where it was obscured by the list of files that needed saving. It is now out of hiding and prepared to receive its fans.
  • Fixed bug in which the correct sort order was not applied in the FTP browser and panel when sorting by name.
  • Fixed a bug which caused some FTP servers to refuse to return any items whose names began with a period, so the Show items starting with "." setting was inoperative.
  • Command-down-arrow in an FTP browser window now properly works as a synonym for “open the selection”; previously it only worked on selected directories.
  • Fixed bug which would cause a crash when a network timeout occurred during SFTP uploading or downloading.
  • Fixed a regression where line numbers were drawn with a junk trailing character when using soft line numbers in the linebar.
  • Fixed a regression in which FTP auto-disconnection didn’t occur, so the server was liable to hang up on an active FTP connection, leading to all sorts of strange errors when navigating in FTP browsers or saving documents that had been opened via FTP.
  • Fixed a bug in which FTP connections weren’t properly closed when opening and saving documents via FTP; if the server enforced a limit on the number of outstanding connections, this would lead to subsequent errors.
  • Fixed a crash which would occur in rare situations when connecting to an FTP server in an FTP browser after having previously used the same browser and disconnecting from the server (or another one).
  • Fixed bug in which relative project item references weren’t correctly resolving via relative data when possible.
  • Fixed a bug in which the FTP/SFTP browser and save panel didn’t remember the open (or save) location when they should have, so that subsequent connection attempts would try to connect to an unexpected location (or none at all).
  • Fixed bug in which opening files whose names began with a period (.) would fail on certain FTP servers (most notably Windows servers).

New in BBEdit 9.1 (Dec 15, 2008)

  • Additions:
  • BBEdit now includes a copy of Consolas Regular, an excellent antialiased code editing font. This font is licensed from Ascender Corporation for use only with BBEdit.
  • The internal FTP implementation has been rewritten to improve performance and reliability. Users with dual (or more) core machines may notice additional performance benefits.
  • The “Passive” setting for FTP is no longer used. When transferring, BBEdit will first attempt a passive connection; if the server does not support passive transfers, BBEdit will then attempt a non-passive (PORT) connection. Thus, the “Passive” setting is gone from the FTP preferences, FTP browser, Save to FTP dialog, and the scripting terminology for FTP commands.
  • The file filtering interface supports a new term: “File Path”. This is a simple string match against a given file’s full path.
  • The Text Files preference pane carries a new option: “Trim trailing whitespace”. If this preference is enabled, BBEdit will trim all trailing non-vertical whitespace from the file before writing it out.
  • Editing: General has a new control: “Include dictionary words in completion list”
  • The line bar is now drawn in the system font, anti-aliased.
  • You can send data to the scratchpad via the command line tool: ls | bbedit --scratchpad
  • You can script appending text to the scratchpad: tell app "BBEdit" append to scratchpad "Dude!" end
  • The ASCII floater uses the “standard” names for NUL, BEL, etc. for characters below space (0x20).
  • The CSS markup tools and function parser are now in sync with the logic used by the syntax coloring engine: a element’s contents are considered to be CSS if there is no type attribute, or if there is one, and it’s value is “text/css”.
  • If Perforce is installed, the bbedit command line tool will attempt to map depot specs and client specs into file paths.
  • You can now enter (or paste) a Perforce depot specification in the “Open File by Name” dialog and BBEdit will ask Perforce to resolve it. (You’ve been able to use Open Selection on a Perforce spec for a while now, so maybe this is more of a bug fix than a feature addition.)
  • If a project document is open, Open File by Name and Open Selection will look in the project for matches, first examining discrete file entries, and then (if necessary) searching any folders in the project. If multiple projects are open, BBEdit will use the frontmost one (in window Z order).
  • Language modules may now be installed by double-clicking them (or by drag-and-drop to the application). Plug-ins and language modules both offer an “Install and Relaunch” option.
  • Project documents now support relative references.
  • Newly created items will be created with relative reference information. When resolving a project item, we’ll always try to resolve via the relative information, then fall back to the absolute and alias data.
  • Project files created with previous versions of BBEdit are upgraded to contain relative locator information.
  • Changes:
  • The factory default font is now Consolas-12. If you never chose a default font before, your documents may now display in Consolas-12. If this is not to your liking, adjust the display font accordingly in the “Editor Defaults” preferences.
  • Removed the “Create New Document” checkbox from the New HTML Document dialog; it always creates a new document now.
  • Revamped FTP/SFTP browser windows. The layout has been redone, the interactions have been remodeled, the directory popup is much more functional, and the file list now includes the modification date as reported by the server (and the sort order can be changed).
  • The “Save to FTP/SFTP Server” dialog has been rewritten and modernized. The changes here largely parallel the ones made for FTP browsers: freshened look and feel, sortable file list.
  • The default line break description for CR is “Classic Mac” to attempt to discourage people from choosing it inappropriately. Both the preference pane and the Save dialog now use the same wording.
  • Changed the default completion threshold for ctags from zero characters to three (so you won’t see any ctags completions unless you’ve typed at least three characters).
  • Fixes:
  • Restored some missing code which allowed open events to specify additional properties. This fixes a bug in which, where Workspaces do not correctly restore window positions.
  • Fixed a bug where project items were not opened on single click if that click also had the side effect of scrolling the list item into full view.
  • If Apply Text Factory changes the length of the text, the selection range shrinks or grows as appropriate.
  • The view state (line numbers, tab stops, and page guide) for the Scratchpad window persists across window closures. (previously, only document state was preserved)
  • The Search and Replace fields both scale when the text factory configuration sheet is resized.
  • Improved the printing/pagination behavior when printing web preview windows.
  • Added a default preference for Startup:RestoreApplicationState, and removed the in-code defaults. This corrects the problem where if you had never changed the preference, the application behaved as if it were enabled, but the prefs UI showed it disabled.
  • Trying to save a binary plist with syntax errors now reports a slightly more useful error.
  • PHP classes and interfaces which extend/implement more than one thing (other classes or interfaces) are now listed correctly in the function popup and receive auto-generated fold points.
  • Fixed a regression which made it impossible to select windows with non-ASCII titles from the window menu.
  • Fixed bug which prevented worksheets from reloading their saved markers.
  • Using the shift left operator (in a Ruby file) to append a quoted string onto the end of another quoted string will no longer fool the Ruby module into seeing a heredoc where none was intended. (Syntax disambiguation FTW!) Example: foo = “testing ”

New in BBEdit 9.0.2 (Oct 25, 2008)

  • Additions:
  • Added a language selector to the Scratchpad, to enable syntax coloring for the selected language. (As with other documents, auto-guess on pasting into an empty scratchpad will work as expected.)
  • The “Use Selection for Find” command and friends now work when the Find or Multi-File Search windows are in front; they apply to the first (in Z-order) window that’s not the Find, Multi-File Search, or Quick Find window, as long as that window has a text view.
  • Changes:
  • Removed the anachronistic “option click to open in Finder” gesture from disk browser lists (for consistency with project list views).
  • The search commands in the Find window will now target the first (in Z-order) window that’s not the Find, Multi-File Search, or Quick Find window, as long as that window has a text view.
  • Fixes:
  • Small performance tweaks to the Ruby function scanner (for the function popup and fold markers).
  • Improved the parsing (for fold markers) of Ruby while loops and defineMethod statements.
  • Improved parsing of class names for the function popup in Ruby files, and “.class” on the end of an identifier is now handled properly.
  • The Edit menu (e.g. Paste) once again works correctly in get/put file dialogs or sheets when running 10.4.x.
  • JavaScript Array declarations written with square brackets, as well as matched pairs of parentheses, will now have automatically generated fold markers as long as the range contains enough lines to fold (per the pref).
  • Fixed a bug in the HTML paragraph tool (and paragraph guessing logic in the HTML Translate tool) where the last paragraph in a file would be skipped if the paragraph ended with a space or tab, but not a carriage return.
  • Fixed a bug where a 13214 error was reported when creating a new project document when running in certain configurations.
  • Fixed a regression in HTML syntax coloring related to style tags without type attributes. style tags are now assumed to have a type of text/css unless they specify otherwise.
  • Fixed bug in Markdown module which would cause BBEdit to freeze when it encountered what it thought was a blockquote indicator in the middle of a list item (where it ought not to be).
  • Fixed several user interaction bugs in the non-modal find dialogs, including a bug which prevented pasting into the replace field via iClip from working.
  • If “Reopen documents that were open at last quit” is enabled, BBEdit will reopen those documents whether the application was launched normally, or by opening a document. (Previously they were not reopened in the latter case.)
  • Fixed a regression where Control-C didn’t kill child processes of a shell worksheet.
  • Restored the previous behavior where deleting all the text in an untitled document marked it as unmodified.
  • Fixed an off-by-1 alignment bug in the disk browser when the toolbar was hidden.
  • Fixed a regression which would cause shell worksheets to crash on creation when certain shells were used. (e.g. ksh)
  • Fixed a regression where the “Change clipping set to match document’s language” setting in the Language preferences was inoperative.
  • Fixed crash which would occur when trying to use the close box in the first-run window.
  • Fixed bug in which files inserted with the “Insert -> File Contents” menu command weren’t inserted in the correct order.
  • The “Page Setup” and “Print” commands are now disabled for the Find and Multi-File Search windows.
  • Fixed crash which would occur when attempting to auto-save, but no application support folder was available (typically because of messed-up permissions which prevented its creation).
  • Fixed bug in which Cmd-left-arrow didn’t obey the @ldquo;Exchange Command and Option key behavior: Horizontal” preference.
  • Fixed bug in which “Find Definition” for a selected ctags symbol did nothing when the symbol was in an Objective-C source file.
  • Fixed crash which would occur if a certain sequence of events triggered the appearance of an app-modal Save panel after having just used the window-modal Save panel on the same document.
  • script tags in HTML files are now assumed to be JavaScript if not otherwise indicated.
  • Fixed HTML syntax coloring bug wherein editing a closing /script tag would cause the entire tag to be miscolored.
  • Fixed bug which would cause the modal Save panel to be presented when saving a changed document whose path on disk had changed (usually because a folder name in the file’s ancestry had been changed).
  • Fixed a bug where the “Clippings are language sensitive” setting was ignored.
  • Expanded the list of recognized RCS keywords (for Find Differences) to include the synonym keywords defined by Subversion.
  • Corrected a build system bug which prevented the Ruby language module from working correctly on a case sensitive filesystem.
  • Fixed bug in which the sheet for adjusting suffix mappings didn’t correctly indicate the counterpart-y-ness of the mapping.
  • BBEdit now caches unified tag sets, so if you open more than one file that relies on the same set of tags, we only generate and maintain a single set of tags, rather than duplicating (and recomputing) each time.
  • Made a change to significantly reduce the memory and CPU requirements when opening a source file which relied on a single giant ctags file for symbols.
  • The “Reload from Disk” command is now correctly disabled for documents opened via the built-in FTP/SFTP support.
  • “Open File by Name” from the dialog box will avoid searching for impossible matches: absolute paths with “Find All Matches” turned on (either explicitly or because of a wildcard pattern). Related: the “Match Wildcards” option will only affect the search if the name you entered contains unescaped wildcard characters.
  • The “Open” contextual menu item in disk browsers and project lists will now open any selected folders in BBEdit as disk browsers, rather than opening them in the Finder.
  • Fixed bug in which the Multi-File Search window’s source list inappropriately tracked the selected document in a search results window; if you subsequently selected a different file (or nothing at all), BBEdit would crash when trying to refresh the sources list.
  • Fixed bug in which saving an untitled document in response to the modal alert presented when quitting would fail with an error 13213.
  • Fixed bug in which the Page Guide wasn’t recalculated correctly when changing the display font or size in a text view.
  • Reconnected the global pref for Status bar items.
  • Fixed reversed soft wrap preference keys
  • Fixed a regression which caused the Entities palette popup menu to draw uglified.
  • Fixed a bug preventing a stored source profile from being used, or new source profiles from being written.
  • The Open dialog remembers its visible files setting between invocations.
  • We no longer change the language module when pasting into an empty document whose language had been previously set manually.
  • Fixed a bug where the days remaining thermometer did not get set to 0 when the demo period has expired.
  • Added the control title to the keyword list for pref searching, to make it consistent with BBEdit 8.7.
  • Fixed a bug where if your preferences did not have a Rubber Stamp font setting, they never would.
  • Fixed bug in tooltip generation for the modal Find dialog’s summary well, and restored the feature to the Multi-File Search window. (Clicking in the summary well displays a tooltip enumerating the selected search sources.)
  • Fixed bug which caused the “Default line breaks” group in the Text Files prefs to appear with nothing selected in the case of factory default preferences.
  • Fixed crash which would occur when trying to Hard Wrap or Rewrap Quoted Text on the contents of a Find or Multi-File Search window text field.
  • The “Quick Search” window now uses the appropriate “Not found” annunciator when sound is muted.
  • The “Run” command and friends on the #! menu are now disabled for the Scratchpad, resolving a -1409 error that would occur when choosing one of these commands. (The Scratchpad isn’t an appropriate target to be run via the command-line.)
  • Fixed bug in which dragging items between projects, or within a single project, would reverse their order.
  • Reworked BBEdit’s contextual menu handling to avoid command ID conflicts with contextual menu plug-ins.
  • Corrected the terminology so that the type of `found matches` in a `Search Match` is now `(list of Result Entry)` instead of `(list of list)`.
  • Fixed a bug in the modal find dialog where the view drew incorrectly after a click if custom highlight colors were enabled.
  • Restored the previous behavior where “Use Selection for Search String” preserved the current Grep setting, and escaped the input string as necessary.
  • Fixed a bug which would cause the path popup at the top of the file list to appear on the wrong screen in certain situations.
  • Fixed a bug which would cause the function popup to appear on the wrong screen in certain situations.
  • Fixed a bug where in certain situations, Insert Clipping would not use an appropriate clipping set.
  • Fixed a user interaction problem with Spaces enabled where selecting an item from the window menu would not result in a Space switch in situations where it was necessary to make the window visible.
  • Fixed a bug where the action buttons in the spelling panel did nothing if a tooltip was visible for any spelling panel GUI element.
  • When importing the find pasteboard, BBEdit will leave the grep setting enabled if it was previously enabled, and escape the imported find string as necessary.
  • Fixed a layout bug in the Run Unix Filter sheet for text factories which caused the Choose button to be clipped when the window was deactivated.
  • Fixed cases where multiple selection was allowed in choose file/folder dialogs where only a single selection should have been allowed: Diff dialog, Hex dump dialog, Choose applescript from text factory
  • Added support for class definitions, interfaces and packages to the ActionScript function scanner, so they’ll now have auto-fold marks and will be listed in the function popup.
  • Fixed bug which would miss an open brace occurring immediately after a dotted.name, which would throw off folding and function menu generation.
  • Fixed bug where ActionScript functions which specified a return type (as in, “:type”) would result in an incomplete function popup and missing fold markers.
  • Function prototypes within ActionScript interface declarations are now listed in the function popup.
  • In JavaScript and ActionScript files, no longer add fold points for pairs of parentheses which only contain functions, as that tends to conflict with the fold point for the function’s opening curly brace, and the fold then hides the entire function. (For an example of this, see Prototype.js version 1.6.0.2, line 1603.)
  • Fixed a regression which caused BBEdit to stop refreshing document contents if the backing file were removed and replaced with an identically named file, but the new file was created more than 0.25 seconds after the removal.
  • Worked around bug in the SMB client on 10.4 which would cause erroneous “this file was modified on disk but has unsaved changes” alerts to occur.
  • Command-period now works to close the modeless Find and Multi-File Search windows.
  • The “All” search operations (Find All, Replace All) no longer turn off “Wrap Around” when performed.
  • Fixed a bug in which creating a new collection in a project didn’t put the new collection in the right place (it should have used the same rules as for adding files/folders), and added the new collection to the selected range of items, rather than selecting only the new collection.
  • “Save to FTP/SFTP Server” and “Save a Copy to FTP/SFTP Server“ are enabled for any text view backed by a document, when that view has focus, irrespective of what kind of window it’s contained in.
  • Fixed a bug in the Java language module which resulted in items being omitted from the function popup.
  • Fixed a bug in the ActionScript module wherein functions declared to have a return type of void would result in an incomplete function popup and missing fold markers. (void would seem to be the only operator which ActionScript also allows as a type specification. Go figure.)
  • Fixed crash which would occur when opening a disk browser with the Multi-File Search window open while DragThing was running. On an alternate Tuesday.
  • “Find Selected Text” uses the same rules as “Use Selection for Find” with respect to preserving the Grep setting.
  • Getter and setter functions are now supported in JavaScript and ActionScript documents. They are listed in the function popup with a get or set prefix, as appropriate. (Yes, JavaScript supports getters/setters, though the syntax is slightly different than ActionScript’s.)
  • Function prototypes are now found in ActionScript class definitions (they were previously only found in Interfaces).
  • Added get and set to the JavaScript module’s keywords.
  • Updated the list of keywords in the ActionScript module. The list comes directly from the ActionScript documentation, and includes the actual keywords, top-level class names (like Array and Boolean), and constants (like Infinity).
  • Added a long list of “predefined names” (for text completion) to the ActionScript module, which includes the names of all of the public packages, namespaces, classes, interfaces, functions, class variables (fields) and constants that were found in Adobe’s Flash and Air.
  • Fixed crash which would occur when trying to load extension-to-language mappings in the Preferences window with certain corrupted forms of extension mapping.
  • If a language module’s language code is longer than four characters, or contains a suffix mapping for a suffix longer than 31 characters, the module is not loaded. This guards against problems arising from incomplete copies of the canonical CLM template left in the Language Modules folder.
  • Fixed a bug where the run record passed to language modules for the kBBLMAdjustRangeForTextCompletion message was zeroed for an empty proposed range.
  • Fixed bug in which windows weren’t correctly arranged (either at creation, or using any of the stacking options in the “Arrange” command) unless you had previously used “Save Default Window”.
  • Fixed a bug in ActionScript and JavaScript support which caused empty (no name) items to appear in the function popup when an object literal was assigned to a variable (or property) but that variable was preceded by what looked like illegal syntax. (For example: foo bar={...}).
  • Fixed bug in JSP support which could cause the loss of all syntax coloring in Java blocks as the result of an edit.

New in BBEdit 9.0.1 (Sep 12, 2008)

  • The “Open in Additional Window” command (in the View menu) is now available in browser windows.
  • Project documents now track the visibility of the toolbar with the rest of the UI state.
  • Fixed a bug where results windows weren’t correctly re-used if they were displaying a document.
  • Fixed a bug where automatic language switching via pasting incorrectly set the “manually set” flag to true, which prevented automatic language switching for untitled documents at save time.
  • Fixed a bug where text completion didn’t work correctly in the INI File langauage module.
  • Predefined names are now completed in a case insensitive fashion (which makes them consistent with the rest of the completion sources).
  • Fixed a bug where codeless language modules didn’t complete from the provided BBLMPredefinedNameList.
  • Fixed a bug where double-clicking a document in the Finder would inappropriately open it in a project window with a closed editor if that project window was frontmost.
  • Fixed a bug where opening multiple files from a project window with the attached editor closed ignored the document handling pref and opened the documents grouped in a multi-document window.
  • Fixed a regression where double clicking on a file in a disk browser didn’t open the file in the first z-ordered text window (spawned a new window) if the multi-document window pref was enabled.
  • Starting a search with Return/Enter will select all the text in the focused text view when using the modeless find windows.
  • The “wrap around” indicator is less aggressive about when it appears; it will appear for wrap around searches with a positive result, but will be suppressed for the not found case. (In that case, you’ll get a beep or the usual not found visual indicator.)
  • Fixed a bug where the “wrap around” indicator always appeared on the main screen.
  • Fixed a bug where the current line highlight was inappropriately used in the find dialog text fields.
  • Fixed a bug where “Open in Additional Window” incorrectly cleared the undo stack for the document.
  • Fixed a regression where piping to BBEdit didn’t mark the new document as dirty.
  • Moved the “Other…” button in the Find Multiple window to the top of its button stack.
  • Fixed a bug where the text completion panel could, in certain situations, “chase” you across the page as you typed rather than auto dismiss once you typed off the range of text being completed.
  • Removed the “Create New Document” checkbox from the New HTML Document dialog.
  • Fixed a situation where the completion panel could appear inappropriately after a save event.
  • Stationery menu and palette changes: files without the stationery bit are no longer listed, stationery files with no HFS type but a suitable filename extension appear, as they should.
  • Attempting to save a document as stationery no longer results in an Apple Event error.
  • When computing completions from the front document’s contents, BBEdit will not offer results consisting entirely of decimal digits (0-9). When computing completions from ctags, predefined names, or the system dictionary, BBEdit will not attempt to complete partial names consisting entirely of decimal digits (0-9).
  • Fixed a bug which caused the textual description of a difference pair to always be “Changed lines” instead of sometimes being “Extra lines”
  • Corrections to the line ranges array generation for the diff tool.
  • Fixed bug in which the license panel was displayed when bringing the app to the front after having previously entered a serial number.
  • Small cosmetic change to the progress window for multi-file search and text factory execution.
  • Corrected missing preferences help search keys.
  • Fixed a bug which caused the Software Update preference to be read, but never written.
  • Fixed a regression which made preferences searching case sensitive
  • Preserve case when reporting an attribute value case error in the XHTML syntax checker.
  • Improved the behavior of Save/Copy as Styled HTML/Styled Text when using custom text color preferences with a non-white background.
  • Codeless Language Modules now suppress the spelling dictionary as a completion source outside of strings or comments. (This matches the default behavior for the built-in languages.)
  • Adjusted the layout/border metrics of the text document accessory view for the save panel.
  • Fixed a crash which could occur when closing a document with certain input methods active, or the typography panel open.
  • Fixed a crash which would occur when changing the clipping set if a floating window (such as Insert Clipping) had keyboard focus.
  • Fixed a performance problem while typing in large HTML files due to overhead from the HTML function parser, plus misc. other problems.
  • Fixed a crash which could occur when invoking Tag Maker at the top level of a document with a synthetic root element (via #bbpragma.)
  • Fixed bug which could cause noticeable lags when working with documents on extremely high-latency file systems (like sshfs or MacFUSE/ssh).
  • Fixed a crash doing Find Definition with no selected text.
  • Fixed crash which would occur when trying to autocomplete using ctags on Mac OS X 10.4.x.
  • Fixed crash with nested save panel invocations for the same document.
  • Fixed bug in which syntax coloring in ActionScript documents would get out of whack during editing.
  • Fixed hang in the Ruby module when presented with incomplete interpretive string blocks.
  • Fixed bug in which syntax coloring in VBScript inside of HTML documents would get out of whack during editing.
  • Fixed bug in which a certain sequence of selection/deselection in a multi-file Find Differences results window would cause BBEdit to start opening up disk browsers.
  • Fixed bug in which name-based file filters would fail if the file’s name contained characters that couldn’t be mapped to a single-byte representation in the application’s text encoding.
  • Fixed bug in which the items in Saved Search Sources didn’t appear in the summary when doing a multi-file search, nor were they applied when starting the search.
  • Fixed bug in which SFTP connections to certain servers would fail and report a 22807 error.
  • Fixed bug which rendered Application Support folder syncing nonfunctional.

New in BBEdit 9.0 (Aug 29, 2008)

  • The text views in browsing windows (disk browsers, search results, P4 opened, and similar) are now editable; rather than having to open a file into a new window from such a browser, you can just edit it right in the window.
  • There is a new command on the Window menu: Show Scratchpad
  • The Scratchpad window’s purpose is to be a space where you can manipulate text by performing transforms, manual edits, or batches of copy/paste.
  • It is ideal for quickly beating text from one source into submission before pasting it elsewhere.
  • The Scratchpad window automatically saves its content and state, eliminating those pesky “Save Untitled 237?” warnings when closing a window, or quitting BBEdit.
  • The Scratchpad is also available from BBEdit's dock menu.
  • Finally, there is a new item on BBEdit's Services menu: Append Selection to Scratchpad. This command will take the selected text, and place it at the end of the scratchpad, attempting to preserve any selection that was previously present. The Scratchpad window does NOT need to be open to use this command. Any text appended in this fashion will be present the next time the window is opened.
  • Added a missing Migration command (change column) to the clipping set for Ruby/Rails.
  • Added "Save as Styled Text" to the File menu, and "Copy as Styled Text" to the Edit menu. These function similarly to their HTML analogs, but the Save variant saves an RTF file, and the Copy variant copies styled text (which is more easily shared with other applications).
  • Added “Multi-File Search” command to the Find menu. This unconditionally opens the Find dialog with the “Multi-File Search” option turned on.
  • There is a new command on the File menu: “Reload from Disk”. This command will examine the file on disk, and if it’s different, reload the front document’s contents from the file on disk. This is useful in situations where the file may have changed without BBEdit noticing, which will be the case if “Automatically refresh documents” is turned off in the Application preferences, or in the case of a document on a shared disk that gets modified by another workstation.
  • When running on Mac OS X 10.5 or later, the “Colors” command is available on the Windows -> Palettes menu. This command shows and hides the system color panel.
  • There’s a new option in the “Insert Folder Listing” dialog: “Show invisible items”. If turned on, the generated listing will include invisible files/folders and the contents of packages.
  • There’s a new group of sources in the Find dialog’s source list: “Xcode Projects”. This group shows the projects in Xcode’s Recent Projects menu; selecting one (or more) will instruct the multi-file search to search each text file in the project.
  • Find Differences now uses the system diff tool for generating the difference ranges displayed in the application. This should result in more usable results.
  • Many more fixes and improvements