BBEdit 9.5 Release Notes

This page documents all feature enhancements and bug fixes included in the BBEdit 9.5 update.

For details on all the new features and enhancements offered since 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).

Requirements

BBEdit 9.5 requires Mac OS X 10.5 or later (10.5.8 or later recommended).

This version is a Universal application: it runs natively on both Intel-based and PowerPC-based Macs.

Additions

  • The Quick Search window is gone, and has been replaced by an in-window Live Search bar. Choosing the "Live Search" menu command on the Search menu will open this bar.

    As you type in the search field, matches for the string get highlighted in the window's editing view. The search is always literal and case-insensitive. The "previous" and "next" arrows to the left of the field are useful for navigation; you can also type Return or Shift-Return in the search field to go forward or backward.

    The Emacs key bindings ctl-S and ctl-R will open the live search bar if necessary; if the search bar is already open, ctl-S will search forward, ctl-R will search backward (assuming that something is entered in the search field; and also that the Emacs keybinding support is turned on in the preferences).

  • BBEdit now offers enhanced script attachability. In addition to attaching AppleScripts to menu commands (which BBEdit has supported for a long time), you can now attach AppleScripts to certain application and document events.

    The attachment points (corresponding to the function names in your attachment scripts) are listed below. Except as noted, all of them share the following characteristics:

    • Every function takes a single argument, which is a reference to the object in question: the application for application entry points, or the document being opened/closed/saved/etc for document entry points.

    • Any attachment point whose name contains should is expected to return a Boolean result: true or false. If it returns true, the operation will continue. If it returns false or throws an error (see below) then the operation will be cancelled. So, for example, applicationShouldQuit returning true will allow the application to quit; returning false will not.

    • If an attachment script causes a scripting error and does not handle it within the script itself, BBEdit will report the error. In the case of functions which are used to allow a should action, this will prevent the action from occurring.

