This page documents all feature enhancements and refinements included in BBEdit 10 (including 10.0 and subsequent feature updates). Included are additions and changes made since BBEdit 9.6.

For detailed information on using any of BBEdit's features, please refer to the user manual (choose "User Manual" from BBEdit's Help menu).

Requirements

BBEdit 10 requires Mac OS X 10.6.8 or later (10.8.5 or later recommended).

PowerPC-based Macs are not supported.

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.

Structurally, a package is a folder whose name ends in
".bbpackage". (This is required.) The items immediately within
the folder are reserved for definition and use by the
application; please do not put anything at the top level of the
folder that isn't documented.

Immediately within the package folder must be a folder named
"Contents" which is where all the action happens.

The Contents folder may contain a folder "Resources" and a file
"Info.plist". (These items may be absent currently, and are reserved
for future expansion.)

The Contents folder may also contain any or all of the following
folders:

Clippings

Language Modules

Preview CSS

Preview Filters

Preview Templates

Scripts

Stationery

Text Filters

Each of these items behaves as though its contents were in the
same-named folders in ~/Library/Application Support/BBEdit/.
They're all optional, but obviously a package is useless if
it contains nothing.

Tag Maker and Edit Tag have been replaced by a single command:
"Edit Markup", which now presents a completely new user interface.

When you choose "Edit Markup" to edit an existing tag, the panel
that appears presents a table of attributes and values. In the
column on the left are attribute names; the column on the right is
where you fill in values.

When adding or editing attribute names, you can type in anything you
want; but the combo box presents (and assists in the completion of)
only attribute names that are valid for that tag.

If a tag has any required attributes, those are added to the list
and cannot be edited or removed.

When making a new tag, the panel starts off with a combo box in the
upper left corner; it allows only the selection of elements that are
valid at that point in the document.

In the upper right hand corner of the panel, there's an icon. When
it's enabled, clicking it causes BBEdit to fill in "recommended"
attributes for that element. (If it creates any attributes that you
don't want, just clear their names, and they will not be inserted.)

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.

There's also a "Unix worksheet window" application property available
to the scripting interface.

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

Here's how:

Quit BBEdit if it is running.

Move your home/Library/Application Support/BBEdit to your
Dropbox/Application Support/BBEdit/. Note that by default,
there is no Application Support folder in your Dropbox, so
create it if necessary.

Note: The system does not support relocation of the core
preferences data file
(~/Library/Preferences/com.barebones.bbedit.plist), so you won't
be able to synchronize preference settings.

Note: The ability to share supporting files between multiple
installations of BBEdit does not excuse you from the terms of the
end-user license. You can use Dropbox to share the supporting files
with whomever you like, but you must continue to abide by the terms
of the license agreement.

If you like, you can relocate "BBEdit Backups" from
~/Documents/BBEdit Backups to ~/Dropbox/BBEdit Backups/, and
BBEdit will place your backups there instead. (As before, you can
alias it to some other location.)

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. Here's how it works:

Place a fully structured HTML document in ~/Library/Application
Support/BBEdit/Preview Templates/. It can contain anything you like,
but should define the basic structure and appearance of the document.
In the document, place a single placeholder: #DOCUMENT_CONTENT#.

Make a new document. Type some content into it. Use a few HTML
tags, whatever, but it shouldn't have a full HTML document
structure.

Preview the document. Note in the preview window, there is a row
of items below the toolbar, containing two items: "Template:" and "CSS:".
From the Template menu, you can choose the template that you saved in
the first step. The contents of the document that you're previewing
replace the #DOCUMENT_CONTENT# placeholder, so that when you preview,
you'll actually get all of the chrome that's defined in the template,
without having to replicate it for a fragmentary document that you
might be working on.

If you place a valid CSS document in ~/Library/Application
Support/BBEdit/Preview CSS, it will be available on the "CSS:"
menu. Choosing it will apply that CSS to the preview as well.

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.

This behavior can be controlled by a new option in the
Multi-File Search window's "Options" sheet: "Search compressed
files." When turned off, BBEdit will skip Zip, gz, and bz2 files
while searching, even if they may contain compressed text files.

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&nbsp;Schemes/.

Note: Using the bbcolors command-line tool to make color
changes will have no effect in BBEdit 10. If you were using it
before, we recommend that you desist, since bbcolors works at
cross purposes with BBEdit's built-in support.

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.

This change confers several benefits:

It is now possible to save all of the documents in a window
as a project, without having to go to the trouble to actually
make a new project beforehand. (Open documents as desired,
then use "Save Project" on the File menu.)

The file list is manually reorderable and can be organized
using collections, which addresses a longstanding request from
heavy users of the drawer.

Project windows grow a couple of new lists:

Recently Used:

Shows documents recently opened into this project's window.

Scratchpad & Worksheet:

Every project document carries its own scratch pad and worksheet
document. This is shared for all users of the project, so if you
wish you can use the scratchpad to make notes for other users;
or store handy commands in the worksheet.

These can be collapsed or hidden, if desired.

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. Try this:

ctl-U 80 -

(that is, type Control-U, the numeral 80, and then press the "-" key)

Contextual menus for projects (instant or otherwise)
now include SVN "Show Status" when one folder is selected.

The Ruby module now supports the standard callouts for the
function popup, including FIXME:, NOTE:REVIEW:TODO:???: and !!!:
Example:
#NOTE: this block will not work if the moon is full

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.2 and later. 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.

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

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.

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.

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

A new expert preference is available to control the generation of
<img> markup:

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.

If you right-click inside of an <img> 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 <img> 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:

"Functions" opens a floating window which lists the
functions in the active document (if it's in a language which
scans for functions and other items that appear on the
function menu in the navigation bar). The Functions window
contains a search box so that you can filter down the list by
typing a partial function name.

"Jump Points" presents the jump history (implemented in
previous versions of BBEdit) and provides a means to explore
it in an out-of-order fashion, if desired.

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". This choice lets you route the
document's contents through the text filter of your choice before
display. The default choice is "(language default)"; in this
case, the preview contains the language module's default HTML
conversion, as before.

An example of how you might use this manually would be with a
Markdown document, to override the default built-in Markdown
conversion with something tailored more closely for your own needs
(e.g. MultiMarkdown).
Using this as an example, after installing the MultiMarkdown
package, you could create a symlink (or alias) from
/usr/local/bin/multimarkdown to your Application
Support/BBEdit/Preview Filters/multimarkdown, at which point you
could choose "multimarkdown" from the Preview Filter menu in the
preview window.

Preview filters may reside in one of two places: a new folder,
Application Support/BBEdit/Preview Filters/, or in an installed
package's Contents/Preview Filters/ directory. (So, for example,
if someone supplied a BBEdit package for MultiMarkdown, it might
conceivably contain a multimarkdown executable that you could use.)

