BBEdit 9.0 Release Notes
This page documents all feature enhancements and visible changes included in the BBEdit 9.0 release.
For information on changes made in previous versions of BBEdit, please see the release notes archive.
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 9.0 requires Mac OS X 10.4 or later.
This version is a Universal application: it runs natively on both Intel-based and PowerPC-based Macs.
* The text views in browsing windows (disk browsers, search
results, P4 opened, and similar) are now editable; rather than
having to open a file into a new window from such a browser, you
can just edit it right in the window.
* There is a new command on the Window menu: Show
Scratchpad
The Scratchpad window’s purpose is to be a space where you can
manipulate text by performing transforms, manual edits, or
batches of copy/paste.
It is ideal for quickly beating text from one source into
submission before pasting it elsewhere.
The Scratchpad window automatically saves its content and state,
eliminating those pesky “Save Untitled 237?” warnings when
closing a window, or quitting BBEdit.
The Scratchpad is also available from BBEdit’s dock menu.
Finally, there is a new item on BBEdit’s Services menu: Append
Selection to Scratchpad. This command will take the selected
text, and place it at the end of the scratchpad, attempting to
preserve any selection that was previously present. The
Scratchpad window does NOT need to be open to use this command.
Any text appended in this fashion will be present the next time
the window is opened.
* Added a missing Migration command (change column) to the
clipping set for Ruby/Rails.
* Added “Save as Styled Text” to the File menu, and “Copy
as Styled Text” to the Edit menu. These function similarly to
their HTML analogs, but the Save variant saves an RTF file, and
the Copy variant copies styled text (which is more easily shared
with other applications).
* Added “Multi-File Search” command to the Find menu. This
unconditionally opens the Find dialog with the “Multi-File
Search” option turned on.
* There is a new command on the File menu: “Reload from
Disk”. This command will examine the file on disk, and if it’s
different, reload the front document’s contents from the file on
disk. This is useful in situations where the file may have
changed without BBEdit noticing, which will be the case if
“Automatically refresh documents” is turned off in the
Application preferences, or in the case of a document on a
shared disk that gets modified by another workstation.
* When running on Mac OS X 10.5 or later, the “Colors”
command is available on the Windows → Palettes menu. This
command shows and hides the system color panel.
* There’s a new option in the “Insert Folder Listing”
dialog: “Show invisible items”. If turned on, the generated
listing will include invisible files/folders and the contents of
packages.
* There’s a new group of sources in the Find dialog’s
source list: “Xcode Projects”. This group shows the projects in
Xcode’s Recent Projects menu; selecting one (or more) will
instruct the multi-file search to search each text file in the
project.
* Find Differences now uses the system diff tool for generating
the difference ranges displayed in the application. This should
result in more usable results.
* RCS keywords are canonicalized down to their unexpanded state for
comparison.
e.g. $Author: Jim Correia$ → $Author$
This means that “ignore RCS keywords” isn’t literal, but it does
what you’d expect.
* changes in RCS keyword expansion state are not diff significant
* adding new RCS keywords to a file/line is diff significant
* any other changes on a line with RCS keywords is diff significant
* Stuff copied to the clipboard carries a source language hint.
Pasting into a document whose source language is unknown will
cause the document to inherit the clipboard’s hint.
* Dragging text into an empty document from another editing view
will now pick up the source language from the originating view.
* The C/C++/Obj-C/Obj-C++ scanner now
generates fold ranges for multi-line parenthesis blocks
(including argument lists), subject to the
MinimumLinesForBlockFold preference.
* “New (with selection)” and “New (with clipboard)” now create
the new document using the language of the selection or
clipboard (respectively).
* The Navigation bar has a document/state dirty indicator, so
those inclined to disable the toolbar and ignore the close box
indication have some way to see if a document is dirty or not.
* The Ruby language support has been rewritten, with improvements
as follows:
** greatly improved function, class, and module detection.
** more extensive support for text folding.
** Better handles interpretive strings. The following:
puts "d#{"rie"}w".reverse
… should show only "d#{"rie"}w" colored as a string when
in a Ruby file (new module).
** Better handles the optional then at the end of if or
elsif statement.
* Significant update to the JavaScript module. Better support for
Prototype-style object definitions, more consistent throughout.
* BBEdit’s support for ctags files has been improved:
* relative paths in tags files are now interpreted (relative
to the tags file’s location); there is no more need to go
through all kinds of gyrations to generate absolute paths in
tags files, just so that BBEdit can locate the symbol
definition.
* BBEdit now supports old-format tags files which contain a vi
search string but no line number information.
* When loading symbols for ctags syntax coloring, BBEdit will
look for files named “tags” in each folder in the chain from
the current document’s folder up to the root of the file
system. This improves symbol lookups for projects that
aren’t structured exactly like ours. :-)
* If you have a .Mac/MobileMe account, you can use it to keep your
Application Support folder synchronized across machines. The
preference to control sync frequency is located in the
“Application” preference pane.
There are no controls to force syncing, or provide any sort of
user control over what does or does not sync. Just be patient,
and don’t try to rush the sync engine. :-)
* Added ObjectiveC 2.0 keywords to the Obj-C and Obj-C++ language
modules.
* Documents as a scriptable element of text window can now be
accessed by name and unique ID. (Previously, only indexed access was
supported.)
* “Open Counterpart” can now be used for files which will be
implictly created at save; for example, bbedit foo.h followed
by an Open Counterpart command will open foo.cp if it can be
found using the standard rules.
* BBEdit can now detect versions of Application Support/BBEdit
that were created by previous versions. If the folders have not
been changed (NOS, for “New Old Stock”), they will be silently
upgraded to the current version.
When a NOS support folder is detected, it is backed up to
~/Application Support/BBEdit Backups, then replaced with the
latest contents.
If a NOS Glossary folder is detected, it is backed up, removed,
then replaced with the latest Clippings folder.
* There’s a new preference in Text Status Display:
“Document statistics”. When turned on, this will add an item to
the window status bar, showing the number of characters, words,
and lines in the document. There’s also a document-icon
indicator; when it’s uncolored the stats represent the entire
document; when it’s colored the stats represent the selection
range. (Click on the item to toggle between the modes.)
* BBEdit now includes a set of clippings for quickly inserting
and completing PHP functions. Thanks to Ted
Stresen-Reuter for his generous
contribution.
* You can now double-click on a string delimiter to select the
contents of a quoted string, in files with syntax coloring
turned on. The selection range honors the “Include delimiter
characters when balancing” setting in the Editing: General
prefs. You can also double-click on an element’s angle bracket
in HTML/XML documents to select the contents of the element.
* BBEdit can now transparently read and write text files
compressed with bz2 (e.g. rolled system logs in 10.5) as easily
as it reads and writes regular text documents (and, as a
reminder, gzipped text files). For bonus points, try opening
and changing a binary plist compressed with bz2. :-)
* When “Make backup before saving” is turned on in the Text
Files prefs, and you close a document with unsaved changes and
elect to discard those changes (“Don’t Save”), BBEdit will save
a snapshot of the document’s contents. Just in case. The
snapshot will be written into the same directory as the
document, and its name will follow the Emacs convention
“#foo.txt#”. If “Preserve file name extension” is turned on, the
snapshot’s name will be “#foo#.txt”.
* You can now use an Emacs variable to control whether or not
a given file is backed up. There are two ways to do this:
* Absolute: If the variable line/block contains a
“make-backup-files” variable, that variable’s value will
override the global “Make Backup before saving” preference.
-*- make-backup-files: 1 -*- —> always back up this file
-*- make-backup-files: 0 -*- —> never back up this file
If the first letter of the variable’s value is “y”, “t”, or “1”,
the value is “yes”, otherwise it’s “no”. These are all synonymous:
make-backup-files: yes
make-backup-files: y
make-backup-files: true
make-backup-files: t
make-backup-files: 1
* Inhibit: If the variable’s line/block contains a
“backup-inhibited” variable, and its value is true (see
above), then the file will never be backed up, even if “Make
backup before saving” is turned on in the global
preferences.
It really only makes sense to specify “backup-inhibited: 1”,
since otherwise the file would be backed up if the global
pref is on, and not otherwise.
* If a symbol lookup in a Python file fails, and it appears to be
a method of a class, we’ll try to look up the class.method as
well.
* Projects.
A project is the modern expression of the old “File Group”
feature, but much more useful, chiefly because project windows
now include an editing view: click on a file in the list on the
left, and it appears for editing in the pane on the right.
To create a new project, choose File → New → Project… You
will need to decide where to place your project on disk;
thereafter, the project document will autosave as necessary.
In the project window, you can hide the top toolbar as desired.
If the toolbar is hidden, the action buttons in the lower left
corner of the file list remain useful for manipulating the
project’s members.
* BBEdit now handles the (badly chosen, since it omits the “x-”
prefix) “txmt:” URL scheme. This allows properly formed
“txmt:” URLs generated by the Ruby On Rails “FootNotes”
plug-in (and some others) to open files in BBEdit and
(optionally) select a requested line and column. (NB: If the
system doesn’t correctly recognize BBEdit as an allowable
handler for such URLs, RCDefaultApp is a good tool for adjusting
the bindings.)
* There is now a “Close All” dynamic menu item on the action menu
in the documents drawer. This is particularly useful for closing all
the documents associated with a project window without closing the
project itself.
Also, option-clicking on a close widget in the documents drawer will
close all the text documents in that window. (MDI text windows will
also close as a side effect, but project windows will remain open.)
* The Application menu sports a new item: Provide BBEdit
Feedback. This command will bring up the tech support contact
form on our website.
* Selected items in project lists and disk browser lists are now
exported to contextual menu plug-ins.
* Added “Collapse Enclosing Fold” to the View menu; this
command will collapse the auto-generated fold that most closely
surrounds the current insertion point (or start of the selection
range).
* Changes to split views in results and disk browsers:
There is a new command on the view menu “Show/Hide Editor” which can
be used to toggle the embedded editor visibility in disk browsers
and results browsers.
The toggle editor button in the action bar at the bottom of the file
list can also be used for this purpose.
When hiding the embedded editor, the associated document will be
removed from the window (and closed, after prompting you, if it was
not open elsewhere.) Because of this potential need for user
interaction, you cannot collape the editing view entirely by
dragging the view splitter; you must use the button, menu command
(or in the case of results browsers, a double click on the view
splitter.)
* Added a “Delete” command to the contextual menu and
action menu in disk browsers.
* Search Sources can be enabled/disabled via the Text
Search preference pane.
* Option-clicking the close widget in the windows palette will
close all windows. (This matches the same conceptual change made
to the documents drawer list, as well as the standard behavior
for option-clicking the close widget in the titlebar of
windows.)
* Added rudimentary support for define_method to the Ruby module.
Methods defined with it should be listed in the function popup.
Yay, metaprogramming.
* “Open Counterpart” will ask Xcode for the file’s counterparts
when possible.
* The items in the “Saved Search Sets” source group (for
multi-file searches) now have an “X” widget; clicking the X
deletes the search set (after confirmation).
* Items in the “Recent Folders” group in the multi-file
search sources list now have an “X” widget; clicking the X will
delete the recent item from the list (without disturbing the
folder that it refers to).
* Disk browsers get “New Text Document” and “New Folder”
commands on the action and contextual menus. They work pretty
much as one would expect.
* Script tags in HTML files which DO NOT have a src attribute are
now listed in the function popup (those with src are already
listed in the “includes” popup). This is similar to the STYLE
entry for stylesheets: functions and objects added to the
function popup as a result of the script tag are indented
beneath the script tag’s entry, to suggest containment.
* New Find windows!
There are new Find and Multi-file Search windows; where they
overlap, they provide a consistent and modeless interface to
BBEdit’s legendary text search and replace capabilities.
If you’re familiar with the old Find dialog, you’ll generally
feel at home, but there are some important differences and additions
of which you should be aware:
* The Find dialog has been split in two, with one window for
searching only the front document, and one window for
searching more than one document (including folders,
arbitrary open documents, BBEdit and Xcode projects, and so
forth).
* The (fairly confusing) collection of options to configure
which text actually gets searched (for single-file searches)
has been condensed down to a single pair of “Search in:”
options: “Selected text only” and “Wrap around”.
“Selected text only” affects only the “Find All” and
“Replace All” operations: if there is a selection range in
the front document, this option will search only the
selection range if turned on, or the entire document
(starting from the top) if turned off.
“Wrap around” affects only the “Next”, “Previous”,
“Replace”, and “Replace & Find” operations: if the search
reaches the end of the document (or the beginning, if doing
a “Previous”), then “Wrap around” will continue the search
from the appropriate end of the document.
* Keyboard navigation is radically different (as it must be,
given the new windows’ modeless nature).
* Return or Enter in the “Find” field will do a “Next” in
the single-Find window, or a “Find All” in the
Multi-File Search window.
* Striking the Escape key (not too hard!) will close the
window.
* The appropriate commands on the Search menu (Find Next,
Find Previous, Replace, Replace All, Replace & Find
Again, and a new “Find All”) will trigger the
corresponding action in the front Find window.
* It’s not possible to use the command-key equivalents
from the old modal Find dialog for toggling items in the
Find window, because those equivalents collide with
factory keyboard equivalents (or system standards) for
different menu commands. So there’s a new group of
keyboard equivalents for controlling Find and Multi-File
Search window items. These keys can be set in
Preferences → Menus → Find Windows.
The factory defaults for these keys are as follows:
table(no_border).
|Case sensitive | Control-shift-N |
|Entire word | Control-Shift-E |
|Grep | Control-Shift-G |
|Selected text only | Control-Shift-S |
|Wrap around | Control-Shift-W |
|Open search history | Control-Shift-H (new) |
|Open saved patterns | Control-Shift-P (new) |
If you are in the habit of assigning keyboard
equivalents to saved clippings, it’s possible that these
defaults may overlap with your clippings. If so, you can
of course change the commands from the factory defaults.
* In the Multi-file Search window, you can use the keyboard
when the search sources list has focus, as follows:
* Return/Enter starts the search;
* Escape dismisses the window;
* Type-to-select works in the list (when it has focus);
* Space toggles the selected items;
* Delete removes the selected items from the list (after
confirmation, and only if they’re eligible as indicated by
the “X” widget).
If you find yourself more comfortable with the old interface,
you can continue to use it by turning on “Use modal Find dialog”
in Preferences → Text Search.
* Search and replace history is now persistent across runs
of the application.
* Image windows update their content when the backing file
changes, making things like developing POVRay scripts a little
bit easier.
* Changes to the project list user interaction model.
* Removed the anachronistic behavior where holding down option
while opening project items opened them using their LS/Finder
bindings.
* Double clicking on a folder no longer opens a disk browser.
Instead, it toggles the expansion state of that node.
When the editor is hidden, the projects list works as it did in
previous releases. That is
* it accepts keyboard focus
* return and double-click open the selected items
When the project editor is visible, the project list can either work
the same was as it does when the editor is hidden, or it can work in
“single-click” mode.
There are two additional secret preferences which control this behavior.
Projects:ProjectsListCanAcquireKeyboardFocus → BOOL → NO
Projects:OpenItemsOnSingleClick → BOOL → YES
Having the list not accept keyboard focus, among other things,
avoids “dancing focus” when opening items via single click.
When the single click setting is set, most single clicks will open
the associated document in the attached editor, and put keyboard
focus in the editing view.
Certain single clicks don’t result in an open action. (I’m
specifically not listing them all here, but the behavior has been
carefully designed so that it will feel right in usage. Examples
include clicks which would require we spawn a window, clicks which
extend the selection, etc.)
* Added a “Reveal in Finder” command to disk browser and project
windows.
* For compatibility with scripts written for pre-9.0
versions of BBEdit, the scripting interface now performs the
following name mapping when changing the “text encoding”
property of a document:
* “Unicode™ (UTF-8)” = “Unicode (UTF-8)”
* “Unicode™ (UTF-8, no BOM)” = “Unicode (UTF-8, no BOM)”
* “Unicode™ (UTF-16)” = “Unicode (UTF-16)”
* “Unicode™ (UTF-16, no BOM)” = “Unicode (UTF-16, no BOM)”
* “Unicode™ (UTF-16 Little-Endian)” = “Unicode (UTF-16 Little-Endian)”
* “Unicode™ (UTF-16 Little-Endian, no BOM)” = “Unicode (UTF-16 Little-Endian, no BOM)”
Note that this transformation does not operate in the reverse
direction; if you get the text encoding property and explicitly
compare the name, you will need to update your script.
* Integrated Jim’s .ini language module.
* C-language files (and all related languages, like Obj-C,
C++ and header files) will now show FIXME and TODO items in the
function popup. Only “//” comments are searched, and the comment
must start with one of the following: “FIXME:” “FIXME!” “FIX-ME:”
“FIX-ME!” “TODO:” “TODO!” “TO-DO:” or “TO-DO!”. The text added to
the function popup starts with the first character of the FIXME or
TODO and ends with the last non-white character on the same line.
Examples:
* // FIXME This little bug could erase the intertubes.
* // TODO! Add support for Apple's "Crash Only When Convenient"
* The command formerly known as “Open in Separate Window”
is now called “Move to New Window”. It will move the current
document (or selected documents when invoked from the documents
drawer) into a new editing window (removing them from their
current editing window.)
There is an additional command “Open in Additional Window” which
will open the current document (or selected documents when
invoked from the documents drawer) in an additional window that
can be edited side by side with the original document.
Both commands are only available for text documents.
* Ponies.
* Attempting to bring up a contextual menu in the “dead” space at
the bottom of a disk browser list now works, presenting you with
“globally” available commands New Folder and New Text Document.
* The application automatically saves its state (open documents
and windows) once per minute, so if something bad happens to
your machine, there’s a pretty good chance that the next time
you start up, things will be as they were when the event
occurred.
* Python function decorator names are now detected and colored.
* You can drag stuff to the sources list for Text Factory
configuration
* The Text Factory sources list remembers selected items and
twist state between invocations.
* Text completion!
BBEdit can now figure out completions for symbols as you’re
editing. The preference for controlling when this happens is in
the “Editing: General” preferences:
* After a delay in typing
If you pause briefly while typing, BBEdit will figure out
the completions for what you just typed, and display them.
The delay can be adjusted from the command line if desired:
defaults write com.barebones.bbedit Editor:AutoCompleteDelay -float 0.5
# sets the auto-complete delay to half a second
* Only manually
Completion will only take place when using a manual
completion command (see below).
Automatic completion can be turned on and off on a per-language
basis (in the Languages preferences) if desired. It is off by
default for the “Log File” and “Data File” languages.
Completions can be derived from a variety of sources, including
(in no particular order and without limitation):
* clippings (both language-specific and universal);
* ctags symbols computed by running the current document
through ‘ctags’;
* ctags symbols found in ‘tags’ files in the current
document’s hierarchy;
* predefined names for the source code language at the point
of completion;
* language-specific completions;
* completions provided by the system spelling system.
Completion may be triggered at any time (whether or not
automatic completion is enabled) by using the “Complete” menu
command on the Edit menu. By default, F5 is assigned to this
command; you can change this equivalent (as usual) by using the
Menus preferences.
Note: Text completion completes clippings in the same way
that the “Insert Clipping” command used to (and still does).
So, the behavior of F5 should be indistinguishable if you
were used to using it to complete clippings.
You can also use the Escape (“Esc”) key to invoke text
completion. This is off by default, and may be turned on using
the command line, as follows:
# allow the Escape key to invoke the "Complete" command
defaults write com.barebones.bbedit Editor:UseEscapeKeyAsCompletionTrigger -bool YES
Note: Because the Escape key has a special meaning when “Use
Emacs key bindings” is turned on (Editing: Keyboard preferences),
if you choose to use the Escape key as a completion trigger, you
will have to press it twice to invoke completion in this case.
* The tab key can now be overloaded to perform certain
actions in addition to the traditional “insert a tab” (or the
equivalent amount of spaces).
When these actions are enabled, holding down the option key
while pressing the tab key will bypass the special actions and
insert a tab character.
In all cases, if the special action is not appropriate in the
current context, pressing the tab key will result in the default
behavior (insert tab character).
* The first of these new actions is “go to next placholder.”
(Hold down the Shift key to reverse the direction.) This is
equivalent to the command on the Search menu. To control
this behavior, use the “Use Tab key to navigate Placeholders”
preference (Editing: Keyboard).
* For refugees from Windows who are used to having Tab indent
a line (or selected range of lines), there’s a new
preference in Editing: Keyboard: “Allow Tab key to indent
text blocks.” When turned on, this setting allows Tab to
function as a synonym for Shift Right on the Edit menu (and
Shift-Tab as a synonym for Shift Left).
* There’s a new color setting in the Text Colors
preferences: “Predefined names”. This symbol class is used for
words which are not language keywords, but which are predefined
by the language’s reference implementation and/or are part of
the language’s standard library/framework support and/or have
other “special” meaning to developers writing code in that
language.
The color may be changed on a per-language basis in the
Languages preferences: double-click on the language’s name in
the list and examine the Colors tab in the resulting sheet.
* Language module developers may use the following
constructs to support predefined names:
* If a BBLMPredefinedNameList key appears in the module’s
property list, it is an array of strings, each of which is a
predefined name. (This key is mutually exclusive with
BBLMPredefinedNameFileName; you may use one or the other but
not both.)
* If a BBLMPredefinedNameFileName key appears in the
module’s property list, it is a string which names a text
file in the module’s Resources bundle directory; the file
contains one predefined name per line. (This key is mutually
exclusive with BBLMPredefinedNameList; you may use one or
the other but not both.)
* If BBLMSupportsPredefinedNameLookups appears in the
module’s property list and is TRUE, BBEdit may call the
module with the kBBLMMatchPredefinedNameMessage. The
parameters for this message are the same as for
kBBLMMatchKeywordWithCFStringMessage.
* In the Languages prefs, the options sheet for Python now has a
tab for Python-specific options, in which you can choose the
color to use for decorators.
* Reworked the existing entries in the CSS clipping set to use
the placeholder mechanism.
Added a couple of new useful entries to the CSS clipping set for
@media, @import and rule sets.
* Added .php5 to the factory default list of language mappings.
* Clipping set auto-switching is now more context sensitive. The
active clipping set will be picked based on the language of the
insertion point. This is a significant improvement particularly
when working with languages embedded in HTML. (CSS, JavaScript,
Ruby, PHP, etc.)
* The list of clippings generated for text completion or Insert
Clipping is always language sensitive. Clippings will be picked
from
- all appropriate sets for the current language
- additional sets appropriate for that language (e.g. HTML for Ruby in HTML or JSP)
- possibly the active set (see below)
- the universal set
This makes it much more likely that you’ll end up with a useful
clipping in the completion set.
The active set is always included for “Insert Clipping”. It is
only included in completion set if it is appropriate for the
current language, or was a manual pick for the target document.
(This avoids having PHP clippings appear in a Python file, for
example, because you don’t have a Python clipping set and the PHP
set was the last one used.)
* You can now review and apply sub-line differences
individually in the results of Find Differences.
Yeah, you heard that right.
* New command on the Search menu: “Replace to End”. This
command provides the pre-9.0 behavior for anyone who needs it:
everything is processed from the current insertion point or
start of the selection range to the end of the document.
* When setting up the default browser list for HTML previews, we
now recognize application stubs created by VMWare 2.0’s “Unity”
feature, so that you can preview your documents in FireFox or
Windows IE while running in VMWare 2.0.
If you have an existing browser list, you can as always add
these applications to the list in the “HTML Preview”
preferences, either manually or by using the “Find All” button.
* Added a new clippings placeholder: #selectionorplaceholder placeholder_name#.
If the document has a selection when the clipping is inserted,
the placeholder will be replaced with the selected text. If
there is no selection, a placeholder named “placeholder_name”
will be inserted into the document.
This placeholder is particularly useful when building “dual-mode”
clippings – that is clippings that are designed to be inserted
via traditional means (the clippings palette, keybindings) or via
the completion mechanism.
* Fixed misleading wording in the alert for running #! scripts
with non-Unix line breaks.
* New and improved software update checker, the same as the
one used in Yojimbo 1.5.
* When a browser has nothing selected, or has a deleted
file selected (like in a P4 window), the combined text view is
replaced with a status view, telling you so.
* The mechanics that BBEdit uses to determine whether a
file was changed on disk have been completely rewritten.
Consequently, the group of “Verify open files after:”
preferences (see Application prefs) has been replaced by a
single setting: “Automatically refresh documents as they change
on disk.” If you wish, you may turn this off and reload a
document manually at any time by choosing the “Reload from Disk”
command on the File menu.
* Document drawer side bias is no loner controllable from
the prefs UI.
* Expunged references to the “Open Here in Terminal” bundle
override, since that feature is no longer supported.
* Tightened up the layout of the disk browser window and
dropped the focus ring around the file list.
* The “Save As” and “Save a Copy” dialogs now run as
sheets, as does the dialog for the “Save Selection” contextual
menu item.
* “Save As” for Find Differences results windows has been
changed to “Export” for consistency with results browser
windows.
* The “Save As Selection” command has been consigned to the
dustbin of history.
* Support for the CodeWarrior IDE has been removed. If you
are still using BBEdit as an external editor for CodeWarrior,
you can run 8.7.2 alongside 9.0.
* In a results browser, the Save command (or apple event) now
works on the viewed document. The Export event or command can be
used to write out a text file containing the results entries.
(This was previously accomplished via the Save As command.)
* When writing data to the pasteboard (clipboard or drag), BBEdit
now also includes a UTF-8/NSStringPboardType copy of the data
with LF line endings. This provides smoother interoperability
with Cocoa applications which are not line ending agnostic. (Or
more specifically, do not convert the pasteboard data to their
native internal representation, often resulting in a mixed line
ending document.)
N.B. BBEdit has always been line ending agnostic when reading
data from the pasteboard.
* The window menu and windows palette are named differently, so
multiple results browsers pointing at the same document are
easier to distinguish from each other.
* If the search terms are available at window construction time,
Search Results windows include them in the base window name in
preference to the instance number, so instead of getting “Search
Results 42 (search term)”, it’s now just “Search Results (search
term)”.
* The options and behavior for backing up files at save
have changed, as follows:
* “Make backup before saving” is now a global preference
only, and is no longer controlled per file. The “Make Backup
when Saving” and “Make Backup Now” options have been removed
from the File menu.
* The settings controlling backup location (in the Text Files
prefs) have been removed. Backups are always made to a specific
location, as follows:
** If “Keep historical backups” is turned on, backups are
kept in ~/Documents/BBEdit Backups/. Within that folder
is one folder for each day’s backups. The format of the
dated folder name is static and non-localized:
YYYY-MM-DD. Inside of each day’s backup folder will be
all of the backups made on that day, each named using
the 8.7.x timestamp format.
If you want the backups to live somewhere else, lay down
a folder alias named “BBEdit Backups” in ~/Documents/
and BBEdit will follow the alias.
** If “Keep historical backups” is turned off, BBEdit
makes only a single backup, located in the same
directory as the original, so “backup creep” is a thing
of the past. The backup is named according to current OS
conventions (which themselves follow the old Emacs
convention): the backup file is named as the original
file, with a tilde appended: “foo.html~” is the backup
of “foo.html”.
If you want the backup to have the same file name
extension as the original, turn on the “Preserve file
name extension” in the Text Files prefs. This will cause
BBEdit to place the tilde after the “base” name of the
file: “foo~.html”.
* The machinery behind the Preferences window has been
overhauled; this is not user-visible; however, the layout
conventions for the prefs panels have changed, which does affect
the overall look of the Preferences window. This will affect
screen shots.
* Wildcard mappings for filename extensions to source code
languages now work the way they were originally intended to; a
suffix mapping of “php*” will now match any file whose filename
extension begins with “php” and ends with anything, rather than
attempting to apply the wildcard against the entire file name.
* The dialog used for adding and editing filename
extension-to-language mappings (in the Languages prefs) has been
modernized.
* Modernized the options dialog for multi-file Replace All.
* The “Add…” button for adding Grep patterns in the Text
Search preferences has been consigned to the dustbin of history.
The “Change” button has been renamed to “Rename” to reflect that
it now simply renames the selected pattern.
* The Application menu and Help menu have been reorganized
to follow the conventions established by Apple’s current iLife
applications.
* “Check for Updates” is now on the application menu.
* BBEdit no longer loads CFM (Code Fragment Manager, the
Mac OS 9 executable format) language modules. If you have such a
language module installed, a message will be logged to the
system console.
* After careful consideration, the "Remember Find dialog’s
“Start at Top” setting" checkbox has been shot, and tossed in a
ditch. (The setting is still stored in preferences, and honored
if present.)
* Significant look-and-feel work on the disk browser: the
top bar is gone; the action gear in the lower-left corner has
some useful commands on it (a strict superset of what’s on the
contextual menu), and file filtering control is on the filter
popup next to it.
* Modernized the Save Workspace and Delete Workspace
dialogs. (And the Delete Workspace dialog lets you delete more
than one workspace.)
* The file filtering options in the Open… dialog have
been simplified to present the following items:
* All BBEdit Documents
Anything that BBEdit can usefully open into a document
window will be enabled for selection. (This is equivalent to
the “All Readable Files” setting in previous versions.)
* Text Files Only
Only files that are quickly recognizable as text files
(without inspecting their contents) will be enabled for
selection. (This is equivalent to the “Text Files” setting
in previous versions.)
* Everything
Enables all files for selection, regardless of type. (This
is equivalent to the “All Files” setting in previous
versions.)
* The file filtering popup in disk browser windows has been
reworked to be close to the browser’s primary purpose (browsing
text files on disk). It now consists of just two items (in
addition to user-defined file filters):
Text Files Only
Invisible Items
“Text Files Only” will limit the display to items which pass the
text-file test (without examining their content). “Invisible
Items”, if turned off, will limit the display to items which
would be visible in the Finder (and also filters out CVS,
Subversion, and package directories).
* The factory default keystroke for “Open Counterpart” has
been changed to Command+Option Up-Arrow.
* The factory default keyboard shortcuts for “Go to
Next/Previous Error” have been changed to Command+Control
Up/Down-Arrow.
* The gesture for switching focus from a text view (which
normally accepts Tab as an input character) has been changed
from Option-Tab to Control-Tab.
* Moved File Filters to the main find dialog, as it was in
BBEdit 7.×.
* Collapse All Folds now behaves more usefully in documents where
there is a single top-level fold (such as HTML or XML documents,
as well as in a few other situations).
* Updated Application Support Folder/Readme.txt with
information on backups, and syncing.
* Adjusted the layout of the Find dialog, eliminating the
Saved Sources popup menu (since they are expressed in the
sources list directly), and adding a Save Set button instead.
* Saving Search Sets is done in a sheet, instead of
application modal dialog.
* The separate history popups for search and replace
strings have been condensed into one.
* The term lists for file filters have been buffed a bit.
* The popup menu used for file filtering in the modal Find
dialog, Find Differences, the Multi-file Find window, and Text
Factory options has been rearranged. In those locations, the
separate “Use File Filter:” check box has been removed;
filtering is completely controlled from the menu. (Choose “None”
to turn off filtering.)
* The search history item in the modal Find dialog has
sharp corners, just like the one in the modeless dialogs.
* The command to save Grep patterns from the Find dialog
(modal or modeless) is now called “Save” and it’s at the end of
the pattern popup in the respective dialog.
* The window stacking preference has been retired.
* New windows always stack down and right 20px. If you have
saved a default window size, and the window is screen height,
new windows will just stack to the right, and preserve their
saved height.
* “Find Selected Text (backwards)” is now “Find Previous
Selected Text”. (There’s really no good wording for it that
doesn’t make the menu wide. Really, it’s “Find the previous
occurrence of the selected text”.)
* The MDI preference no longer has an internal vs. external
distinction.
* The list of actions in a Text Factory is now sorted
alphabetically.
* The “+” and “-” buttons in Text Factory windows have been
adjusted to account for metrics changes in the system.
* “Replace All” in the old modal Find dialog now replaces
every occurrence in the document (or in the selected range, if
there is one and “Search Selection Only” is checked), rather
than from the insertion point to the end of the document. This
makes its behavior consistent with the modeless Find window and
the “Replace All” menu command.
* Updated the “Clear Markers” dialog.
* “Preview in BBEdit” now factory defaults to Cmd-Control-P
(was previously assigned to “Preview in <default web browser>”.