BBEdit 9.2 Release Notes
This page documents all feature enhancements and bug fixes included in the BBEdit 9.2 update.
For details on all the new features and enhancements offered by BBEdit 9.0, please see its release notes.
For information on changes made in previous versions, 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.2 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 existing .plist is still the preferred preference storage.
If a preference key does not exist in CFPreferences, we then look
in ~/.bbedit for a matching preference key.
Our two-stage namespace has been preserved, so if the old preference was was:
<key>StatusBar:SGIButton</key>
<true/>
then the .bbedit file would have this data:
[StatusBar]
SGIButton = 1
If neither preference system possesses a setting, the factory default is used.
For those who feel the need to, you can create a section in your
.bbedit file:
[PreferINIPrefs]
Which will cause BBEdit to ignore things set in the GUI, and prefer those settings.
If you do this, note that the UI does not, and will
never, track changes to the .bbedit file.
Passive FTP can be disabled per host, per domain, or globally:
FTP:AllowPassiveFTP:foobar.example.com - only for "foobar.example.com"
FTP:AllowPassiveFTP:example.com - only for servers in "example.com"
FTP:AllowPassiveFTP - global preference
Our recommendation is that you disable per host in preference to globally or per-domain, but at the end of the day, do whatever works. :-)
SSH compression can be disabled per host, per domain, or globally:
FTP:EnableSSHCompression:foobar.example.com - only for "foobar.example.com"
FTP:EnableSSHCompression:example.com - only for servers in "example.com"
FTP:EnableSSHCompression - global preference
Our recommendation is that you disable per host in preference to globally or per-domain.
(Note that ssh compression is on by default.)
kBBEditSuite/kAESleepApplication.
Control over saving of existing documents is in place with an expert pref:
defaults write com.barebones.bbedit Misc:SaveTitledDocumentsBeforeSleeping -bool YES
If it’s set to YES, then any document that exists on disk
will be saved before sleeping. If set to NO (the default),
the document gets an autosave which will be restored when
the app comes up again. (Untitled unsaved documents are
always autosaved, irrespective of the preference setting.)
When BBEdit gets quit because of a system shutdown, restart, or user logout, it now does a “Sleep BBEdit” in order to restore as much of the application state as possible when starting back up. (This means that you may not be prompted to save new or unsaved documents, since they will be autosaved when the application sleeps.)
The following expert prefs may be used:
Startup:AllowVolumeMount
# If set to NO, BBEdit will not attempt to mount a volume
# containing a document it wants to reopen. defaults to YES.
Startup:ReopenRemoteDocuments
# If set to NO, BBEdit will not attempt to open any
# documents that were opened from FTP/SFTP servers. Defaults
# to YES.
Startup:PromptToReopenRemoteDocuments
# If set to NO, BBEdit will open remote documents without
# asking, if Startup:ReopenRemoteDocuments is set to YES. If
# set to YES, BBEdit will prompt to give you the opportunity
# to skip remote documents. Has no effect if
# Startup:ReopenRemoteDocuments is set to NO. Defaults to YES.
bbdiff command-line tool now supports an additional
command form:
bbdiff [options] file /path/to/some/folder
If /path/to/some/folder/file exists, then file will be
compared against /path/to/some/folder/file. Otherwise, an
error is reported.
bbedit --maketags [optional list of dirs]
This can be used as an express way to invoke exuberant ctags, as follows:
# generate tags for the directory rooted at CWD
# and write the "tags" file in CWD
bbedit --maketags
# generate tags for each of the supplied directory trees, and
# create a "tags" file at the top of each directory tree
bbedit --maketags /path/to/some/directory /path/to/some/other/directory
<key>BBLMReferenceSearchURLTemplate</key> <string>http://www.example.com/foobar.cgi?SYMBOLNAME</string>
+75” will move to line
175; “-75” will go to line 25. An unsigned number will move to
the specified line number, as before.If a project or disk browser is the front window, then this command’s name reflects the name of the project, or the name of the directory that you’re currently browsing in the disk browser.
Choosing this command will open the Multi-File Search window with the project (or disk browser’s current directory) selected as the source for the multi-file search. Make any desired adjustments to the search settings and then start the search (or just hit Return/Enter and you’re off and running).
If the Multi-File Search window is in front, the command will target the frontmost (Z-order) project or disk browser, whichever occurs first.
The same command is available on the action (‘gear’) menu in projects and disk browsers as well.
If the language module has
<key>BBLMCanResolveIncludeFiles</key> <true />
in its plist, then BBEdit will send
kBBLMResolveIncludeFileMessage for every include chosen off
the includes menu. The param block will include a
CFStringRef with the name, a CFURLRef to the document on
disk (which may be NULL) and a place for you to put a
CFURLRef when returning.
If the module returns NULL and noErr, then BBEdit will
assume that the module declined to do anything with the
string and will look for the file as usual.
If the module returns a non-NULL URL, BBEdit will resolve
it, so the module can make a file://, http://, FTP or SFTP
URL and the right thing will happen. If the module returns
something other than noErr, BBEdit will not attempt anything
else with the include and will report the error.
window.alert
window.confirm
window.prompt
window.onbeforeunload
JavaScript user interaction is disabled during auto-reloads that BBEdit performs as you type or save your documents.
window.onbeforeunload is not triggered for an auto-reloads, or on window
close.
Additionally, the “Choose” button for <input type=”file”> elements is now functional.
.tar, .tar.gz, .tgz
files). When an eligible file is in the listing, it will
have a disclosure triangle next to it. Twist it open to
reveal the files and directories within. As with other items
displayed in disk browser listings, you can view files in
the editor view, or double-click them to open in a separate
window for editing.#define keyFallbackEncoding 'RdFB' // typeLongInteger, same semantics as keyReadEncodingValue
+x mode).
Unix executables continue to work as they have in the past.
If the chosen ‘filter’ is not an executable, but has a #! line, is it
automatically run for you.
All other ‘filters’ log a reasonable error.
tell application "BBEdit"
tell project document 1
-- add a file or folder:
make new project item with properties {file:POSIX file "/Users/siegel/p4/trunk/BBEdit/dox/"}
-- add a URL (with optional name):
make new project item with properties {URL:"ftp://foo.example.com/", name:"Mumble"}
-- add a collection (name required):
make new project collection with properties {name:"fumble"}
end tell
end tell
This organization allows a project to be checked in to source control, and each user can have their own settings and remembered state without affecting the project data itself, which used to require unnecessary commits.
Project documents in the new format have the filename
extension “bbprojectd”. File group and project documents
created by previous versions of BBEdit will be upgraded
(with a backup first), as before.
~/Library/Preferences/com.barebones.bbedit.PreferenceData/
are no longer used and may be deleted.
The “Open Recent” menu now shows all recently opened documents, grouped by document type, and sorted by name within each group. Folders are now included, so you can open a disk browser on a recently used folder by choosing it from this menu (something which was not possible before). Text and project documents are grouped before other types. The first grouping in the menu consists of the six most recently used items (of all types), sorted in descending order (most recently used first), for quick access.
The “Clear Menu” item at the end of the menu has been changed to “Clear History”, to more accurately reflect its function: if you choose it, all recent items will be cleared. Note that since recent folders are available as sources for multi-file search/replace and Text Factory operation, clearing the history will remove the folders from those operations as well.
The application preference controlling how many recent items BBEdit will remember applies to each type of item. So, if it’s set to 15, BBEdit will remember 15 text documents, 15 folders, 15 projects, 15 images, 15 movies, and so on. If you want finer control, you can construct an expert pref using the name of the document type as it appears in the menu (and if that name contains spaces, you’ll need to quote it). So, for example, if you only wanted to remember the five most recent projects:
# remember only the five most recent projects
defaults write com.barebones.bbedit NSRecentDocumentsLimit:Projects -int 5
Or the ten most recent folders:
# remember only the ten most recent folders
defaults write com.barebones.bbedit NSRecentDocumentsLimit:Folders -int 10
Or only the most recent shell worksheet:
# remember only the most recent worksheet
defaults write com.barebones.bbedit "NSRecentDocumentsLimit:Shell Worksheets" -int 1
If you don’t want to remember any recent documents of a particular type (they won’t appear in the menu, either), you can set its limit to zero:
# don't remember any images or movies
defaults write com.barebones.bbedit NSRecentDocumentsLimit:Images -int 0
defaults write com.barebones.bbedit NSRecentDocumentsLimit:Movies -int 0
Note that when setting the recent items limit, you MUST set
it as an integer, using “-int <some number>”.
#! script is now True. The state can be changed
from the “Run…” or “Run File…” dialogs and the change
will be persistent.Today you can override this for svn, p4 and cvs with the
expert preference. This change should make use of the expert
pref unnecessary in most cases.
N.B. The documentation for pod2text appears to disagree with the
implementation with respect to the output encoding. Furthermore, in some
cases it:
BBEdit does its best to cope with this.
--scratchpad option from the command line tool invokes
“automatic” mode scrolling, which means that if the EOF was
previously visible when the text is added, the window will scroll
EOF back into view (like Terminal does).pydoc in the course of a “Find in Reference”
operation.* (which is the
explicit way of typing something as “untyped”).get to be
recognized as a function-starter in JavaScript files
(similar to the function keyword).extern were
listed incorrectly in the function menu for C/C++/ObjC/ObjC++
files.URL property of a
non-text document via the scripting interface would fail.pydoc) works correctly when pydoc emits
non-ascii or non-utf-8 output, as is the case for modules with
broken doc strings. (e.g. plistlib, Python Issue #5432)NDEBUG=1
so that assertions don’t bring the tool down in normal use.If you have chosen “Save Default Window”, those saved settings will still supersede these.
foo.bar[bat] = function() {...}, were not in a
recognized/expected form.%+string+) to fold incorrectly
(the closing fold point was one character too soon).$math$ section within
a {required param}, where the $math$ section contained a closing
curly brace (e.g. \caption{foo $i_{0}$ foo}), would confuse the
parser. This tended to manifest as incorrect autofolds and
improper indentation in the function popup.+x and begin with a shebang (#!) are now
assumed to be text files.Projects:RememberOpenDocuments and will not reopen documents
that were open in a project window.