Preview filters may themselves be one of three things:

An AppleScript, with a FilterTextForBBEditPreview entry
point. This entry point will receive a unicode text object
which is the document's contents. If there is no
FilterTextForBBEditPreview entry point, the script's run
handler will be called with the text. The script should
return a unicode text result.

A Unix executable (the precompiled multimarkdown binary being
a good example);

A Unix script, beginning with an appropriate #! line.

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.

If you wish to assign a keyboard equivalent for opening the Preview
Filters menu, you can do so in the Menus & Shortcuts preferences
(look under "Preview Windows").

Live preview windows will remember your Preview Filter selection
per-document. In addition, the preview filter will default to one
named "DefaultFilter_<languagename>" in your Application
Support/BBEdit/Preview Filters/ folder. Unlike default preview
templates and CSS, the filename extension of the preview filter is
not significant; so the following examples will all work:

DefaultFilter_Markdown.pl (a Perl script)

DefaultFilter_Markdown.scpt (an AppleScript)

DefaultFilter_Markdown (a compiled executable)

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. Since tags is
a filename extension, you can have multiple tags files available for
the same directory hierarchy, e.g.

Mac OS X 10.7 SDK.tagsProject Sources.tags

BBEdit exports the UTI com.barebones.bbedit.ctags-data, which
conforms to public.utf8-plain-text, for files whose extensions
are tags and ctags. This UTI drives the Spotlight support.

If you have disabled Spotlight on your local disk (or for the
directory tree containing your source files) or if your Spotlight
index is incomplete, BBEdit will discover tags files the old
fashioned way, and the old limitations will apply (only files named
tags will be discovered, and so you can have only one tags file at
any level in the directory tree).

NB: Due to bugs in the OS, this feature actually works as described
only on 10.6.x, 10.7.x, and 10.8.{N > 1}.

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.

set display magnification of window 1 to 2.0 -- displays text at 2x

Note that the display magnification is independent of the font size setting.

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.
For example:

(Historical note: -l was already taken, which is why we didn't use it
here. If it helps, you can use the mnemonic "-m is for *mode*".)

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:

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:

There are two fundamental types of runnable file: "text
filters", which accept the selection range (or entire document,
if no selection) as input, and which return text that replaces
the selection range (or document); and "scripts", which do
neither.

