Requirements

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):

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 proselinthere.)

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.

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

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.

Changes

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.

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 <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.