BBEdit 11.6 Release Notes
BBEdit 11.6 adds a variety of new features, and includes changes to existing features and behaviors as well as fixes for reported issues.
For details on all the new features and enhancements available in BBEdit 11, please see its release notes.
For detailed information on using any of BBEdit's features, please refer to the user manual (choose "User Manual" from BBEdit's Help menu).
BBEdit 11.6 requires Mac OS X 10.9.5 or later, and is compatible with macOS 10.12 "Sierra".
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.
For example:
proselint --demo | bbresults
(you can learn more about proselint
here.)
or
flake8 foobar.py | bbresults --pattern flake8
or even
grep -n void *.c | bbresults
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.
```javascript $('a-thing').blowup(); ```
Updated the internal Markdown previewing script to convert github-style fenced codeblocks into Markdown's traditional code block output. Thus this:
```javascript while (pnoies) { alert("glitter and rainbows!"); } ```
will preview as this:
<code>
<pre><code>while (pnoies) {
alert("glitter and rainbows!");
}</pre>
</code>
Custom keyword files (those that live in Application
Support/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. Such a keyword file
would look like this:
-*- mode: php; -*-
keyword_one
keyword_two
...etc...
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.
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.
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 Unix
worksheet 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.
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 <meta>
.
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.
fin