.
applicationDidFinishLaunching called when the application has completed startup
applicationShouldQuit called when the user has chosen "Quit" (or the application receives a quit event for some other reason
applicationDidQuit called when the application has finished shutting down and is about to exit
applicationWillSleep called when the user has chosen "Sleep BBEdit" from the application menu
applicationDidWakeFromSleep called when the application has completed restoring the sleep state saved by a previous "Sleep" command. Note: if the application restores a sleep state, it will not call applicationDidFinishLaunching. Conversely, if the application is launched and is not restoring a sleep state,it will not call applicationDidWakeFromSleep.
documentDidOpen called when a document has been opened and is ready for use. Note that BBEdit supports multiple types of documents, and so you should be prepared for the argument to be a document of any type.
documentShouldClose called when the application is preparing to close a document.
documentDidClose called when the application has closed a document.
documentShouldSave called when the application is trying to determine whether a given document should be saved.
documentWillSave called when the application is about to begin saving a document. note that this will only be called after a successful return from a documentShouldSave.
documentDidSave called after a document has been saved successfully.
documentWillUnlock called when BBEdit is going to make a document writeable (as when the pencil is clicked to unlock)
documentDidUnlock called when BBEdit has successfully made a document writeable
documentWillLock called when BBEdit is going to make a document read-only
documentDidLock called when BBEdit has successfully made a document read-only

There's a new folder in the BBEdit application support folder, "Attachment Scripts", which contains the script(s) to implement your custom event handlers. You can write one script to handle each attachment point, or you can write one script to handle the attachment points for an entire class of objects, or you can write one script to handle all of the attachment points for the entire application.

It's also possible to mix and match to specialize: for example, one script to implement a particular attachment point for documents, and one to handle the rest of them.

BBEdit handles the association of scripts to attachment points by means of the script's file name. There are three ways to specify a script's role:

  • <ObjectClass>.<entryPoint>
  • <ObjectClass>
  • <ApplicationName>

The first form is the most specific: the ObjectClass may be one of the following:

  • Document
  • Application

The entryPoint is one of the attachment points described above appropriate to the object class. So, for example, a script which implemented only the documentDidSave attachment point would have the file name Document.documentDidSave.scpt and contain a subroutine named documentDidSave, thus:

on documentDidSave

    --   do something useful and appropriate

end documentDidSave

Note that the file name suffix .scpt is not mandatory, but you should follow the current OS conventions as suggested when saving the script in the Apple script editor (or another script editor, such as the excellent Script Debugger).

The second form allows you to implement all of the attachment points for a single object class in a single script file, if desired. So, for the application (for example), create a script named Application.scpt, and it can contain subroutines for as many of the attachment points as you wish:

on applicationDidFinishLaunching

    -- do something relevant

end applicationDidFinishLaunching

on applicationDidWakeFromSleep

    -- do something useful

end applicationDidWakeFromSleep

on applicationShouldQuit

    -- hello world

    return (current date as string contains "day")

end applicationShouldQuit

To implement all of the attachment points for the Document class, you'd create a script named Document.scpt, and put subroutines in it for the document attachment points:

on documentDidSave

    ...

end documentDidSave

on documentWillClose

    ...

end documentWillClose

Finally, you can write one all-encompassing script which contains subroutines for all of the attachment points in the application. To do this, name the script BBEdit.scpt and put whatever subroutines in it you wish to implement:

on applicationShouldQuit

    -- hello world

    return (current date as string contains "day")

end applicationShouldQuit

on documentWillClose

    ...

end documentWillClose

When figuring out which script to run, BBEdit will first look for a script whose name exactly matches the attachment point, e.g. Document.documentShouldSave.scpt. If it is not found, BBEdit will then look for a script whose name matches the object class at the attachment point; e.g. Document.scpt. Finally, if neither an exact or a class match is found, BBEdit will look for an application-wide script: BBEdit.scpt.

Note that you do not have to implement attachment subroutines for all attachment points, or for all classes -- only the ones you need. If there is no attachment script or subroutine, BBEdit proceeds normally.

  • Compiled language modules may specify a new plist key: BBLMCompletionTagsFileNames. This is an array of strings, each one corresponding to the name of a file in the language module's Resources directory. Each file (if present) is expected to be a valid tags file, and is used when generating completions.

  • Made the regex for detecting python #! lines more precise.

  • Added support for swipe to navigate between documents to MDI windows and the documents drawer.

  • Services clean-up for Snow Leopard:

    Renamed certain services to provide better context in the services menu, contextual menu, and configuration interface on Snow Leopard.

    Provided NSRequiredContext in the service specification so that a) services are enabled by default and b) non-file path text selections are excluded from the open file service.

  • #bbpragma now supports an encoding attribute to specify an encoding hint to the syntax checker for document fragments. For example:

    <!-- #bbpragma doctype="-//W3C//DTD XHTML 1.0 Transitional//EN" root_element="body" encoding="utf-8" -->

  • a new field is supported in tags files: optional_args:(...). In the parentheses are three possible constructions: "-" indicates that no arguments are optional; "*" indicates that all arguments are optional; otherwise, the parentheses contain an ordered positional list of optional arguments. For example, optional_args(2, 3) indicates that the second and third arguments are optional.

    When an optional_args field is present, BBEdit will alter the construction of the argument placeholders when generating the function signature for text completion, so that it's easier to delete the optional arguments that you want to use.

  • If a file lives in a location "claimed" by multiple source control configurations (a Subversion checkout below a P4CONFIG file, for example) enable menu items for all claimed SCM styles, and let the user choose commands from the correct one.

  • When you drop a tarball (a ".tar" file) on BBEdit, or double-click on such a file in a disk browser, BBEdit will now browse into the tarball instead of opening its raw contents in an editing window.

    If for some reason you prefer the old behavior:

    defaults write com.barebones.bbedit Misc:OpenDiskBrowserForTarballs -bool NO

  • There's a new placeholder format: <#* ... #>. This is used for optional arguments generated during completion. It can be selected in the usual fashion; and if you delete a selected optional-argument placeholder with the Backspace key, BBEdit will delete any leading whitespace, back to a preceding comma (if there is one).

  • The window scripting object class now has a property: "live search bar visible", which indicates whether the Live Search bar is currently displayed in that window.

  • BBEdit can now browse Zip archives (in the format created by the Finder's "Compress", or by using ditto -k from the command line). Drop a Zip archive on BBEdit to see it in action.

  • There's a new command on the View menu: "Reveal in Project List". When one or more projects are open, this command will locate the front project which contains the active document, and reveal the document's file in the project's file list.

  • The default behavior of the HTML updater has changed when running #! scripts. By default, STDERR is no longer inserted to the document unless the script exits with a non-zero exit code.

    To restore the previous behavior

    defaults write com.barebones.bbedit HTMLUpdater:AlwaysIncludeSTDERR -bool YES

  • Added support for enums to the Java language module. Enums now receive auto-fold points and are enumerated in the function popup.

  • BBEdit now uses the ctags files in ~/Library/Application Support/BBEdit/Completion Data/ for more than just completion: "Find Definition" (and the contextual menu) will now include definitions specified on those tags files (which is handy if you've built a tags file from a Mac OS X or iPhone SDK); and symbols defined in the central tags files will also appear in an appropriate color.

  • When you first save a file which begins with a shebang line, BBEdit will now make that file executable (a+x, as modified by the umask).

  • Completion data dictionaries generated by language modules can now contain an additional key: AutoIndentCompletionText. It's optional, but if present signals the completion system that the completion text, if multi-line, should be auto-indented according to where the completion is inserted.

  • The "search here" command (third on the Search menu, after "Multi-File Search") is now enabled when a text document is active and exists on disk.

  • Edit -> Insert gets a new command: "Emacs Variable Block". This brings up a sheet for confirming the insertion of Emacs variables describing the option settings for the current document. (Using all of the options can result in a pretty verbose result; so you may find it useful to prune the resulting text as desired.) These variables are honored and have precedence over saved document state when BBEdit opens the document. (Inserting the explicit settings can be useful when sharing the document with others.)

  • BBEdit now remembers preview window positions on a per-document basis, keyed by the document's location (which also works for documents opened via the built-in FTP/SFTP interface) and screen layout. If there is no stored position, BBEdit will use the default location as saved by the "Save Default Window" command; failing that, it will arrange the window on the same display as the parent document window.

  • The ponies' saronite shoes have been reinforced with titanium, and have a buff applied which increases both ground and flight speed by 30%.

  • BBEdit can now generate completions for include file names in C/C++/ObjC/ObjC++ source files. (This applies when typing in an #include or #import directive.) The data is sourced from the active Xcode project, system headers and frameworks, and the directory containing the source file in which you're completing.

  • ObjectiveC 2.0 @property declarations now appear in the function menu.

  • Results lists get a contextual menu. Typically, "Copy" is the only item available; but if any of the selected files are in a Subversion working copy, the menu will contain some useful Subversion commands for those files.

  • The contextual menu in project lists now contains Subversion commands for appropriate items, and commands on the Subversion menu are enabled appropriately when the project list is the target of user events.

  • Project windows and disk browsers get a new menu button at the bottom of the file list. This button shows the Subversion icon, and contains some Subversion commands which may be usefully applied to selected items in the list.

    The visibility of this button is linked to the top-level Subversion command menu; so if you want to hide all things Subversion-related, go to the Menus preferences and turn the Subversion menu off. (Changes here will take effect the next time you make a new project window or disk browser.)

  • The contextual menu in project lists now contains Subversion commands for appropriate items, and commands on the Subversion menu are enabled appropriately when the project list is the target of user events.

  • When setting up ~/Library/Application Support/BBEdit/ for the first time, the folder skeleton contains a "Read Me.txt" file at the top level, with helpful information and pointers.

Changes

  • The internal format of saved document state has been reworked, as well as the behaviors for saving and loading it. The most important visible changes are as follows:

    • When saving state, BBEdit captures only those settings which are fundamental to the document (window position, selection range, folds, splitter setting), or settings which vary from the global preferences. The latter ensures that changes to the global preferences are never inappropriately overridden by document state.

      So, for example, if the default document font is Consolas when you save the document, and the document uses that font, but you change the global preference to Menlo before the next time you open that same document, the document's font will be set to Menlo. (Note that this behavior applies to any document setting which takes its default from the prefs; the font is used only to illustrate.)

      This change should resolve lots of confusion surrounding the question of "I changed my prefs, how come my document settings don't reflect that?"

    The internal data format of the state has changed to accommodate this new behavior. Documents with existing saved state will exhibit the old behavior when they are opened; this is not a bug. BBEdit will write out the new state format the next time you save the document.

    Note that the new format is not backward-compatible; so if you open the document with an older version of BBEdit, the new format state will be ignored.

    Also:

    • If you are using the expert preference to save state in the document's resource fork (rather than in a central location), please note that the new format state data is not actually saved in a resource anymore - it is now written into an extended attribute, which you can verify from the command line using xattr -l /path/to/some/file.

    And finally:

    • A new "Normalize Options" command is available on the Edit menu. This command will reset the front document's display and editing options to the current defaults established by your preferences (including any language-specific overrides), and clear the document's saved state. This can be useful in situations where previously saved state is restored and contains undesired variances from your preferences.
  • The following UI changes have been made to text encoding selection:

    • "Unicode (UTF-8, no BOM)" has been renamed to "Unicode (UTF-8)".

    • "Unicode (UTF-8)" has been renamed to "Unicode (UTF-8, with BOM)".

    • The text encodings menu (as used in the status bar, preferences, and other locations) has been rearranged so that the most commonly used Unicode variants (UTF-8 and UTF-16-BE+BOM) are at the top of the menu, with a separator between them and the rest.

  • A fresh install of BBEdit will no longer populate the Application Support/BBEdit folder; instead it will simply create empty placeholder folders so that you know where stuff goes.

  • The "Open Hidden" command has been removed from the File menu, since the "Show Hidden Items" check box is available on all supported systems now (and it works).

  • When saving a document to a mounted file system (not FTP/SFTP), the application now does a "safe save" so that the existing data on disk is not replaced until the new document data has successfully been written.

  • "Replace All" text factory operations no longer generate a results entry so a results window should no longer appear at the end of a factory run containing Replace All actions, unless errors occurred.

  • Reworded scary confirmation text when deleting items from the Multi-File Search sources list.

  • Support for synchronizing the BBEdit application support folder via MobileMe has been removed. If you wish to sync this folder across multiple computers, we recommend the use of DropBox or something like it.

  • The GUI switch to use the old Find dialog has been removed from the Text Search preferences. The preference is still supported, so if you previously changed it, the change remains in effect.

    The expert preference for controlling use of the old Find dialog is:

    defaults write com.barebones.bbedit FindDialog:UseOldSk00lFindDialog -bool YES

  • The --gui option to bbfind now brings the application to the front when starting the search. To suppress this, add -b or --background to the command line.

  • Support for "source format profiles" has been dropped. (This affects the "HTML Markup" prefs pane, and the Markup -> Utilities -> Format... dialog, as well as the scripting interface.)

  • Project windows will now allow you to open documents which have no clear application association but which nonetheless look like text files.

  • The on-disk storage format for file filters has been changed to something more future-friendly; the saved filters are now located in "File Filters.filefilters" in ~/Library/Preferences/com.barebones.bbedit.PreferenceData/. (Note that although the file is readily human-readable, the internal structure is undocumented and subject to change; modifications made without using the application's UI are not supported...)

    Existing filters will be converted (nondestructively) to the new format. Note that the new format cannot be used with older versions of the application.

  • When browsing a Zip archive or tarball, if there is only one top-level item and it's a folder, the rest of the items are hoisted (and the top-level item is not shown).

  • If a window contains multiple documents, its submenu on the Window menu will contain diamond indicators as appropriate for any documents with unsaved changes or state.

  • Since the supported system versions can no longer run Classic applications, support for using them as preview helpers has been removed.

  • If a file changes on disk and the copy open in BBEdit has unsaved changes, you now have the option to ignore future changes to that file (for as long as the document remains open in BBEdit; closing and reopening will cause the behavior to reset).

  • The expert pref for controlling whether or not temporary files area eligible for the Open Recent has been changed. The new invocation to do so is:

    defaults write com.barebones.bbedit RecentItems:RememberTempFiles -bool YES

Fixes

  • Changes to the Text Files Only and Show Invisibles properties of an insta-project are remembered. These settings are subsequently applied to new insta-projects.

  • When selecting a function from the function popup, avoid scrolling when the resulting selection range is already in view.

  • Fixed bug in which the function menu would open with the wrong item under the mouse in some situations.

  • In some cases, the document contains an encoding specification which is valid, but does not map to a user-readable encoding name. (One example of this is "utf-16".) In such cases, the encoding mismatch warning sheet now uses the IANA name if possible.

  • Fixed bug in which function menu entries for operator definitions in Ruby would contain junk.

  • Fixed bug in which adding or changing (but not clearing) a keystroke on a #! script or filter would not take effect immediately in some situations.

  • Fixed a bug in which font and tab settings for a document already open in another window were not correctly applied when opening the document into an additional window. (This tended to occur when the document had an embedded declaration such as an Emacs variable.)

  • Fixed bug in which changes to the global color prefs didn't affect the display of open documents, when they should have.

  • Fixed bug in which changes to the editing view chrome preferences (line numbers, tab stops, gutter, and page guide on/off) took effect immediately for windows containing multiple documents, but did not apply to documents opened into existing windows subsequent to the change.

  • Fixed bug in which the comment strings for languages not backed by a language module (including the "(none)" language) were always empty.

    Note that there is no user interface for setting the comment strings for the "(none)" language; the factory default is to use "#". To adjust this, you can use the following expert prefs:

    defaults write com.barebones.bbedit LanguageSpecific:CommentPrefix -string "some string" defaults write com.barebones.bbedit LanguageSpecific:CommentSuffix -string "some other string"

  • Fixed incorrect printing of line numbers when printing the selection range of a soft-wrapped document with hard line numbers in effect.

  • Corrected broken folder subscriptions on root of disk browser

  • The Help book code gets extensive coding rework and a visual appearance upgrade, thanks to Kerri Hicks and her forbidden exercises.

  • Subversion commit files (svn-commit.tmp), files living inside of various SCM commit directories, and files in /var/folders and /private/var/folders are no longer eligible for listing on the Open Recent menu, nor is their state saved (unless, in each case, the appropriate expert pref is enabled).

  • Fixed bug in which the Find window's buttons would not enable (or disable) correctly in situations where the window immediately behind the Find window got closed.

  • Fixed bug in which twisting a folder open or closed (in a disk browser or project list) while changes were occurring in the folder's parent would have a pretty high likelihood of crashing.

  • Fixed bug in which insta-projects did not correctly reopen after an application sleep (or when restoring from previously saved application state).

  • BBEdit now prefers /usr/local/ as the destination when installing the command-line tools and associated man pages on 10.6 and later.

  • Fixed bug in which a document's state was not saved when it should have been, when saving the document to disk for the first time.

  • Fixed bug in which using an insta-project as a Text Factory source would report a -1409 error.

  • Fixed bug in which "Use Selection for Find" and friends would not correctly generate hex escapes for certain unprintable characters.

  • Fixed bug in which "Save All" would create instaprojects on disk when it shouldn't have.

  • Fixed bug in which the "exclude matches" multi-file search option didn't generate the correct results.

  • Syntax coloring for embedded JavaScript and CSS (in HTML documents, between <script>..</script> and <style>..</style> tags, respectively) will now end at the appropriate closing tag, rather than at the first occurrence of </ after the opening tag. This behavior is correct for XHTML and XML, but not for HTML 4.x and earlier; but it is more closely aligned with browser behaviors and user expectations.

  • Fixed a bug in which the function menu would appear blank in cases where the item that would have been boldfaced (indicating the current cursor position) was invisible due to "Show comment callouts" or "Show function prototypes" having been switched off.

  • Changed the predefined name "multiline" to "multline" as was originally intended. The former is not used in TeX, LaTeX or ConTeXt, whereas the latter is used in the very popular amstex and amsmath packages.

  • Fixed bug in which closing a search results window would incorrectly discard any changes to the document currently in its text view, if that document was not open in any other windows.

  • Adjusted the scripting dictionary so that only the application, document, and window classes claim the id property.

  • Fixed bug in which certain manipulations of ctags files did not cause syntax coloring to adjust accordingly.

  • Corrected template script for menu attachments

  • The JavaScript/ActionScript module no longer allow nesting of (parentheses), {blocks} and [arrays] greater than 200 levels deep. This limit will probably never be reached intentionally, and has only been implemented to prevent hangs such as the reported instance where a search-and-replace produced > 42,000 nested function calls like foo( bar( bat( etc...

  • Fixed crash which would occur when asking BBEdit to open a project which was missing its project data component.

  • Menu command attachment scripts now work for items on the named application menu.

  • The Ruby language module now recognizes regular expressions as legitimate ends to if statements, such as in the following:

    def foo(s) 'a' if s =~ /regex/ end

    This bug generally manifested as fold points not being generated for the method or block which contained the 'if statement'.

  • Fixed bug in which "Balance while Typing" was turned on in the Find window edit fields, which in turn led to undersired warnings while typing Grep patterns and such.

  • Fixed bug in which the "Look Up in Dictionary" contextual menu command didn't work correctly (typically, might launch the Dictionary application but look up the wrong word).

  • Vector typing such as foo:Vector.<String> in ActionScript files should no longer confuse the function popup and auto-folder.

  • Fixed hang in Markdown module which could be triggered by lines beginning with a hyphen in the middle of a paragraph block. A side effect of this fix is that the Markdown module now auto-folds and colors Markdown files in a fashion more consistent with what Markdown.pl produces.

  • Fixed bug in which the GUI preference "Link file's encoding to HTML/XML character set" was not honored in situations where it should have been.

  • Fixed bug in the FTP/SFTP connection panel, in which arrow navigation in the user name field didn't work correctly.

  • Fixed bug in which any open documents located on an AFP volume (or other server volume which allowed the use of kevent() to monitor changes to the document's parent folder) would have a reload triggered when its parent folder's mod date got changed. This in turn would lead to inappropriate "document changed on disk" warnings for open documents in the same location with unsaved changes.

  • Fixed a bug where diffs invoked by the bbdiff tool weren't canonicalizing RCS keywords as appropriate.

  • Fixed bug which could prevent define blocks (methods, as described in the new Lasso syntax) from receiving autofolds or being listed in the function popup.

  • Fixed crash which could occur when closing a Search Results window after a Grep search.

  • Fixed bug in which the FTP browser UI wouldn't let you make a new item with the same name as one that you just deleted, without making you first refresh the listing.

  • Fixed a case in which the application did not prompt to authenticate a save in a situation where it should have done so.

  • Fixed bug in which a document reloaded due to an attributes change which caused it to become read-only would discard any unsaved changes without asking.

  • Fixed bug in which Shift Left and Shift Right didn't honor the document's "Auto-Expand Tabs" setting when applied to a rectangular selection.

  • Integrated updated version of PHP completion data, now with optional arguments.

  • Fixed cosmetic glitch in the Text Factory UI when displaying Grep strings with embedded line breaks.

  • Fixed a bug in which "Apply Text Factory" to an open document with a selection range would add a junk character to the end of the document in cases where the selection range was at the end of the document and the document did not end with a line break.

  • Fixed bug in which MFS file filter terms containing strings would not work correctly when specified in the scripting interface.

  • The Strings language module now offers spell checking for values.

  • When doing "Save a Copy", the Save panel will now open pointing to an appropriate location (typically the folder in which the document is located, for documents already on disk).

  • Fixed bug in which the window title path popup menu didn't update if the document was relocated on disk.

  • Fixed bug in which the sources list in the Multi-File Search window didn't update correctly when projects were opened and closed.

  • Fixed bug in which dropping an archive (zip or tarball) on the application didn't check to see whether it was already open in a browser window.

  • Fixed bug in which dropping a folder on BBEdit would open a new instaproject even if one already existed for that folder.

  • Changing file filter settings in an instaproject will no longer cause a prompt to save when closing the project (unless you've made substantive changes to the project, like adding files).

  • The URL detector now correctly picks up vnc:// URLs.

  • Instaprojects now appear under the "Projects" item in the Multi-File Search window's sources list.

  • Fixed bug in bbfind and twfind in which certain options were not passed through correctly. This prevented the -R and -I options from working as they should have.

  • Fixed bug in which inappropriate encoding choices crept on to the default read encoding menu in the Text Files preferences after choosing an item from that menu.

  • BBEdit now returns the missing value object when asked for the file property of documents which were opened via built-in FTP/SFTP from remote servers, or which have not yet been saved on disk.

  • If there was an error writing out the temp files for comparison, we released a string that we didn't own, and subsequently crashed when the outer autorelease pool was popped.

  • Fixed bug in which tarballs would be deleted after having been used in a browse list (as in a disk browser).

  • Disk browsers get some internal rework to reduce resource usage while one is open, and to make room for planned features.

  • Changed the order of precedence when mapping file names to source languages, so that suffix matching is applied first. Thus, a file named Makefile.pl will now (correctly) map to Perl, rather than Make.

  • Fixed bug in which codeless language module function patterns which resulted in a zero-length function body computation (for folding) would cause premature termination of function scanning.

  • Fixed a bug in which the Lua language module didn't advertise that it supported spell checking, so spell checking didn't work correctly in Lua documents.

  • Fix bug in the C/C++/ObjC/ObjC++ function scanner in which symbols whose names overlapped with language keywords would confuse the scanner.

  • Added metadata to aid locating items in Source Control preferences.

  • Fixed bug in which fold indicators in split editing views were not drawn correctly in the split which didn't currently have keyboard focus.

  • The "Change Case" transformations have been rewritten to work correctly with non-Roman characters.

  • Fixed bug in which the AppleScript interface to searching looked for the "filter" parameter in the search options, rather than in the event (which is where the scripting dictionary says to put it). Note that the old form will continue to work for the sake of compatibility with existing scripts, but it is deprecated; so you should adjust your scripts accordingly.

  • Fixed crash which could occur when shuffling documents in a results window in some circumstances.

  • Fixed deadlock caused by the DreamweaverIsRunning() test not being thread-safe and requiring execution on the main thread.

  • Corrected a bug where the valid parent elements for <ins> and <del> were incorrect for HTML 4 variants.

  • Fixed a bug in the HTML translate tool where it did not translate entities which didn't map into the MacRoman space back to their character representation.

  • Fixed bug in which the last item in the text encoding popup menu (Windows Latin-1) would not get a bullet next to it if previously selected as the document's encoding.

  • Fixed hang which could occur at various points when BBEdit encountered a named pipe or other non-usable entity.

  • Added "sleep" to the application scripting dictionary.

  • Global ctags (as located in the Completion Data support folder) are now used when generating completions for unsaved documents (as long as the document's language is correct).

  • Fixed class of bugs in which command-click on URLs didn't work when the URL was enclosed in nonstandard delimiters.

  • Fixed bug in which command-click didn't work for non-delimited URLs located at the beginning or end of the document.

  • Fixed bug in which command-click of a URL didn't work for URLs which were broken across line boundaries.

  • Clicks on a disclosure triangle in a hierarchical list are never treated as a double-click.

  • A disk browser is opened when handling an 'odoc' for a package, rather than creating a temporary project with the package as the single project item.

  • Fixed a bug where P4 preferences would get confused about override paths, and not let you correct it

  • Fixed performance regression in case-insensitive Replace All involving single characters (which also affected Change Case).

  • Supplemented UTI test for smart folders (which doesn't work on 10.5, since the necessary UTI isn't known to the system) with a filename extension test when adding to a project.

  • Fixed bug in which "Show Toolbar" in a project window did not restore the toolbar in the project list; only in the text view of a project window.

  • Fixed bug in which the title bar path popup didn't work for project documents when no text documents were open.

  • The "Detab" sheet once again allows you to specify one space per tab (effectively replacing each tab with one space, which you could accomplish by other means, but whatever).

  • Fixed a bug where "Set unmodified" was broken in the New BBEdit Document Automator action.

  • Fixed a bug where accessing the properties of a project item via the scripting interface failed.

  • When the menu attachment script stub is created, set its file type to 'osas' so that Script Editor on 10.6 will open it properly

  • Fixed a behavioral regression where scripts run from the scripts menu which did a multi-file search, replace, or apply text factory could leave a dangling progress window open.

  • The --gui switch for bbfind now works as intended on PowerPC machines.

  • Fixed bug in which the -E option for bbfind did not correctly suppress the additional context as it should have.

  • Snow Leopard removed the default typeFSS -> typeUnicode text coercion handler. Worked around the binary compatibility issue this caused for existing HTML updater scripts.

  • Fixed bug in which clicking the "Don't Install" button in the command-line tools installation dialog failed to note that you didn't want to install the tools; so you'd get prompted again at the next application launch.

  • Fixed bug in which project documents would sometimes fail to remember their saved state (typically settings changes, but other properties as well).

  • Fixed a bug where the initially selected item for the line ends popup was incorrect.

  • The command modifier is no longer required to expand/collapse nodes in a hierarchical list. This is consistent with NSOutlineView (and thus most other instances of hierarchical lists people will be familiar with.)

  • Fixed off-by-one in calculation of line numbers for endLine and endDisplayLine scripting properties.

  • Fixed bug in which file names containing (or ending) with a question mark couldn't be opened via FTP/SFTP.

  • Documents opened as a batch in the course of opening a project document are no longer subject to the warning about opening a lot of documents as once.

  • Fixed a bug where the stderr string of the shell command was left in a locked state if an error occurred while parsing the data.

  • Fixed a bug where the p4 menu commands malfunctioned if the PWD in BBEdit's environment was out of sync with the actual result of getcwd.

  • Fixed a bug where the p4 environment/command was not correctly setup when doing an operation such as compare revisions out of a results browser and using a P4CONFIG based setup.

  • Fixed a bug where BBEdit would silently fail while creating a Perforce configuration if the server was unreachable.

  • Fixed bug in which documents reloaded due to outside changes were marked dirty.

  • When a document is changed on disk outside of the application, we now make an effort to preserve the scroll position of any views on that document, rather than always scrolling back to the top.

  • Fixed a bug where the bbedit tool would crash when invoked with --maketags when the environment lacked a PWD.

  • Fixed a bug in which manually disconnecting from an FTP server, and then reconnecting to another server with a different directory layout would result in a blank file listing and a 22125 error if the manual disconnect took place after the timed automatic disconnect.

  • Fixed a case in which a single-file Find All, multi-file search or replace, or a text factory operation on an untitled document would perform certain unsafe operations and possibly cause a crash.

fin