The arrangement in the Application Support/BBEdit folder is
as follows:

Scripts: contains executable Unix files, AppleScript
files, text factories, and Automator workflows. These
are run simply by loading the item and calling it
directly, without providing any inputs. (Naturally,
AppleScript scripts and Automator actions can query the
application, and #! scripts have some information passed
to argc and argv as usual.)

Text Filters: contains the same type of items as Scripts,
but when chosen, the selected text (or front document
contents, if there is no selection) is passed as a string to
text factories, as a reference to a RunFromBBEdit entry
point in AppleScripts, as text input to Automator workflows,
and as a source to text factories. For Unix scripts, the
selection is written to a UTF-8 temporary file, whose path
is then passed in argv[1].

If an AppleScript script does not have a RunFromBBEdit
entry point, BBEdit will call its run handler, again passing
a reference to the current selection range. AppleScript
scripts and Automator workflows are expected to return a
string which will replace the selection range; #! scripts
and Unix executables should write to STDOUT, and the text
processed by a text factory will replace the selection
range.

Thus, both folders can contain identical items, but how an
item is invoked, and the effect that it has on the front
document, will depend solely on which folder it lives in at
the time of invocation.

The menu arrangement is as follows: the Scripts menu (and
palette) contains all eligible items from the Scripts
folder. The "Unix Scripts" and "Unix Filters" items have
been removed from the #! menu (and their palettes from the
Window menu). The Text Factories menu has been removed. The
"Apply Text Factory" commands on the Text menu are renamed
to "Apply Text Filter", and are now at the top of the Text
menu. The "Apply Text Filter" submenu shows all eligible
items contained in the Text Filters folder.

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

So, instead of having to root around for a language and then dig
through its settings to manipulate them, and then figure out
which ones should be different from factory settings, all you
need to do is add a customization for that language, by using
the "+" popup menu under the "Custom Language Preferences" list,
adjust the settings in the sheet, and you're done.

Similarly, if you find that a file name extension isn't being
mapped to your desired language, just add it in the "Custom
Extension Mappings" list. Custom mappings will always take
precedence over built-in mappings if there's a conflict.

The list of installed languages and versions no longer takes up
space in the preferences window. as before, they're listed in
the About box. In addition, the new "Installed Languages" button
in the Languages preferences will display a list of installed
languages and versions, as well as the default extension
mappings for that language.

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

When opening an existing document, BBEdit will look for a project
document which contains the document's file. If there is one, the
document will open into that project's window (which is brought
to the front).

If no eligible project is found, the document will open into the
front MDI window (which will come to the front if it is not already
there).

When making a new document using the command on the File
menu, BBEdit will never create the document in a project
document's window: it will use the front MDI window if
available, or make a new window if necessary. If you wish to
create a new document explicitly in a project, the "New
Document..." command in the project window will create the
file on disk for you and add it to the project.

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.2 and
later, 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:

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.

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.

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. Note that you should avoid considerations
of what the actual bit pattern is; BBEdit uses a particular internal
representation which is an implementation detail. If you want to
search for or replace with a line break, use \r or \n and allow
line break translation to do its thing; do not second-guess the
system and assume a particular bit pattern.

If for some reason you need the previous behavior, you may return to
it with an expert preference:

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. Consider this arrangement of files and
folders:

project/
src/
foo.m
inc/
foo.h

When in either file, "Open Counterpart" will now search the siblings
of the file's parent for eligible counterparts. By default, the folders
will only be searched if they match one of the following names (including
wildcards): inc*, source, src, *priv*. If you wish to add additional
qualifying names, you may do so by setting the CounterpartSiblingSearchNames
expert preference with a comma-delimited list of folder name patterns:

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:

if you type in an unqualified partial path, e.g. sys/errno.h,
BBEdit will check the path components and only display files
whose immediate ancestry matches what you entered. In this
example, it would list /usr/include/sys/errno.h but not
/usr/include/errno.h.

If you type in an absolute path, or a home-directory-relative
path, e.g. /usr/include/errno.h or ~/.bash_profile, BBEdit
will now show the file if it exists at that location.

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

This will prevent the application from adding the default name extension when
saving a new file (including .txt for files with no language).

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.

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. The threshold at which
the window is made to take up the entire screen width can be set
thus:

The threshold is a percentage, so (in the example above), if the
window is 65% or more of the width of the screen that it's on, it
will take up the full width of the screen when entering full screen
mode.

Note that when setting the threshold, you must set it as a decimal
number, using -float <some number between 0 and 1>.

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.
The minimum time to wait may be controlled via expert preference: