SUPPORT : BBEdit : Archived Release Notes : BBEdit 8.0 Release Notes
BBEdit 8.0 Release Notes
This page documents all new features, enhancements, and bug fixes included in the BBEdit 8.0 release.
For information on changes made in previous versions of BBEdit, please see the release notes archive.
Requirements
BBEdit 8.0 requires Mac OS X 10.3.5 or later. This is necessary because 10.3.5 contains fixes for bugs which adversely affected the operation of BBEdit.
The folder previously known as "BBEdit Support" is now named "BBEdit" in the file system. To be clear:
~/Library/Application Support/BBEdit
/Library/Application Support/BBEditIf ~/Library/Application Support/BBEdit doesn't exist when the application starts up one will be created for you and filled with the factory default examples.
NOTE: We specifically recommend that you do NOT simply rename "BBEdit Support" to "BBEdit", but that you instead copy over any additions that you have made to the factory "BBEdit Support" folder.
Additions
-
BBEdit now supports a multiple-documents-per-window interaction model, accessed via the Documents Drawer and the Navigation Bar. The drawer presents a list of all of the documents that are open in that window, and you can select a different document by clicking on it. To open and close the Documents Drawer, use the widget at the right-hand end of the text window status bar, or use the appropriate command on the View menu.
Each item in the list has a close widget ("X" in a gray circle): click the close widget to close the selected document. If the document being closed is the only document in the window, the window will close as well.
The Action menu in the upper left-hand corner of the document drawer allows you to perform a selected action on one or more selected documents:
- "Close" closes the selected document(s). If the document being closed is the only one in the window, the window is closed as well.
- "Close Others" will close all documents in the drawer except for the selected one(s).
- "Save" will save the selected document(s).
You can also perform the above actions by control-clicking on an item in the list (or right-clicking, if you have a three-button mouse).
The "New" command on the action menu creates a new text document in the window to which the drawer is attached.
The Navigation Bar is the strip right below the window status bar. It contains a popup menu which, when clicked, presents a list of all of the documents open in the window. To the left of the popup menu are the "Previous Document" and "Next Document" buttons, which allow you to cycle through all of the documents that are open in the window. With the Navigation Bar, you can get to all of the documents in the window without having the drawer open, thus conserving screen real estate.
The behavior of BBEdit with respect to using the Documents Drawer is controlled by the new "Documents" preferences. The "New & Opened Documents" group controls BBEdit's behavior when creating new documents or opening documents from within BBEdit itself. Select "Open in the Front Window" to have such documents added to the Documents Drawer of the front editing window; choose "Open in a New Window" to maintain the old one-window-per-document model (as in previous versions of BBEdit).
Regardless of the above setting, you can always use the "New Text Window" command (that is, File -> New -> Text Window) to create a new untitled text document in its own window.
The "Documents Opened from Other Applications" controls BBEdit's behavior when the open-document request comes from another application (including the Finder).
Finally, the "Open the Documents Drawer" determines the conditions under which BBEdit will automatically open the Documents Drawer.
When working in a window with multiple documents, you can use the usual "Close" command to close the entire window, including all of the documents contained therein. If any of the documents have unsaved changes, BBEdit will present you with a confirmation dialog, listing all such documents and giving you the opportunity to save them all, discard the unsaved changes, or cancel the close operation.
To close only the document that you're working on, use the "Close Current Document" command on the File menu, which would have the same effect as clicking on the close widget in the Documents Drawer, or selecting the document and using the action menu to close it.
When you start BBEdit for the first time, you'll get a First Run dialog, which allows you to install the command-line tools in a single step, configure BBEdit to operate with multiple documents per window (vs. one document per window), and enter your serial number if necessary. If you have an existing serial number, just leave the serial number space blank. Note that you must select a document-handling option (Open in Front Window vs. Open in New Window) before you can dismiss the First Run dialog. (If you change your mind, you can visit the Documents preferences to adjust accordingly.)
-
BBEdit now uses ATSUI for text rendering. This greatly improves its handling of Unicode files, particularly those containing glyphs from multiple disparate languages (e.g. Roman, Japanese, and Cyrillic all in the same file).
Open documents are now always rendered internally as Unicode, regardless of the on-disk encoding; previously this was only done if the document was in a non-Mac Roman encoding. This should in general be invisible as it was in 7.x, but old plug-ins and language modules that are not Unicode-savvy will not be loaded (and a message will appear in your console to that effect).
Multi-file searches no longer occupy the application's entire attention. This means that you can Do Other Stuff™ while a multi-file search (scripted or otherwise) is in progress, and you can also have multiple multi-file searches running at the same time. Each search in progress will display its own progress window. Closing the window or clicking its Cancel button will stop the operation in progress and display any results generated thus far.
-
The multi-file search features of the Find dialog have been worked over. The biggest improvement is that you can choose multiple sources for a multi-file search, and you can mix different types of sources: folders, individual files, file groups, open documents, and web sites. When you turn on the "Multi-File Search" option, a drawer will appear in which you can specify which sources to use (by marking the check box on each one). The text box beneath the "Multi-File Search" check box will display a summary of the selected items; click and hold to see details (such as file paths).
The "Options" button now presents a sheet for the various multi-file search options.
The "Other" button brings up an OS-standard file selection sheet for choosing files to search; you can choose multiple items, including text files and folders. If you hold down the Option key when clicking the Other button, you can select invisible items, and dive into packages.
You can drag items to the sources list drawer or to the file summary area to specify them as the search sources. To add to the existing sources, use Option-drag.
The "Saved Search Sources" popup allows you to save sets of search sources for later use.
-
A recap of the CSS features that have been added to this release:
The CSS parser can now understand and parse @media blocks.
The CSS formatter can format style sheets inside of @media blocks.
The CSS function scanner will list items inside @media blocks.
There is an @media CSS editor, and a bunch of other new CSS editors.
CSS Tag Maker includes all of the CSS 2.1 properties. (Not all of these are dispatchable to editor dialogs using "Edit Tag", but they are useful to have in the "Tag Maker" nonetheless.)
Existing CSS editors have had their property value lists upgraded to include CSS 2.1 properties.
BBEdit's spelling checker UI is all new. The "Check Spelling" command on the Text menu will now find and highlight the next misspelled word in the document (starting with the insertion point or end of the selected range). If any is found, it will be underlined with red. You can then use the "Show Spelling Panel" command to correct the word, or Control-click on the word to bring up the contextual menu with spelling options (including replacements for the word, and the dictionary-management options "Ignore Spelling" and "Learn Spelling".
-
Preview in Browser and Preview in BBEdit now have the capability to use a local preview server. (Actually you can use any preview server, but as in the past, your entire web site should be on a mounted filesystem - either local, afp, smb, nfs, etc.).
Make sure you have a web server running locally. (Web Sharing in system prefs.) In your web site config, enter the base URL for your preview server, then turn on "Use Local Preview Server".
When you are configuring a new web site, if the site root lives under ~/Sites a local http URL will be generated for you and entered in the configuration box.
Note: If your site lives outside of ~/Sites, you want to use virtual domains, need to enable php, etc., hacking the apache config file becomes your responsibility. :-)
-
Many commands which were supplied as plug-ins and so were on the Tools menu are now baked into the application:
File menu:
Hex DumpText menu:
Un/Comment Selection
Add/Remove Line Numbers
Prefix/Suffix Lines
Sort Lines
Process Duplicate Lines
Process Lines Containing -
BBEdit introduces "Codeless Language Modules". As the name suggests, a codeless language module is a file which allows you to describe the properties of a source code language, for purposes of syntax coloring and function navigation. Thus, for most simple languages, it's possible to add syntax coloring and function navigation for these languages to BBEdit without writing any code.
To install a codeless language module, place it in the "Language Modules" folder of the "BBEdit" support folder and launch (or re-launch) BBEdit. Assuming the language module is correctly formed, the language and suffix mappings that it supports will appear in the "Languages" preferences pane and files mapped to that language by their suffix will be colored and navigable appropriately.
Codeless language modules are written as "property lists," the XML format that Mac OS X uses for various purposes. You can edit these files with BBEdit itself, with the Mac OS X Property List Editor (look in /Developer/Applications/Utilities - you will need to have installed the Apple developer tools package), or with a third-party editor such as "PlistEdit Pro".
-
BBEdit 8.0 introduces a new tool: the Text Factory.
A text factory enables you to apply BBEdit's powerful text transformations in the order and fashion that you decide, across a collection of files of your choosing. So, for example, if you routinely need to process a folder full of server logs by reducing them to lines containing "www.apple.com", prefixing each line with a line number, and converting the file's line endings to Macintosh, you can assemble and save a text factory to do that work for you, and apply it at any time.
To create a text factory, choose File -> New -> Text Factory (that is, the "Text Factory" command of the New submenu of the File menu). A factory document window will open with a single list item (corresponding to a single operation).
At the top of the window is a summary area displaying information about which files/folders are to be processed. Click the "Choose..." button to present a list of available items; the interface presented in the resulting sheet is similar to the options for multi-file searching in the Find dialog.
The "Options..." button in the window's header area provides options for controlling the process. Again, the options provided here are similar to the ones provided for multi-file search and replace, and the settings behave the same as documented elsewhere.
Each item displayed in the list contains the following elements:
a popup menu from which you select the operation to apply. Note that you aren't limited to a single instance of each operation, so you can, for example, apply multiple "Replace All" operations in a single factory. Note that it is up to you to make sure that your operations don't work at cross purposes; it would not be useful to have an "Educate Quotes" operation followed immediately by a "Straighten Quotes" operation, for example.
an "Options..." button, which is used to configure any settable options for the operation. If the operation contains no settable options (e.g. Educate Quotes, Normalize Line Endings, and others), this button is disabled.
"plus" and "minus" buttons to add and remove operations. Clicking the minus button will remove the operation whose minus button was clicked; clicking the plus button will insert a new operation after the operation whose plus button you clicked. If there is only one operation in the list, its minus button is disabled.
You can re-order list items by clicking in an item (in any place not occupied by a button or popup menu) and dragging it to its new location.
Each operation functions similarly to its counterpart on the Text menu; a few deserve additional explanation:
"Change Line Endings" and "Change Text Encoding" will only affect the line endings and text encoding of the file that is written out when "Save to Disk" is selected from the scanning options sheet ("Options..." in the window header area). Neither operation changes any file contents in memory, so will have no visible effect if the file is left open (either by use of the "Leave Open" button or by opting to leave the file open when confirming a save).
when using the "Run AppleScript Filter" operation, your script should be written with an entry point named "ApplyTextTransform". The input parameter to this entry point is a Unicode string containing the file's contents. This entry point should return the file's contents as a Unicode string (or something which can be directly coerced to one):
on ApplyTextTransform (fileData) -- do something to fileData return fileData -- or some reasonable facsimile thereof end
when using the "Run Unix Filter" operation, the document's contents are made available on stdin as UTF-8 with no BOM, so your Unix script (or executable, since you can choose any file whose "x" bit is set) must be prepared to handle such data. The file's contents will be replaced with whatever your script or program writes to stdout, so you must write out correctly formed UTF-8 or else strange and un-wonderful things will happen. (If your documents consist exclusively of 7-bit ASCII, this requires no additional effort on your part, since UTF-8 is a superset.) As a point of technical interest, your program will be run on a secondary thread. This should not pose a problem as long as your Unix script avoids doing fancy GUI-ish things.
Once you have configured your factory and selected the files and folders to process, click the "Apply" button in the lower right-hand corner of the window. BBEdit will apply the transformations in the order you've specified, to each file. This process happens in the background, so you can keep using BBEdit while it's going on (similar to a multi-file search operation).
".textfactory" is the officially recognized suffix for Text Factory documents stored in typeless files.
There's a new command on the Text menu: "Apply Text Factory...". When a modifiable editing window is in front, choose this command, and you'll get a file dialog sheet in which you select a text factory document from disk. The operations specified in the factory document that you select are then applied against the front editing window. The results are undoable.
BBEdit 8.0 features integrated support for Perforce. If the "p4" command-line tool is installed, and you set the appropriate preferences in the Tools preference panel, there will be a "p4" menu in BBEdit, providing access to frequently used Perforce commands and operations.
You can select one or more files in a results browser window (e.g. a Search Results window, or the browser resulting from the "Show Opened" command) and apply the following p4 commands to one or more selected files:
Edit
Revert
Add
Delete
Revert & DeleteYou can submit from within BBEdit as well.
For the P4 users who also read release notes, here's what the menu contains, and what the expected behaviors are:
Edit: Performs a 'p4 edit' on the front window or the selected items of a results browser.
Revert: Performs a 'p4 revert' on the front window or the selected items of a results browser.
Sync To Head: Performs a 'p4 sync' passing the front window or the selected items of a results browser to the command.
Revert & Sync To Head: Performs a 'p4 revert' followed by a 'p4 sync' for the front window or the selected items of a results browser to the command.
Sync To Revision: Displays a revision list for the front window, and then syncs the file to the chosen revision.
Sync All: Performs a 'p4 sync' with no additional arguments.
Submit...: Opens a change list editor window in BBEdit, and then submits the changes described within.
Compare Revisions...: Displays a revision list for the front window, and then compares the front window to the revision chosen from the list.
Compare Arbitrary Revisions...: Displays two revision lists, and then compares the two chosen revisions to each other, not changing the version you have checked out.
Compare To Base: A shortcut to compare the front window to the revision from which it is derived.
Compare To Head: A shortcut to compare the front window to the head revision.
View Annotation: Opens a window containing the results of a 'p4 annotate'.
Show Opened: Shows a results browser of all the files opened or added to the repository. Very useful in conjunction with many other commands.
Add: Adds the current window to the P4 repository. Like the command line tool, you must submit to push the changes to the server.
Delete: Deletes the current window from the P4 repository. Like the command line tool, you must submit to push the changes to the server.
Revert & Delete: Performs a 'p4 revert' on the file prior to the deletion, so modified files may be discarded.
Go to Previous / Next Conflict: Searches the front window for the next or previous marker indicating a sync conflict.
Open Log File: Opens BBEdit's log file containing the output from Perforce commands.
-
CVS grows two helper commands:
Compare To Base
Compare To HeadThese checkout the referenced revision into a temp file, and compare it to the open window.
CVS commit operations will now open a CVSEDITOR window to accept checkin comments. This lifts the previous 255 character limit for checkin messages, as well as providing a better environment to type stuff in.
When you do a CVS export and there is a name conflict in the destination folder you are now prompted and asked whether you want to replace the destination or use a sequenced folder name.
The "Uses SSH" setting is hooked up for configured CVS repositories.
As part of our continuing effort to eliminate typos, the CVS Source Root configuration is now a drag well instead of an edit control.
-
BBEdit now supports the use of exuberant ctags <http://ctags.sourceforge.net/>. If a tags file is found in the same directory as the front document, or in a parent of the front document's directory, you can use ctags in the following manner: "Find Definition" has returned to the Search menu. When chosen, it will use ctags information (if available) to find definitions of the selected word. If any are found, a sheet will appear in which you can choose the occurrences to be opened. Select the occurrence(s) to open, or use the "Show All" button to open a search results window showing all of the definitions.
Contextual-menu clicking on a selection range will now add a "Definitions" submenu to the contextual menu, listing the definitions of the selected symbol. Select a definition to open it, or choose "Show All" to open a search results window showing all of the definitions. (Note that you don't actually have to have the symbol selected; you can control-click in the middle of an unselected word to look it up.)
Note that BBEdit doesn't handle ctags generation for you, but only uses existing tags files. This is because individual work flows and setups vary so widely that it's impractical for BBEdit to try to manage your tags for you.
To help keep your tags up to date, try incorporating a script into your build system that does it for you (or perhaps write a cron task). For example, we use the following Python script to update the tags for our source code whenever a build is started in Xcode. ctags is fast, so it only takes a few seconds to run, and is able to update the tags even if one or more files won't compile. (Python script sample)
(See the Xcode documentation for more information on how to create build phases that run shell scripts. A similar trick should be possible with CodeWarrior and probably other IDEs, but we haven't tried it.)
-
The application no longer uses a separate prefs file, but rather uses the appropriate OS services for storing preferences. There are several practical implications:
Prefs files are much less likely to get corrupted and need replacing or restoring;
The new system is much friendlier in setups where prefs storage is not on the local disk;
It is possible to modify preferences without launching the application by using the appropriate "defaults write" commands (but you must take responsibility for any bad things that happen as the result of doing so without explicit advice from Tech Support).
If there is a "BBEdit Prefs Data" file inside of your BBEdit Preferences folder (in either the BBEdit support folder or in ~/Library/Preferences), most of the old settings will be imported.
Note: Not all items are usefully stored in the preferences file. For those items, BBEdit will create a folder named "com.barebones.bbedit.PreferenceData" in ~/Library/Preferences and store those items there. Unlike previous versions, 8.0 and later will not look for this BBEdit Preferences folder in any location other than ~/Library/Preferences (or, more specifically, the user preferences folder as instructed by the system).
Preferences are now "live", and don't need to be explicitly saved, so the "Save" and "Revert" buttons have been removed from the Preferences window.
-
If you never use the FTP/SFTP-related commands (Open from FTP/SFTP Server, Save (A Copy) to FTP/SFTP Server, New FTP/SFTP Browser), you can remove them from the menus with this shell command (Note: your web browser may have wrapped the following line for display):
defaults write com.barebones.bbedit FTP:HideFTPMenuCommands -bool trueNote that BBEdit only reads this setting when it starts up, so you'll need to quit and relaunch after changing this.
The preference to control list font display has been added to BBEdit.
There is a new preference in the Differences preferences which controls whether palettes are hidden when doing a Find Differences.
There's a new setting in the "HTML Markup" preferences to control whether BBEdit uses single or double quotes when generating new tag attributes. (It will always preserve the quote character already in use when editing existing attributes.)
There's a new "Source Control" preferences pane, in which you configure settings for CVS and Perforce projects. Perforce passwords are stored in the keychain.
Double clicking a source control configuration brings up the editor dialog.
The "Built In" spelling checker option (see the Spelling preferences) now uses the Mac OS X system spelling checker. As such, the Spelling preferences pane has been heavily worked over (specifically, the dictionary configuration list has been removed).
There's a new setting in the Text Editing preferences, to control whether typing Option-yen on a Japanese keyboard generates a yen ( ¥ ) or a backslash ( \ ).
If the "Open File by Name" dialog contains a file:// URL, BBEdit will ask the system to resolve the URL to a local file, and if successful will open the file thus found.
-
The #! menu now supports Affrus for debugging Perl Scripts.
The Unix Scripting Prefs contains a switch that determines whether to use Affrus in preference to the command line debugger when debugging Perl.
The integration is complete (we pass all args, env vars and working dir to Affrus as appropriate) but simple (we hand off the file for debugging and don't attempt to retrieve output.)
The "Open File by Name" dialog now maintains a history of the names you've entered. This field also supports auto-completion on recently used names.
There's a new command on the Search menu: "Compare Two Front Documents". This does pretty much what the title implies: if you have two or more document windows open, BBEdit will compare the newer one against the older one (based on the editing/modification date).
There's a new command on the Search menu: "Compare Against Disk File". This command will compare the contents of the front document's window against what is currently written to disk.
-
There is a new application preference: "Allow Menu Key Equivalents to Autorepeat".
It is off from the factory. Turning it on enables it for all(*) menu items. Use it wisely. (The HIG says that menu commands should not autorepeat, so they do not by default. If you want it to behave that way, live with the consequences.)
The Window List palette now shows the same menu comment as is displayed in the Window menu. This makes it much easier to tell search results windows apart (for example).
There's a new tool that can be used to invoke Find Differences from the command line: "bbdiff" is now installed by the "Install Command-Line Tools" button in the Tools preferences.
The Philip bar as we know it is history. It has been replaced by a "page guide" which indicates the historical Philip Bar point in the window's content area (rather than being limited to the status area).
Tab stops are no longer confined to the status bar; when "Show Tab Stops" is turned on, grid lines will appear in the window's content area.
There's a new setting in the "Text Colors" preferences: "Highlight Insertion Point". When this is turned on, the line containing the current insertion point is highlighted in the indicated color. (The highlighting goes away when a selection is made.)
There is now a "Paste Column" command to force a paste as a rectangular column.
Marker commands are now represented in the Set Menu Keys dialog (twist open the "Status Bar" item).
Printing is now recordable.
There's a new command on the Text menu: "Straighten Quotes". It will convert curly single and double quotes to straight single and double quotes ( ' and " ).
-
Added a new text transform: "Normalize Line Endings". This command replaces the old "Filter Line Feeds" option in Zap Gremlins, and is much more useful: if a file contains a mixture of Mac, Unix, and DOS/Windows line endings, the "Translate Line Breaks" preference is insufficient to convert the document for viewing and editing; after conversion, the document may appear to not have any line breaks at all (this usually happens if the first line break in the file is a Mac line break, and all the rest are Unix), or to have an invisible character at the beginning of each line.
If this happens to you, use Normalize Line Breaks to convert the remaining line endings, and save the document. At that time, all of the line endings will be of the appropriate type, and future line-break translation will work correctly when you next open the document.
-
Hex Dump has been split into two (technically, three) commands:
Hex Dump File: This will open an application modal dialog with a familiar file well to choose the file to dump, radio buttons to choose the fork, and various output formatting controls.
Hex Dump Front Window: This will drop a document modal sheet with radio buttons to choose in memory or on disk, and the same output formatting options. (There is a Just Do It(tm) variant as well.)
All of the text transformations on the Text menu now bring up document-modal dialogs ("sheets") rather than application-modal dialogs. Note that the "Selection Only" option has been removed; each transformation will operate on the selection range if there is one, and on the entire document if not. Finally, for each transformation that brings up a dialog, you can hold down the Option key to invoke it without the dialog (using the last settings chosen from its dialog, or the factory defaults if appropriate).
Prefix/Suffix Lines is now recordable. Note that the scripting interface has changed, so if you have existing scripts which invoked the old Prefix/Suffix Lines plug-in, they will need to be modified. (See the dictionary for details.)
Add/Remove Line Numbers is now recordable. Note that the scripting terminology has changed; if you have scripts that invoke the old Add/Remove Line Numbers plug-in, they will need to be modified. See the scripting dictionary for details.
Sort Lines is recordable. Note that the scripting interface has changed slightly; see the dictionary for details.
There is a new property of a text document "container web site" which will return a reference to the web site which contains this document, if any.
New scripting terminology is in place for Educate Quotes and Straighten Quotes. If you have previously scripted Educate Quotes, please review the dictionary for changes.
The Prefix/Suffix Lines sheet now recognizes the same escapes as the find dialog (\t, \r, etc.).
There is now a command "Special Characters..." at the bottom of the edit menu which brings up the system special characters palette.
There's a new group of items in Set Menu Keys: "Status Bar". In here you will find the means to assign menu key equivalents to frequently used items on the Text Options and Document Options popup menus (which otherwise have no equivalents on the menu bar).
The CSS tools now support @media rules. For example:
@media print { body { font-size: 10pt; } } @media screen { body { font-size: 13px; } } @media screen, print { body { line-height: 1.2; } }Given an existing media rule, you can use the CSS editing dialogs to edit the rulesets within (or get there via "Edit Tag".)
The formatter understands and formats the rulesets within the @media rule.
The CSS function scanner understands and lists @media xxx { } blocks now.
-
The HTML syntax checker now supports ignore sections.
<!-- #bbpragma ignore_errors="on" --> some markup <!-- #bbpragma ignore_errors="off" -->
Some legitimate uses for this may be checking content which out of necessity needs to use non-standard markup to support old browsers.
<object ...> <!-- for browsers without object support --> <!-- #bbpragma ignore_errors="on" --> <embed src="..."></embed> <!-- #bbpragma ignore_errors="on" --> </object>
Or to check templates quickly from content management systems (once processed by the CMS or the server, the output should also be checked.)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>My Blog</title> </head> <body> <!-- #bbpragma ignore_errors="off" --> <MTEntries> <$MTEntryTrackbackData$> <MTDateHeader> <h2><$MTEntryDate format="%x"$></h2> </MTDateHeader> <h3><$MTEntryTitle$></h3> <$MTEntryBody$> </MTEntries> <!-- #bbpragma ignore_errors="off" --> </body> </html>
Some usage notes:
The parser is really running in the ignored block. This means:
you still have to avoid doing something to completely throw it off, like have ">foo" in your content.
if you open an element in an ignored block, and forget to close it, you may still get an error generated for it outside of the ignore block (depending on the parse tree.) This is a good thing and a feature.
If you terminate the document inside of an ignored block, an error is generated.
Check Syntax is now available in the #! menu for python scripts.
-
There's a new submenu on the Window menu: Workspace. The commands on this submenu allow you to save and restore the arrangement of your palettes (as listed on the Palettes submenu). Thus, you could have different workspaces for, say, working on a web site versus writing software. To save an arrangement, simply choose "Save Workspace..." and enter the name under which to save the workspace. To replace an existing workspace, choose its name from the popup menu to the right of the entry field and then click the "Replace" button.
To delete a workspace, choose "Delete Workspace" from the Workspace menu and select the name of the workspace from the popup menu.
It is now possible to set the tab width in the font panel. As such, the "Font & Tabs" command has been removed from the main menubar.
-
The Find Dialog search history has been enhanced in two significant ways:
Search and replace strings entered via Command-E and friends are added to their respective histories.
Search strings restored via the popup menu restore their grep state. Replace strings do not.
-
There is now support for syntax checking partial documents.
This is a helpful feature when working on pages that will be pulled into other templates, but you really ought to check syntax on the complete page (be it after your content management system generates it, or the server pulls all the pieces together and serves it), to get a complete picture of the markup.
Syntax checking of partial pages only works when the partial page represents a balanced portion of the tree.
For example, the "meat" of the page, or a sidebar, are good candidates. Page headers and footers which have content trees that are unbalanced, like:
html head body div
or
/div /body /html
will not work with this new feature.
You need to give BBEdit a clue that your page represents a partial document.
<!-- #bbpragma doctype="-//W3C//DTD HTML 4.01 Transitional//EN" root_element="ul" --> <!--#include virtual="/includes/template_top" --> <li>a list item</li> <li>a list item</li> <li>a list item</li> <li>a list item with no closer - will generate warning if pref is set <li>a list item</li> <meta name="name" content="not allowed here - will cause syntax error"> <!--#include virtual="/includes/template_bottom" -->
1) Write a #bbpragma comment that says which doctype you are using, and what the root element of the partial document is.
In this example, my SSI pages generate a header and footer and assume that the only thing that should be in the "meat" of the page is list items that live inside a <ul> element.2) root_element should just be the name of the root element
3) doctype should be either the public identifier text for the DOCTYPE you wish to check against (see example above) or the "display name" of the document type as used in the New HTML Document dialog.
-
The following remark in the LaunchBar 4 release notes...
Limitations: The "recent documents" sub-search only works with Cocoa applications...has just been proven false. :-)
The prefs window now uses the font panel for setting fonts/tabs where appropriate.
-
The hier folder menus get a couple of features.
When selecting an item, hold down option to edit it, or shift to reveal it in the Finder.
Selecting a folder node opens it in the Finder.
There's a new command on the BBEdit menu: "Enter Serial Number". If you have a valid BBEdit serial number, you can use this command to activate the application without quitting it. If for some reason you are issued a new serial number, use this command to enter the new serial number.
-
You can how hand sftp/ftp URLs off to BBEdit through the command line tool:
bbedit sftp://myserver.example.com/my/file/path
Not all file switches are supported when using the tools with URLs. This includes line number jumping, --create, --encoding, --print, --encoding.
There are preferences available from the Source Control pane for controlling the options passed to the diff engine for Compare to Head and family.
When a file cannot be saved because there are unmappable characters in the current encoding, the alert sheet will give you the option to display up to the first 50 unmappables.
-
All the dangerous, non-undoable preference actions now have confirmation sheets:
Reset factory text colors
Delete file filter
Delete search path
Delete bookmarks
Delete web browsers
Delete web site
Delete language mapping
Delete source control repository
Delete grep pattern When processing the #script# glossary token, BBEdit will now run shell/Perl/python scripts in addition to AppleScripts.
-
The glossary now supports two new cookies: #localtime xxx# and #gmtime xxx#.
These are flexible time formatters - substitute a time format for the xxx part.
#localtime %r %z on %A#
#gmtime %r %z#
All of the format characters supported by strftime (see the man page) are supported since that is what is used internally to do the expansion.
The HTML update engine supports the #gmtime xxx# and #localtime xxx# placeholders. These work identically to those in the glossary - see glossary notes for details.
When performing a Find Differences between two folders, the folders being compared are now remembered on the Recent Folders list (also accessible for multi-file searches).
Previously, glossary entries supported multiple #insertion# placeholders, or one #selstart# / #selend# pair.
The glossary now supports multiple using multiple #selstart# / #selend# along with any number of #insertion# placeholders.
The file menu has a new sub-menu "Reopen using Encoding" which allows you to reopen/reinterpret a file which has been opened with the wrong encoding. These commands are only available if the document isn't modified.
BBEdit can now open files for editing that are only readable by root. (For example, /etc/sudoers) As usual, you'll have to provide an administrator password when asked.
The old "Default <...> Directory" setting in the File Search preferences has been replaced with a list of search paths. When locating a file in response to an Open Selection or Control-Tab gesture, BBEdit will search each folder in the list (after first trying to locate the file using the Unix search paths specified in the File Search prefs, and then doing a best-guess search).
Open File by Name should now be significantly faster for the second and subsequent searches.
In the "Window Status Display" preferences, the old "Show Philip Bar" setting has been replaced with the "Show Page Guide" setting, and you can set the character position at which the page guide will appear in your windows. The width setting is expressed as a number of characters; if you use a monospaced font the display will necessarily be more accurate than if you use a proportional font.
In the Languages preferences, the old popups for "default language" and "language for untitled windows" popup menus are gone, and replaced with a list of installed languages. The Options button allows you to configure the comment-start and comment-end strings used by the Un/Comment command on the Text menu. Click "Make Default" to make a language the default when creating new text documents and opening text documents for which the language cannot otherwise be guessed (by mapping the file's suffix or examining its content).
There's a new checkbox in both the "Text Files: Opening" and "Text Files: Saving" preferences: "Emacs Local Variables". Emacs (the popular Unix text editor) supports a convention in which you can define Emacs-specific settings in a block of text near the end of the file, or in the first line of the file. BBEdit now recognizes the Emacs variable block, and if the appropriate preference is turned on, certain variables will be read and set. At the present, BBEdit only recognizes the "coding" variable, which is the Internet text encoding name in which the file is written, (e.g. "iso-8859-1" or "utf-8", to name just a couple). With the preference for opening, BBEdit will use the "coding" variable to interpret the file's contents; with the preference enabled for saving, BBEdit will change the "coding" variable in the variable block to reflect the document's encoding (and will write out a variable block if necessary).
Note that if you are upgrading from a previous version of BBEdit, you will need to manually copy across any additions you have made to the previous "BBEdit Support" folder. We specifically recommend that you do NOT simply rename "BBEdit Support" to "BBEdit".
When you change the text encoding (using the status bar widget) BBEdit will update the coding variable in emacs local variable blocks.
The text encoding sniffer honors emacs local variable blocks (if the appropriate preference is on.)
If you are writing emacs local variables, changing the encoding will generate an emacs local variable block if none existed before. If you don't like it turn off the pref.
Wrap Around now uses the appropriate iCandy for status display.
-
New settings in Text Editing prefs control the behavior of the Home and End keys:
Scroll to Beginning and End of document = the current behavior
Move Cursor to Beginning and End of Line = comforting for Windows refugees :-)
The built-in Pascal syntax coloring now recognizes C-style "//" comments used by current versions of Metrowerks and GNU Pascal.
You can move documents between edit windows. (This is done by dragging the document item from the documents list or the proxy icon to a documents drawer on another text editing window.)
-
There are two new commands in the action menu and contextual menu in the documents drawer:
"Open in New Window": Opens the selected documents in a new editing window. (N.B. since documents can only exist in one editing window at a time, this removes them from the original window.)
"Open in Separate Windows": Opens each selected document in its own editing window. (N.B. since documents can only exist in one editing window at a time, this removes them from the original window.)
There is a new preference in the Windows pane which lets you control whether Command-0 through Command-9 are reserved for use in the Window menu. If you turn this preference off you will be able to use those keyboard equivalents for menu items of your choice.
If the documents drawer is closed, and you hover over the documents drawer button with a drag that is acceptable to the documents list, the drawer will open. (N.B. The reverse is not true - you cannot hover over the drawer to close it. However, if you find yourself low on screen space in the middle of a drag, Expose is your friend for dropping on a buried window.)
The HTML updater now supports the #uuid# placeholder.
-
Added "Copy Full Path" to the path popup menu in text window status bars. This differs from "Copy Path" in that it will always place an absolute path on the clipboard, whereas "Copy Path" will always elide the path if it's relative to your home directory. For example, given a file named "mumble.txt" in your home Documents directory, Copy Path will copy: ~/Documents/mumble.txt but Copy Full Path will copy: /Users/example/Documents/mumble.txt .
The "Open Recent" submenu of the File menu has a new command at the end: "Clear Menu". Choosing this command will clear the recent items off the list. (Favorites are unaffected.)
"Find Selection", "Enter Search String", and "Enter Replace String" are now on the contextual menu for text views when a range of text is selected when bringing up the contextual menu.
Added a preference to Editing: Keyboard to control the whitespace management of auto-indent.
-
When Auto-Indent is in use, BBEdit will ordinarily adjust whitespace immediately following the carriage return as follows. Consider the following text:
void foo();
If you place the insertion point after "void" and hit return, what happens next depends on the setting of the "Remove Leading Whitespace from Indented Line". If it's turned off, you'll end up with:
void foo();
However, if "Remove Leading Whitespace from Indented Line" is turned on (the factory default), you'll get:
void foo();
In other words, any whitespace following the newly inserted line break is deleted. (Note that this behavior is similar to that of the old MPW shell.)
Added "Open Selection" to the contextual menu, when the selection range is eligible for handling thereby.
Arranged for HTML character entities to be colored as keywords in HTML and XML both outside of tags and within tag attribute values.
Added command-key equivalents for the "Files" and "Folders" buttons in the Find Differences dialog.
Added bbdiff to the shell language keyword list.
Added language guessing for PHP scripts with a shebang line.
Added terminology for the "mark" command to the scripting dictionary, which allows you to automate the "Find & Mark All" command.
Changes
The product serial number is now stored using system preferences services. The "BBEdit Serial Number" file is no longer used and can be deleted.
-
Menu Scripts are loaded from, and only from:
~/Library/Application Support/BBEdit/Menu Scripts/
-
Language Modules are loaded (and only loaded) from the following locations:
~/Library/Application Support/BBEdit/Language Modules/
/Library/Application Support/BBEdit/Language Modules/
<Application Bundle> -
Plug-Ins are loaded (and only loaded) from the following locations:
~/Library/Application Support/BBEdit/Plug-Ins
/Library/Application Support/BBEdit/Plug-Ins <Application Bundle> -
Scripts, Unix Filters, Unix Scripts and Stationery are now loaded from:
~/Library/Application Support/BBEdit/<XXX>
/Library/Application Support/BBEdit/<XXX>where <XXX> is the appropriate folder name.
You can hide the local domain items (machine global) by using the menu "Hide/Show Library <XXX>" item in the individual menus.
There is now a convenience menu item in each of the menus allowing you to open the user domain folder that contains the items.
File and Folder aliases are supported.
Note: Keystrokes are no longer stored directly in the files themselves (among other reasons, because all users don't have write access to the local domain files.) Existing keystrokes in files themselves are ignored - you will have to set your keystrokes once after upgrading to this version.
-
Startup/Shutdown items are only loaded/executed from:
~/Library/Application Support/BBEdit/(Startup|Shutdown) Items/
The "File Type" preferences of yore are gone.
Text generated from results lists (for copying or dragging) is now exported as UTF-16.
Text generated from results list for a Save As is written to disk as UTF-8 with a BOM.
The file/line specification for text generated from results lists is in the canonical Unix format: /path/to/file:line . As a result you can now use "Open Selection" on such.
BBEdit will no longer bring CodeWarrior to the front when you initiate an operation, with the exception of the Disassemble command (because CodeWarrior opens its own window for the output).
BBEdit no longer saves document state in the resource fork of the document's file. This has a number of advantages, including (but not necessarily limited to): no longer creating resource forks to save document state, better compatibility with source-control systems, and easier personalization (your changes don't affect other users of shared files).
Saved document states are forgotten 14 days after the last access, so the saved-state storage won't grow unbounded.
Note that no distinction is made between saved-state formats; the old "MPW" and "BBEdit" state settings are gone. You can control whether BBEdit saves document states by means of the "Save Document State" switch in the Text Files: Saving preferences.
The "State" preferences have been consigned to the dustbin of history. Settings which control how (or if) BBEdit honors saved state are now in the "Text Files: Opening" preferences.
-
Many commands which were supplied as plug-ins and so were on the Tools menu are now baked into the application:
File menu:
Hex DumpText menu:
Un/Comment Selection
Add/Remove Line Numbers
Prefix/Suffix Lines
Sort Lines
Process Duplicate Lines
Process Lines Containing The Projector menu, RIP.
Renamed some of the integrated plugin menu items.
-
Support for the old Projector 'ckid' resource has been removed.
If a file containing a 'ckid' is opened, it will not be recognized.
The "Projector State" property has been removed from the scripting terminology.
The "Projector State" option has been removed from the file filter UI.
The "Projector Info" icon has been removed from the status bar.
Projector status is no longer displayed in file group windows.
The site updater, Update Images, and multi-file search subsystems will all ignore the 'ckid'.
The "Open Selection" service has been renamed to "New Window with Selection" to more accurately convey what it does.
Source control logs are now in ~/Library/Logs/BBEdit/ .
The "Remember Dialog Placement" switch (Application preferences) has been consigned to the dustbin of history.
"Create New Window" in the HTML New Document dialog has been renamed "Create New Document".
-
The "Text Editing" prefs pane has been split in two, and renamed:
"Editing: General" contains settings which control overall text editing behavior.
"Editing: Keyboard" contains settings which control keyboard navigation and editing gestures.
-
Glossary Changes
First, because it bears repeating, #•# (that is #bullet#) will no longer work. It was never a supported glossary cookie but an intermediate generated placeholder (an implementation detail) that needed to be changed due to encoding issues. If your glossary uses this, you must change it back to the supported #insertion# cookie for this release.
In previous versions of the software you were only allowed one #selstart# #selend# pair per glossary entry. That is still true, but in 8.0 you can use multiple pairs of
#placeholderstart#mnemonicText#placeholderend#
in your glossary entry to provide "hop" points with mnemonic text to enter data, such as function prototypes, etc.
Use the supported glossary cookies! The intermediate representation of those cookies is different when inserted into a document for readability by the user doing the typing. But if an unforseen circumstance causes us to change that intermediate representation, and you used it, you break. If you use the supported cookies, your glossary will continue to work.
-
The following changes have been made to Compare Front Two Documents to support multi-document windows:
If there are at least two text windows open, the command will be available and the active documents in each of those text windows will be compared.
If there is only one text window open, and it contains exactly two documents, the command will be available and those two documents will be compared.
You can always select two documents in the documents drawer list and compare them using the action menu or the contextual menu.
And you can always compare arbitrary documents with the "Find Differences..." command.
BBEdit no longer needs to pin the maximum string length of a stored search match, so it doesn't. This makes it possible to get back the entire contents of a match via the scripting interface.
The factory default keystroke for Show Fonts Panel is now Command-T. This has been removed from "Replace & Find Again" but there is an autoconfigure dialog for it.
Sheets for file group windows.
Sentence fragment.
Single-file Replace All results are now presented in a sheet attached to the window in which the operation was done, rather than in an app-modal dialog.
The behavior of the Windows palette has been changed so that single-clicking on a window's name in the palette will now select it (rather than the previous requirement of double-clicking).
-
The following changes have been made to modified-click behavior:
Command + Option + double-click no longer does a Find Selection on the double-clicked thing. (It was too obscure and nobody knew to use it.)
Command-double-click now does a Find Definition on the selected word.
Revert/Revert... has been collapsed into one menu item. Revert for text documents no longer prompts for confirmation since the operation is undoable.
The "Follow Folder Aliases" and "Follow to Remote Volumes" switches (in the File Search preferences) have been consigned to the dustbin of history.
Moved the "Exclude Matches" checkbox to reduce confusion.
-
Shell Worksheets have always been a private document format that looked like a text file. Well that is changing :-). It is still a private document format (like file groups) but it no longer looks like a text file.
The new format maintains the auxillary data (shell path, current working directory, future fields) in the data fork so it survives a round trip through a version control system that isn't resource fork aware.
The error for CDATA section unexpectedly terminated contains a hint for the common case of forgetting to write "</" as "<\/" in the content of a script element.
The ability to import BBEdit 5.x bookmarks has been removed.
The busy grep pattern warning is now presented as a sheet.
The Sources drawer remembers its open state across dialog invocations.
The feedback presented for Balance While Typing mismatches is now completely different. The screen no longer flashes, since too many people didn't read the manual to find out why their screen flashed when typing a right-paren.
"smiley face enabled" has been consigned to the dustbin of history.
Save a Copy adds the saved copy to the recent menu.
Since BBEdit no longer requires you to choose different fonts for different writing systems, the "Fonts" preference panel is gone. The old default font setting in the Editor Defaults preferences has returned.
Shutdown items are now run after all windows have been closed, and now only if the application is actually quitting. Previously, shutdown items were run before all windows were closed, and were run when the application was told to quit (either by the Quit menu command or via the scripting interface), regardless of whether the application quit or not. Thus, if you have items that you want to run as the immediate result of a Quit command, you should write a menu script attached to BBEdit.
Grep patterns are no longer stored in the "Grep Patterns" file in the "BBEdit Preferences" folder. Instead, they're stored as XML in "Grep Patterns.xml". Existing patterns are migrated if an old-format "Grep Patterns" file is found; if not, factory defaults will be loaded.
The "Convert to ASCII" command has been consigned to the dustbin of history.
"Open URL" has been removed from the Text menu. (You can still use the standard Command-click gesture to open a URL if so desired.)
The checkbox titles in the Process Duplicates dialog have been changed to more clearly reflect their function: "Matches" are really Duplicates, and "Remainder" is really Unique Lines.
Sort Lines output to a new window now generates a reasonable window title, based on the title of the original window.
The "Install bbedit Tool" button has been renamed to "Install Command Line Tools", and it does just that.
The "Run Script" multi-file search method (in which an item out of the "Search Scripts" folder would be executed an expected to return a list of files to search) is no longer supported. Note that the "Search Scripts" folder is likewise no longer used, and should be expunged from the documentation.
Clipboard contents are no longer saved when the application quits, nor restored when the application starts up.
The handling of built-in encodings has been changed. They're no longer listed separately, but instead are now in alphabetical ordering in the encoding menus and in the "Text Encodings" preferences pane. (By dint of their names, the Unicode encodings are all grouped together.)
The "Allow Script File Guessing" switch has been removed from the "Text Search" preferences. (It is no longer necessary.)
-
The preference for "Send UTF-8 to interpreter for Perl and Unix Scripts" is now gone. Instead there is a preference "Use UTF-8 for Unix Script I/O". When this switch is on UTF8 will be sent to unix filters, and unix script output will be interpreted as UTF8.
The preference that was removed caused BBEdit to write a temporary copy of the script file and execute that if the script file wasn't encoded in UTF8. This caused the behavior inside and outside of BBEdit to differ. BBEdit *no longer* writes a temporary file and executes that for the purposes of changing the encoding. The user is responsible for choosing the correct encoding for their #! script files. (If BBEdit needs to write a temp file to execute it, for instance if the editing window is unsaved, it will write the temp file in the same encoding as the original.)
Unicode input is now always on; the "Enable Unicode Input" preference is thus meaningless and consigned to the dustbin of history.
The Mac OS X print dialogs provide their own settings management, so there's no more need for BBEdit to have its own. Consequently the "Page Setup" and "Print" buttons (which were used for setting defaults) have been removed from the "Text Printing" preferences.
The "Print Backwards" and "Print Two-Up" settings have been removed from the Text Printing preferences and the Print Options dialog, since those settings are handled by the OS printing subsystem.
Process Lines Containing and Process Duplicate Lines are now presented as document-modal dialog boxes ("sheets").
The "Batch Find" option has been removed from the Find dialog.
Since non-batch finds are no longer possible, the "Find in Next File", "Open All Matches", and "Find & Replace All Matches" commands have been removed from the Search menu.
The "Show Page Guide" and "Show Tab Stops" settings no longer require that the status bar turned on, so they're no longer visually subordinate to the "Show Status Bar" setting in the Status Bar preferences and in the Text Options dialog.
The "Status Bar" prefs pane has been renamed to "Text Status Display", which more accurately reflects the purpose of the settings it contains. The layout has been reorganized to reflect the behavior of the settings (viz. separating those which take effect immediately from all windows versus those which simply establish the defaults for new windows).
-
The following settings are now applied globally to all windows, and are no longer fetched (or stored) from saved state. Changes to the listed settings take effect immediately on all open windows:
Editor Defaults -> Auto Indent
Editor Defaults -> Balance While Typing
Editor Defaults -> Syntax Coloring
Text Status Display -> Show Status Bar
Text Status Display -> Show Cursor Position
Text Status Display -> Show Current FunctionNote that the eponymous settings have been removed from the Text Options dialog, from the Window Options popup that appears in the status bar, and from the scripting dictionary.
Support for the dead languages 68K Assembler, ScriptX, and GuideScript is no longer built in.
The "Mac OS X API Reference" and "Use Mac OS X Developer Help" settings have been removed from the "Tools" preferences; BBEdit will always use the Mac OS X developer help (if the developer tools are installed).
Project Builder is no longer supported. Xcode is. We have always been at war with Eastasia.
Since the developer help tools don't support Toolbox call templating, the "Toolbox Call Template" command has been removed from the Insert submenu.
If the Mac OS X developer tools are not installed, the "Find in Reference" command is removed from the Search menu.
The font menu has been removed. (The font panel is the replacement.)
If BBEdit encounters a language module that isn't Unicode-aware, it will not load the module and log a message to the system console.
If BBEdit encounters a plug-in that is not Unicode-aware or cannot run on Mac OS X, it will not load the plug-in and log a message to the system console.
BBEdit now checks the entered Grep pattern when you click "Find", "Find All", "Replace", "Replace All", or "Don't Find" in the Find dialog and you have "Use Grep" turned on. If there is an error in the Grep pattern you will need to correct it before dismissing the dialog with one of these options.
The following HTML updater placeholders are no longer supported (there is no way to configure them in the base OS).
#IC_ORGANIZATION#
#IC_EMAIL#
#IC_REALNAME#References to "New Window" in sort lines, process duplicates and process lines containing have been changed to "New Document" (since depending on your multi-doc prefs you may not get a new window).
Fixes
Fixed a deadlock that could occur (and increase startup times, for example) between Mailsmith/BBEdit and DragThing if you turned on leave room for DragThing palettes and you are using the window dock in DragThing.
Fixed a bug where the syntax checker and link checker would fail to report entity encoding errors in URLs which where attribute values if they occured in any part of the URL other than the path (i.e. query part, fragment).
Numbers displayed in the "Get Info" dialog for text windows are now formatted using the appropriate separators for the language system in use.
Corrected a bug where command clicking in the titlebar of the frontmost window when the application wasn't frontmost incorrectly resulted in a path popup.
Fixed a bug where Find Lurkers would report a -43 error if there was a custom icon in the folder hierarchy. (The previous fix only took care of the problem if the custom folder icon was at the root of the hierarchy.)
Fixed long-standing but obscure bug that, due to over-zealous lookbehind, would sometimes fail to recognize a '/'-delimited regex if it was preceded by a comment.
Readjust keyboard focus after a preview window reload so that scrolling via the keyboard works.
File Group Lists once again have a reasonable minimum item height.
The offset property of text objects has been renamed to characterOffset to avoid a terminology conflict with the standard additions. Existing compiled scripts should be unaffected - new scripts will have to use the new terminology.
Fixed a bug where the status text in the web color picker floater would draw off the right hand edge of the window in certain configurations.
Fixed a bug where the Preview button in the tool palette was inappropriately enabled.
If you choose an untitled document for comparison, the Find Differences dialog will remember it until you choose something else or until you quit, whichever comes first.
Fixed overzealous clipping that was being applied when collapsing a hierarchical list node that isn't visible (specifically, above the top of the list rectangle), resulting in "stale" list elements being left behind.
Made a slight refinement to the conditions under which individual spaces are treated as "words" while dragging after a double-click. It now won't happen if the character to the right (while dragging left) or the character to the left (while dragging right) of the space isn't a "word" character. This allows leading or trailing punctuation to be added to the selection without gobbling up the spaces, too.
Fixed bug in which hitting the Escape key while in a text term widget (such as a string field in the File Filters) would put a junk symbol in the field. Now, hitting Escape is like hitting Return insofar as it ends the editing within the widget.
Doing a CVS file update is no longer clears the sticky bit (consistent with the GUI folder update). (You'll have to drop to the command line to clear sticky bits for files presently, just like folders.)
Fixed a bug in the Javascript function scanner. If, while scanning for the closing brace of a function, a closing brace is immediately preceded by an alphanumeric or underscore, the closing brace would get eaten. Whether the closing brace was the last one for the function or not, the brace count would get out of balance and the function popup would get messed up.
Fixed a bug in which trying to Command-drag a window behind a moveable modal dialog would result in the dragged window moving to France.
Fixed a bug where applying an HTML document template to an existing window didn't setup the undo string correctly.
Fixed a bug where text preview would crash when processing certain HTML markup.
Internet location clippings (.inetloc) are now handled like their more specific brethren (.mailloc, .ftploc, .webloc). In particular, sftp URLs in .inetloc files are now handled directly in BBEdit when opened.
Tweaked the C Shell scanner so that if a '#' is preceded by '$' or '${' it isn't treated as the start of a comment.
Corrected a bug where running a #! script would sometimes write out a temp file to execute when it wasn't strictly necessary to do so.
The HTML syntax checker now correctly treats the profile attribute of head as a space separated list of URIs.
The HTML link checker now correctly treats the profile attribute of head as a space separated list of URIs.
The HTML syntax checker no longer tells you that it is incorrect to have a double byte ([SIC] non-macroman) in a URL. Instead, it tells you how to encode them.
Corrected a bug in the link checker where it would erroneously report that the pathname case of the URI was incorrect if a non-ascii path name had been encoded in some form other than the canonically decomposed form.
Corrected a bug where onload and onunload were missing from the XHTML 1.1 language table specification for the body element.
The GoLive cleaner is now correctly named in the HTML Tools Palette.
Corrected display of non-Roman font names at various points in the Prefs window.
Fixed bug in which type-matching in the disk browser tended to not work immediately after diving into or coming out of a folder.
Glossary auto-switching no longer prefers a default language preference over other, better choices.
Fixed bug in the FTP dialog and browser in which failed listing attempts (such as double-clicking on a directory to which you didn't have access) would end up hosing the item list.
Fixed bug in which saving a file opened from an FTP/SFTP browser incorrectly changed the working directory of the login session; this would in turn confuse the browser.
Fixed a potential for crashing when dragging into a hierarchical list.
The Color Math Strings option is part of the TeX Options dialog.
Fixed a bug where the language wasn't set to HTML for new user template documents (as it was for new default template documents.)
If the selection range contains two colons in a row, it's probably not a file name, so we don't try to open it.
If the selection range begins or ends with white space, it's not considered eligible for Open Selection and the "Open File by Name" dialog will be presented instead.
Dragging, copying or saving a results list now results in POSIX paths.
Improved the performance of reading from and, especially, writing to large MacRoman files. This does not carry over to other encodings, as it is accomplished by bypassing the TEC.
Added a workaround to a problem that would arise when a Error Results browser window is created while DragThing is running.
Implemented a workaround for webkit preview windows and other Cocoa-based windows in BBEdit from being mis-layered with respect to other BBEdit windows.
Fixed a bug in the new auto-indent whitespace behavior where the undo stack was incorrect if the document was represented internally as Unicode.
The current folder popups in the anchor and image tool now correctly deal with Unicode/long filenames.
Fixed a bug where you couldn't use Command-Option-A for a menu keybinding.
Corrected a mistake in the Perl syntax coloring scanner that would cause it to almost always break runs at the end of a line. A side-effect of correcting this is that the '/' operator is no longer treated differently if it appears on the second or subsequent line of an expression, i.e., it will not mistakenly be treated as a string delimiter if it would not have been had the entire expression been on a single line (pardon the legalese :-).
Fixed a bug where pasting into the Anchor (and friends) dialog URL field would result in the field contents being selected after the paste.
Fixed a bug where open by name would open ~/... as /...
BBEdit no longer uses its own rotate windows code, but instead lets the system rotate our windows for us. We'll now track system features and bugs :-).
Fixed a bug where sometimes the submenu head action would be triggered (File->New, File->Open Recent) when it shouldn't have been.
Changed the way that text encoding preferences are stored, so that if the system-defined list changes, things don't get crossed up.
Shells invoked for the worksheet are now run as login shells (so that .bashrc is picked up, for example).
-
Shell worksheets stream utf8 to/from the shell. Non-ascii path names now work without having to encode/decode utf8 in your head.
ls -al <DirectoryWithNonASCIIFileNames> ls -al <ANonASCIIFileName>
Fixed a bug where the shell path would sometimes get garbled when re-opening a saved shell worksheet.
Due to the new commit comment UI, accidentally submitting with an empty checkin comment is no longer possible (if you happen to be the developer of a certain FTP client, "Commit * No Comment" commands are available when you hold down the shift and option keys).
The CVS compare revisions list has substantially more room for the version string.
Fixed a bug where scripted results of process lines containing were incorrect if the input data was Unicode. (A non-Unicode string was returned in which every other byte was a NULL.)
Fixed command keys from leaking through as input text in the quick find window.
Previously, if a #! file had non-unix line endings, BBEdit would automatically execute a temporary copy of the file with the proper line endings. This was useful for BBEdit Support folder items that were shared between 9 and X. It had the downside that things executed from BBEdit behaved differently than when executed outside of BBEdit. BBEdit *no longer* will execute a temporary copy of the script for the purposes of normalizing the line endings. Instead, if a file has non-unix line ends BBEdit will warn you when executing it. (This warning can be turned off in the prefs if there is a situation where your scripting language is line ending agnostic and you want to keep some other line ending format in your files.)
Fixed a bug where if you renamed a file outside of BBEdit and had verify documents turned on you'd get a -43 file not found error on resume (but then the document would work normally.)
Dragging the status bar or proxy icon to the trash once again moves the file to the trash and closes the edit window as appropriate.
Styled-text files are no longer recognized, nor are 'styl' resources added to output files any more.
The CSS @import editor cleans up extra whitespace in the media spec.
The Apply button is disabled in the CSS @import dialog if the imported URL is empty.
Intra page links (to an #anchor in the same page) now work correctly in WebKit preview windows.
-
When clicking on a link or running a script that requests a new window be spawned, 1 of 2 things will happen.
1) If there is enough context (i.e. a URL to load) that will be passed to the external browser.
2) If there isn't (in the case of scripts running) BBEdit will display an alert telling you that it doesn't support creating new web windows.
Fixed a bug where "List Items" markup would sometimes choose the wrong element when marking up items in mixed nested lists.
Corrected a bug in the link checker where it didn't flag root urls as errors when the source document was not within any defined web site. (It was resolving them against the default site in this case.)
Fixed a bug where if a rectangular selection extended outside of the view rectangle and "underneath" the scrollbar, clicking on the scrollbar would incorrectly start a drag.
Fixed a bug where byte swapped utf16 files without a bom were incorrectly filtered out when "All Readable" was chosen in the open dialog.
Corrected a bug where open documents whose name begins with a hyphen would appear as a separator in the popup menus in the find differences dialog.
The span markup tool can now create nested span elements. To edit an existing span element (since they can be nested) the insertion point must lie within the open tag.
Corrected the "funky" appearance of the "None" glossary set menu item.
When selecting line based errors (as opposed to range based errors - for example output from a Perl syntax check) in an error browser the hard line range is always selected so the proper content will be selected even if soft wrap is turned on.
When accessing the properties of an object (i.e. properties of document 1) values which cannot be currently obtained (for example the disk file of an untitled document) are now returned as "missing value" in the record rather than being omitted from the record entirely.
Fixed crash which would occur when a negative "length" argument was passed to the bblmAddTokenToBuffer() callback.
Corrected the Java function scanner's handling of catch blocks.
Fixed a bug where if you used the CVS "Update File..." variant on a file that was open the editing window didn't pick up the changes that happened during the update.
Fixed a bug where double clicking on the check syntax button in the palette closed the results browser generated by the first click, and reported no errors.
Fixed a bug where doing a javascript window.close() in a preview window would cause the application to crash.
Refined the way backwards grep searching is handled.
Fixed crash when indexing front html document.
FNNotify() after creating a backup file so it appears in the Finder right away.
Fixed a bug where if you were showing keys in a dialog by holding down the command key, then switched apps with command-tab, they keys got "stuck" in the background dialog.
If the user cancels while installing a command line tool, we no longer report that the installed version is up to date.
The dialog telling you that two files were identical was missing the application icon. Not any more.
Fixed a bug where if you issued bbedit --print *.h some of the print events sent to BBEdit might have been dropped without being handled.
Fixed a regression which caused CVS Commit Folder to fail with a bogus working directory.
Corrected the spurious "The specified file does not exist." warning in the Anchor dialog when the URL was of the form "#target". In addition, if the named target doesn't exist, a correctly worded warning will appear.
Fixed a botched redraw following a change in wrapping mode (most noticable when turning soft-wrapping ON while scrolled to the middle of the text).
Fixed a bug where the app might crash when saving an empty document if the "Force New Line at End" preference was turned on.
The Quit menu item is once again attachable.
Tweaked vbscript.cp to get it to recognize and skip the keywords 'public' and 'private' immediately prior to 'function' or 'sub'.
Fixed a latent, unreported bug that caused keywords that are only recognized following a <R> or a ':' (i.e., that begin a new 'line') not to be recognized on the very first line of the file. This is probably unreported because nobody uses VBScript unless it's embedded in HTML.
Added the keyword 'class' to the list of VBScript keywords as it has apparently been added to the language.
Clarified the error text for trying to manipulate a local CVS checkout.
Installed a missing comma in a rez file.
Fixed a bug where CVS temp files were written into the wrong directory, and all sorts of mayhem would ensue.
Improved performance of extended rectangular selections (shift-option-click).
Fixed a bug where using the close command on a minimized dock window didn't work correctly.
Fixed a minor C function scanner glitch.
The edit menu now reads "Undo Replace" after a replace and find again operation.
Fixed up some lingering cursor-arrow issues.
Send POSIX style file URLs to current versions of Opera.
When there is no selection, return an empty string to the service code so that we work with "Insert" type services.
Fixed a bug where the TSM document in some dialogs wasn't properly deactivated when you popped up a Nav Services dialog on top of it. This resulted in keystrokes inappropriately going to the dialog, and type ahead not working in the nav dialog if you were using an input method such as Spell Catcher.
Password fields should now work better with input methods such as Spell Catcher.
Preview windows now update their title when the parent document is saved initially, or saved to a new file on disk.
Fixed a bug in the window floater where non-draggable items were added to the drag.
Fixed a small memory leak when using worksheets.
Fixed bug in which the current-function display wouldn't display the current function in C/C++/Objective-C files if the last character in the function was at the very end of the file.
Tweaked Perl syntax coloring scanner to make it *not* see << followed by a number as a HEREDOC.
Shuffled string constants around as a partial workaround for the QuickTime internet plugin leaving its resource file at the top of the map and screwing things up. (This has also been reported to Apple.)
Saving a file group document no longer puts options in the save file dialog which are only appropriate to saving text documents.
Fixed two bugs which conspired to make Open File By Name fail to take the appropriate shortcut if the window was already open.
-
Corrected a bug in the CSS list and background tools where if you specified the URL with quotes, i.e.
background: url("foo.gif");the quotes were URI encoded when they should have been preserved as is.
When attempting to "Lock" an unlocked file, BBEdit is more discriminating about what work it chooses to do.
Fixed a bug where noscript was allowed inside of block elements in XHTML 1, but shouldn't have been.
Line hilighting obscures the underlines drawn during inline input. The only solution to this for now is to suppress line hilighting while inline input is active.
Fixed a bug where text returned by applescript wasn't line feed filtered before being inserting into a document by the HTML updater.
Fixed an edge case where counting the selected lines was OB1 if the selection was at the end of the file, and the file did not end in a line break.
Tweaked the multi-diff window tiling so a few more lines are visible by default. (The default config uses 1/3 the screen instead of 1/4 the screen.)
When creating a file filter, the editing dialog starts up with an initial term, rather than pristine emptiness.
Added "external" and "return" to the built-in Pascal keyword list.
Modified the "Select Line" menu command handler so that subsequent shift-up or -down arrow gestures work on whole lines as well.
Fiddled with the way "Unicode not from input method" text is handled so that smart quotes now "live balance" again.
Fixed bug which prevented some menu scripts from being invoked correctly.
When doing a Replace All, BBEdit now treats "Wrap Around" as a synonym for "Start at Top". Apart from providing the desired results, this provides much greater performance than the old "Wrap Around" behavior.
Update Document Images honors the HTML markup prefs for tags that it rewrites.
Running a unix filter on a selection inside a window whose title contains a ":" no longer fails with a bdNamErr (-37).
BBEdit now ensures that the "Default Worksheet Stationery" file has its stationery bit set correctly, so that choosing "New Shell Worksheet" opens up a new untitled worksheet with the stationery's contents and settings, rather than opening up the stationery itself.
Fixed bug in which certain types of damage to a worksheet document would cause BBEdit to open up an inoperative worksheet.
The command-line tool now reports a more specific (and helpful) error message when the OS refuses to launch a copy of the application out of the Trash, or a version of the application that cannot be run on the OS in use.
Clarified error message for -54 error.
The Recent Search Strings remember the grep setting for the last time the string/pattern was searched for.
We restore the grep setting to the find manager _after_ importing the find scrap. This allows a pattern to be imported from the find scrap without escaping.
Enabled individual spaces to be treated as "words" while dragging after a double-click. Previously, multiple spaces would be treated as "words" but a single space would be treated as part of the word just beyond it.
The Python language module now recognizes Python shebang lines which include the version number: #!/usr/bin/python2.2 .
Extremely long lines of text are much less likely to wrap over on themselves now (can still happen at larger font sizes, e.g., Monaco more than 26 pt).
Modernized cosmetics of the "No Differences" alert and a couple of its relatives.
Had to allow the Perl syntax-coloring scanner do some extra look-behind while typing (so as to distinguish '/' as an arithmetic operator from '/' as a string delimiter). A previous bug-fix prevented it from seeing anything before the insertion point while typing, but this was relaxed to let it go back as far as the beginning of the line (any further an it might back into a comment, the source of the original bug).
Modernized the error reporting dialog.
Added additional PHP5 keywords. Thanks as always to Carsten Blüm.
Window positions for Tools are remembered and restored.
Verify and Revert use the same encoding to interpret the file was was used initially. This ensures that the file is read identically the second time as it was the first if you used an override encoding (or had reopened using encoding since the initial open) instead of using your default or allowing the app to sniff the meta-data.
Save dialog boxes for which the custom options are not meaningful no longer display those custom options. This includes the "Save a Copy" dialog, in which you could specify options for text encoding and line endings which didn't take effect. (If you want to save an alternate version of the document with different options, use "Save As" and then reopen the original.)