BBEdit 10.5 Release Notes

BBEdit 10.5 is a significant feature update which includes support for Macs with the high-resolution "Retina" displays, assorted new features, and fixes for reported issues.

For details on all the new features and enhancements offered in BBEdit 10, 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 10 requires Mac OS X 10.6.8 or later.

PowerPC-based Macs are not supported.

Additions

  • If you right-click inside of an <img> tag, the contextual menu gets an additional item: "Update Image Dimensions". This will add, or update, the width and height attributes of the image file specified in the src attribute (assuming that BBEdit is able to resolve the reference to a file on your local disk). This saves a round trip through the markup panel. Note that as always you can use the "Images" commands on Markup -> Update to perform this operation for all of the <img> tags in a document (or folder, or site).

  • Projects have a new action menu, Site. This menu contains commands for configuring the project as a "Web Site" project, with local root, defaults for new documents (and a "New HTML Document" contextual menu command), settings for the image updater, and a new feature: Deployment. This last allows you to configure the remote destination for a site's contents, and determine what additional steps to take before uploading. Thus, deploying a site takes the place of several operations that were previously manual.

  • When creating a new HTML document (from the dialog or from a template), there's a new substitution available: #LOCALE#. This is the "short" locale code corresponding to the "Language" setting in the dialog box, e.g. en, de, x-klingon, and the like.

  • There's a new command on the Search menu: "Compare Against Previous Version". If you're running on Mac OS X 10.7 or later, this command gives you access to previous versions of the document you're working on; you can compare and integrate changes from those versions, as desired. A new version is created each time you save a file. The version history is arbitrarily limited by the system; if you wish you may disable version creation entirely with an expert preference:

    defaults write com.barebones.bbedit AllowVersionedSaves -bool NO

  • There's a new menu in the menu bar: "Go". This menu contains some navigation commands that were previously on the Search menu (thus shortening the latter), and adds new commands and capabilities:

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

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

  • There is a new command: Go -> Named Symbol... This is third on the "Go" menu, and has a factory default equivalent of Cmd-Ctl-J (you may need to assign it yourself if it doesn't show up automatically, which could happen if you have keyboard equivalents held over from a suitable ancient version of BBEdit).

    This will present a sheet with all the functions and markers listed, and a filter box at the top. Choosing an item from the list jumps the text view to that location in the file.

  • The "ASCII Table" palette has been replaced by the Character Inspector, which gives you live inspection of your selected text. Although it's a static display, you can select any of the representations of your selection and copy (or drag) them as desired.

  • Added a new (dynamic) menu command to the File menu: "Close All in Project". When the front window is a project, and contains open documents, this command is enabled and will close all of the documents in the project without closing the project itself. The factory default equivalent for this command is Command-control-W.

  • "Compare Two Front Documents" has been changed to "Compare Two Front Windows". This more accurately reflects its behavior, and provides for a more predictable set of rules, specifically: this command is enabled only if there are two or more editing windows open, and a text document is active in each of the frontmost two windows, and if neither window is blocked by a modal dialog box).

    With this change, the command is no longer available to compare two documents in the same window; however, you can select those documents in the file list and use the "Compare" command on the contextual menu.

  • Added a new command to the Edit menu: "Paste & Select". This is dynamic, and becomes visible when holding down the Option key. The factory default keyboard equivalent is Command-Option-V. (It's also visible in the contextual menu in text views, again by holding down the Option key.)

  • Live preview windows now have a new item in their navigation bar: "Preview Filter". This choice lets you route the document's contents through the text filter of your choice before display. The default choice is "(language default)"; in this case, the preview contains the language module's default HTML conversion, as before.

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

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

    Preview filters may themselves be one of three things:

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

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

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

    Both Unix scripts and Unix executables will receive the document's contents as UTF-8 text on STDIN; they should write UTF-8 text to STDOUT, and the output will be previewed.

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

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

    • DefaultFilter_Markdown.pl (a Perl script)
    • DefaultFilter_Markdown.scpt (an AppleScript)
    • DefaultFilter_Markdown (a compiled executable)

    The default preview filter can also be a symlink or alias to a filter elsewhere.

  • In addition to a Preview Filters directory, BBEdit packages can now also contain Preview Templates and Preview CSS directories, within their Contents directory. Items here follow the same rules as for the global Preview Templates and Preview CSS folders in Application Support/BBEdit/, and will appear on the appropriate menus in a live preview window.

  • Tags file discovery has been enhanced, and no longer relies strictly on directory scanning. Tags files are discovered using Spotlight; a file whose name is tags or whose name ends in .tags or .ctags (see below) is eligible, and if it resides in the ancestor directory hierarchy of the document, its symbols will be available for code completion and syntax coloring. Since tags is a filename extension, you can have multiple tags files available for the same directory hierarchy, e.g.

    Mac OS X 10.7 SDK.tags
    Project Sources.tags

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

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

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

  • The contextual menu for file lists in projects gets a "Save" command; "Close" and "Close Others" now work in the "Project" section of the file list in project windows.

  • There's a new grouping in the sources list for multi-file search/replace and text factory application: "Open Editing Windows". This collection includes any window which has one or more editing documents in it. If you want to constrain the operation to the documents that are already open in a particular window, this is the place to do it.

  • There's a new color setting for syntax coloring: "Variables". Some languages support this (PHP and Perl); most do not but the color information may be generated by language modules at their discretion.

  • Projects save to disk have a new item in the bar below the file list: it presents a menu containing "Site Settings", which brings up a sheet for configuring the project as a web site. The old "Sites" in the Setup panel are no longer supported.

  • Text windows get a scripting property: "display magnification". This is a float; 1.0 is normal display.

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

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

  • There's a new switch for the bbedit tool: -m (long form --language). This allows you to specify a language name on the command line when piping data in to bbedit from a Unix tool. For example:

    some-process | bbedit --language Ruby some-process | bbedit -m JSON

    You may also use an Emacs mode name that maps to your designated language (this can easily be generated by converting the language name to lower case and replacing spaces with dashes):

    some-process | bbedit --language object-pascal some-process | bbedit -m json

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

  • The popup menu next to the "href" attribute in the Markup panel (when editing anchors and certain other tags) now includes internal anchors for eligible destination files. Anchors in the document you're editing are available at the top level of the menu; anchors for other files listed on the menu are in a submenu attached to each file.

  • Clippings may be used in Find and Find Multiple windows. If this causes you heartache, you may disable the feature using this expert setting:

    defaults write com.barebones.bbedit ClippingsWorkInFindWindows -bool NO

  • When you use the right-arrow key to navigate over a closing delimiter (right paren/brace/bracket/curly quote), the opening delimiter will be briefly highlighted. If you wish to turn this off, there's an expert pref:

    defaults write com.barebones.bbedit FlashBalancePointsWhenNavigating -bool NO

Changes

  • Unix script output logs now live in ~/Library/Logs/BBEdit/, either in "Unix Script Output.log", or, in the case of script-file-specific log files, in ~/Library/Logs/BBEdit/Unix Script Output/{script name}.log.

  • "Hard Wrap" now does, essentially, what "Rewrap Quoted Text" used to (in fact, the two were virtually identical). So, the latter command is gone, and "Hard Wrap" brings up a sheet for performing a quoting-character-aware wrap. (If there are no quote-prefixed lines, then this behaves identically to the old Hard Wrap.) Note, also, that there is now only an option for wrapping to a specific character width.

  • The Markup Builder panel now provides additional options for choosing a file when editing URI attributes (such as href): a popup menu allows you to choose from files in the same directory as the front document, including submenus for folders (one level down). You can also easily get at recently used files, as indicated. The "Other..." command will open a file picker for choosing an arbitrary file.

  • The text view toolbar has been slimmed down and further simplified. The pencil has been consigned to the dustbin of history. The toolbar itself is now only one row of text, and displays the document's path (with the associated popup menu), as before. The "Last Saved" indicator has been moved into the status area at the bottom of the text view, and may be switched on and off globally, using the "Document save date" preference in the Appearance preferences.

  • "\n" is now a synonym for "\r" when searching and replacing, with or without Grep; use either when you wish to find or replace with a line break. Note that you should avoid considerations of what the actual bit pattern is; BBEdit uses a particular internal representation which is an implementation detail. If you want to search for or replace with a line break, use \r or \n and allow line break translation to do its thing; do not second-guess the system and assume a particular bit pattern.

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

    defaults write com.barebones.bbedit LegacySearchStringEscapeMapping -bool YES

  • Support for CVS has been removed; the "CVS" menu no longer exists. Note that you can continue to use BBEdit as a commit editor and diff helper for CVS, with the appropriate CVS configuration variables referring to the bbedit and bbdiff tools, respectively; this is left as an exercise for the reader.

  • "Convert to ASCII" is gone as a discrete menu command; its ability has been rolled into "Zap Gremlins". ("Replace with Code" will replace with the nearest ASCII equivalent.)

  • Added a new setting to the Keyboard preferences: "Allow Page Up and Page Down keys to move the insertion point". It's off by default, which is the standard Mac behavior. Refugees from other platforms may feel more comfortable if it's turned on; doing so allows the insertion point to remain in the same position relative to the top and bottom of the window (which entails changing its position in the text) when scrolling via Page Up or Page Down.

  • There's new iconography for the toolbar and navigation bar.

  • Added a padlock next to the document save date, to indicate the document lock state. This takes the place of the old pencil. (Side note: "If you don't, I'll poison your dinner" is a compelling argument for a feature request, but can typically only be used once.)

  • Shell worksheets get a new icon to indicate sudo mode.

  • There's a new preference in the Appearance preferences: "Document Lock State". This controls whether the padlock indicator is visible in the status area (next to the save date). When the padlock is visible, you can click on it to unlock (or lock) the document.

  • In the Multi-File Search window, you can now choose Zip archives (or any file that looks like a Zip, including things like EPUB) as the source for a multi-file search (or replace).

  • There are three new commands on the Edit menu: "Move Line Up", "Move Line Down", and "Delete Line". These are single-command (and thus single-keystroke) equivalents for editing operations that might otherwise require multiple gestures. The keyboard equivalents can be modified in the "Menus & Shortcuts" preferences as usual. NB: Control-up-arrow and Control-down-arrow previously were used for scrolling the document using they keyboard. If you wish to restore that behavior, clear the keyboard equivalents for Move Line Up and Move Line Down, or set them to something else.

  • Enhanced the detection used by "Open Counterpart" and the Counterparts navigation bar item to include all files whose file names begin with the base name of the active document's file. The Counterparts navigation bar item now drops a menu with all of the available counterparts. There's a new keyboard equivalent in the "Navigation Bar" section of the Menus & Shortcuts prefs, so that you can use the keyboard to open the Counterparts menu, if desired.

  • The Find Differences results windows no longer display the pencil next to the new and old file names.

  • In addition to toggling Soft Wrap, the Text Display menu lets you change the wrap mode. Those options are now also in the toolbar's Text Options menu.

  • The legacy AutoAssignCommandKeysToWindows expert preference (which was deprecated in 10.0 and actually never documented) has been removed, along with all of the machinery that used it.

  • The search logic in "Open Counterpart" has been improved to cover cases that weren't previously served by strict project-searching logic. Consider this arrangement of files and folders:

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

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

    defaults write com.barebones.bbedit CounterpartSiblingSearchNames -string "foo*, bar, *mumble*, wumpus"

    Any whitespace surrounding names is stripped.

  • The items listed in the "Menus & Shortcuts" preference pane get a subtle placeholder when no keyboard equivalent is assigned.

  • In addition to showing counterparts, the "Counterparts" navigation bar item now shows files that are in the same directory as the active document (as long as it exists on disk).

  • The "Project" item grouping in project windows can now be collapsed. The "Currently Open Documents" list will take up the slack.

  • More improvements to Open File by Name:

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

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

  • Internal support for Dreamweaver integration has been removed. You can still open Dreamweaver files in BBEdit (or vice versa) and edit them as usual; both applications can cope with changes taking place on disk while the file's open. Dreamweaver will probably complain that the version of BBEdit you're using is not compatible. To resolve this, go to Dreamweaver's preferences, select "File Types/Editors", and turn off the option labelled "Enable BBEdit Integration". If you wish you can then configure BBEdit as an editor for files matching the ".html" extension, or any others that you wish to edit with BBEdit.

  • When creating new markup (as opposed to editing existing elements/attributes), the markup panel will now remember the attributes that you used to create a given element. The memory is keyed by the element name, so attributes are remembered separately for the different elements that you use.

  • If there are no other alternatives, Open File by Name will figure out whether the front document is contained within a configured web site. If so, the site's root will be included in the file search.

  • BBEdit no longer promises or supplies Mac Roman text to the clipboard, nor looks for it. Since most Mac OS X applications now supply Unicode or UTF-8, this should have no visible effect.

  • There has been extensive internal rework, to remove cruft and pave the way for future improvements.

  • When considering dropped files for insertion or linking, the application will now inspect their contents in cases in which the file metadata doesn't indicate that it's a text file.

  • The Unix Script Output log file is now stored as UTF-8 with no BOM. (The on-disk encoding of this file is an implementation detail that you should not rely on.)

  • There's now a kill switch for default filename extensions:

    defaults write com.barebones.{bbedit,textwrangler} EnableDefaultFilenameExtensions -bool NO

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

  • Results exported as text now include the full path to the file(s) in question, relative to the home directory if possible.

  • When using "Open Selection" or choosing an include file from the Includes menu in the navigation bar, BBEdit will use the same logic as Open File by Name to locate the desired file. Open Selection will no longer open the "Open File by Name" window (which used to require an extra step to open the desired file), unless there's more than one match found for the specified file name.

  • Changed the factory default setting for FixedWidthFontSmoothingThreshold to 8pt, so that Monaco 9 looks reasonable when antialiased (especially on retina displays).

  • The appearance of the file lists in disk browsers and project windows has been updated.

  • Made two behavior changes to Unix tool discovery: first, if the tool's override path is set to /dev/null, BBEdit will pretend that the tool doesn't exist at all, effectively disabling any features that depend on the tool. Second, if the override preference exists and is an invalid path, BBEdit will give up immediately rather than attempting to locate the tool in your PATH or elsewhere.

  • When doing an "Open Selection" on a full path ("/path/to/something"), home-relative path ("~/path/to/something") or URL, the indicated item is now opened immediately if found, rather than requiring a trip through the Open File by Name window.

  • The "modified" property of a document is now mutable while the document is being created. This allows constructions such as:

    make text document with properties {contents:t, modified:false}

  • When running on 10.8 and later, BBEdit now uses the system-provided Notification Center for completion of certain operations, unless Growl is installed and running, in which case it will use Growl as before.

  • The "Show Clipboard" command on the Edit menu has been retired. It now lives on a farm upstate.

  • When entering full screen mode, the application figures out whether the window width should be increased to take up the full screen width, or not, based on the width of the window relative to the width of the screen that it's on. The threshold at which the window is made to take up the entire screen width can be set thus:

    defaults write com.barebones.bbedit FullScreenWidthThreshold -float 0.65

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

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

  • Counterpart discovery (for "Open Counterpart" and the Counterparts navigation bar item) can now use an open project document to locate eligible files.

  • The expert preference which reports single-file Replace All results (using a sheet in the editor window) is now off by default. If you miss it, the following expert invocation will turn it on:

    defaults write com.barebones.bbedit ReportReplaceAllResults -bool YES

  • If the xcrun tool is available, BBEdit now consults with it when looking for Unix helper tools (e.g. svn) in the absence of an explicit expert override.

  • If a Worksheet takes more than 0.5 seconds to complete its task, it will post a notification when it returns to idle. The minimum time to wait may be controlled via expert preference:

    defaults write com.barebones.bbedit WorksheetNotificationMinimumRunTime -float [delay in seconds]

    Setting this to 0 will disable the notification altogether.

  • Control-n and Control-p are synonyms for previous/next when navigating the list of results in Open File by Name windows.

  • Control-k is a synonym for Command-Delete (a.k.a. clear field) in Live Search.

  • In the Open File By Name window, holding down Option while clicking "Open" (or pressing "Return") will ask LaunchServices to open the selected items.

  • App state restoration has an indeterminate progress dialog, hopefully hinting that "No, we're not hung; we're busy".

  • The "current process" indicator in shell worksheets now has a spinny thing so that you know something's running, and a clicky thing if you want to stop the running thing indicated by the spinny thing.

  • When running a shell script from the shebang menu, additional arguments are passed along to the command, so things like:

    #!/usr/bin/env python --version

    will return

    Python 2.7.3

  • Update the internal HTML5 language spec to the current state of the working group's "living spec" as of November 14, 2012. It will surely be completely outdated by the 15th.

Fixes

  • Leading and trailing whitespace and line breaks are now stripped from string values in codeless language modules, to resolve situations in which a multi-line formatted pattern using (?x:...) ended with one or more carriage returns after the closing parenthesis, which would in turn cause the pattern to not function as intended.

  • Fixed bug in which certain malformations in codeless language modules were not detected early enough to prevent them from causing problems later on.

  • Fixed bug in which "Run in Terminal" and "Run in Debugger" were inappropriately sticky for scripts run from the Scripts or Apply Text Filter menus.

  • Made a change to reduce the amount of time spent loading names from tags files for syntax coloring.

  • Fixed bug in which the #FILE# placeholder used an incorrect name when the document whose name should have been used was open in a project window.

  • Fixed a bug in which the Multi-File Search window did too much work in situations where documents were being opened (or closed) at high frequency.

  • Fixed bug in which changing the Soft Wrap Text settings (Page Guide/Window Width/Character Width) in per-language preferences would set them to the wrong value.

  • Fixed a bug in which Replace All operations consumed far more memory than was appropriate, which in turn would contribute to prematurely running out of memory while processing a large quantity of files.

  • Fixed bug in which the UseEscapeKeyAsCompletionTrigger expert preference didn't work. Also, its behavior has been changed such that when it is turned on, the Escape key is no longer functional as an Emacs command prefix. This eliminates the need to strike Esc twice in order to trigger completion (when the expert preference is in use).

  • Fixed bug in which the "Comment" and "Uncomment" buttons in the Utilities palette were incorrectly disabled. They're now coalesced into one, Un/Comment (which tracks the change to the menu structure for 10.1.1) and it behaves correctly now.

  • Fixed bug in which the window shape saved by "Save Default Project Window" was not honored when opening a folder or making a new project from scratch.

  • Fixed missing Command-key modifier on the keyboard equivalent for Un/Comment.

  • Added a few more types to the list of things that BBEdit recognizes as text documents.

  • Made a change to avoid tickling a bug on 10.6.x which could cause stalls or a crash while saving file references in projects and a few other locations.

  • Attribute values that look like they're dynamically generated are now skipped by the HTML syntax checker, in order to suppress the errors that would result.

  • Fixed a bug in which the #! line in unix filters run from text factories was parsed incorrectly when the Unix filter's source file was not marked +x (executable).

  • Fixed crash which would occur when cancelling a download of the user manual.

  • Corrected about-box link to Zocalo Coffeehouse; added a credit line for Funranium Labs (the Black Blood of the Earth).

  • Fixed a bug in which opening (by pulling down) the Open Recent menu would mount remote volumes or disk images when it was really not necessary. That work is now deferred until you actually choose an item from the menu.

  • Fixed internal exception and subsequent crash which would occur when trying to save a Grep pattern (via the Setup window) with an empty field.

  • Fixed bug in which a now-unused preference from an old version would cause the toolbar to remain visible, even when all of the gating preferences were turned off in the Appearance prefs.

  • Fixed bug in which included files were not properly located when specified relative to the site root of a configured web site.

  • Fixed bug in which Preview in BBEdit didn't work correctly for Lasso documents.

  • Fixed bug in which contextual-menu markup commands were not available in Lasso documents, even when the selection range was in an HTML tag.

  • Fixed bug in which saving a document would cause its name to reset in the project list, in cases where it had previously been renamed using the "Rename" command.

  • Fixed a bug in which file locators (used in projects and other places) would inappropriately carry over a legacy-format alias record.

  • Fixed a bug in which folders in project windows would sometimes refuse to twist open after opening the project.

  • Fixed bug in which "Copy as Styled Text" would cause a crash when applied to certain files (dependent on syntax coloring).

  • Fixed bug in which "Replace All" or "Replace to End" would fail in cases where the most recent direct search from the Find window was a "Find Previous", and there were no matches between the start of the selection range and the beginning of the document.

  • Resolved an incorrect icon reference in the application properties which caused blank icons to be displayed for TextWrangler documents; and removed some inappropriate UTI exports.

  • Fixed bug in which New (with Clipboard) incorrectly forced the document's language to "(none)" and thus interfered with automatic language guessing.

  • Fixed bug in which the esc-q Emacs keybinding brought up the Hard Wrap options sheet, instead of just doing it.

  • Fixed a pair of bugs that conspired to mangle windows located on a display which got disconnected; typically they would end up back on the main display, but at an unusably tiny size.

  • Armorplated the suspected site of a nonreproducible crash.

  • Fixed crash which would occur when decoding AppleDouble files from within Zip archives, and the file was missing an entry for the resource fork.

  • Fixed bug in which using the "Close" contextual menu to save and close multiple documents would result in the documents being neither saved nor closed.

  • Fixed bug in which the file type filter setting was not correctly retained when closing and reopening a project. Along the way, cleaned up some glitches in the file filter menu.

  • Added some missing search keywords for items in the Application preferences.

  • Added comment strings to the Verilog and VHDL language modules.

  • Changed the embedded Textile preview script to properly use UTF-8 I/O so that non-ASCII characters preview correctly.

  • Fixed a crash when starting up with items in our Startup Items folder and DragThing running.

  • Fixed crash which would occur when using a service to open items while DragThing was running (and in a couple of other situations).

  • Fixed a crash which would occur while trying to locate ctags files relative to a file that had been implicitly created by a command of the form bbedit ../path/to/some/file.txt, when the file in question didn't exist yet.

  • If the front editing window is in full screen mode, then Unix script output will be opened into the front window, rather than into a separate window (and separate space). (In cases where the Unix Script Output window is already open, there will be no change to document grouping or ordering.)

  • Fixed bug in which windows created while BBEdit was in full screen mode would end up with their title bars under the menu bar after exiting full screen mode.

  • Completion is now allowed in "content" runs of TeX documents.

  • When the HTML function scanner sees a <script> tag missing an explicit language qualifier, it will now assume the element to contain JavaScript, so that JS function detection and folding work correctly within.

  • Fixed bug in which C++ typedefs containing namespace declarations would confuse the function scanner.

  • Attempted workaround of an OS bug in which keyboard events registered during or close to the end of a three-finger trackpad drag (to select text) were lost. So, if you did a three-finger drag and hit Cmd-X too quickly after releasing the trackpad, the desired Cut operation would not take place.

  • Fixed bug in which using "Save to FTP Server" on an open document would not correctly update the information in the Currently Open Documents list (or in the project).

  • Added "rgba" to the CSS keywords list.

  • Fixed bug in which automatically generated CSS markup would inappropriately use tabs for indentation, instead of spaces, when "Auto-Expand Tabs" was turned on in the document being marked up.

  • Fixed crash which would occur when trying to manipulate certain properties of a browser window when no document was being viewed.

  • The number of arguments passed to Unix command execution is now limited by the total amount of data that's allowed to be sent to the pipe (64K - 1), and not a hard number of arguments. This resolves a "too many arguments" error that would occur when trying to perform certain large-scale operations on discrete files (such as svn revert on a lot of selected files in a results list).

  • The inline collapsed-text "pill" indicator is now scaled appropriately for a larger range of font sizes (and looks more attractive at all sizes).

  • Fixed crash when running a text factory containing one or more "Run Unix Filter" actions.

  • Fixed a bug in which certain fonts could not be used for printing.

  • Fixed bug in which the sources list in the Multi-File Search window wasn't highlighted with the proper colors when the window (or the application) was not active.

  • fish is added to the internal list of shells that are run as login shells (for worksheets). Note that at this writing, fish isn't actually usable in worksheets, but these settings will be necessary for when it's compatible.

  • If necessary, BBEdit will now ask the installed svn for a file's status, in cases where no .svn directory is present. This allows the built-in subversion commands to work correctly with Subversion 1.7 and later.

  • Check for certain (very short) but canonical strings at the beginning of a possible text file. This corrects some cases in which a UTF8 check of the partial file can end up falsely reporting the file as non text, in case the file contains a lot of valid multi-byte UTF-8 characters, and the check ends on a character boundary.

  • Fixed bug in which the results of "Find Definition" were not properly sorted by line number as they should have been.

  • When enumerating an Xcode project, eliminate duplicates to avoid duplicate results in the Open File by Name window (and other places).

  • Fixed bug in which soft-wrap indentation preferences were not correctly applied when printing.

  • Improved guessing of Objective-C/C++ files.

  • Fixed bug in which the last line of the selection would be skipped entirely when doing a "Print Selection", if the selection did not end with a line break.

  • Fixed bug in which ridiculously long strings were not selectable in the search history menu.

  • "Select Line" and "Select Paragraph" are now disabled in the Find and Multi-File Search windows.

  • Fixed bug which allowed disk browser windows to be collapsed to zero width.

  • You can now use "Replace to End" when the Find window is in front (assuming that the window immediately behind is also an eligible target for a Replace All operation).

  • Truncate the file name in the "Run..." sheet (on the #! menu) to avoid wrapping in the control.

  • Fixed impedance mismatch in the scripting system internals, in which testing for uniqueness of an item's name was case sensitive, but resolving references to items by name was case insensitive, leading to errors when trying to do things like compare two open documents with names differing only in case. (Note that as a side effect of this fix, BBEdit will be strict about resolving references to objects by name; the case that you supply must match the case of the desired object.)

  • Fixed bug in which the Markup Builder panel would appear in outer space if the insertion point (or selection range) had been scrolled out of view.

  • Fixed bug in which the "Apply Text Filter" head menu couldn't be hidden, and corrected the name in the Menus & Shortcuts preferences.

  • Added plurals for project classes in the scripting terminology.

  • Added "!" to the list of characters which is considered when deciding whether a string needs to be shell-escaped before sending it to the Terminal.

  • Fixed bug in which the HTML checker was looking for the wrong kind of delimiter in 'headers' table attributes.

  • Fixed bug in which the "Run selection only" option in the Run... command on the #! menu had no effect. Note that along with this fix there's a behavior change: if you have an eligible selection, the "Run" (no ellipsis) command will run the selection; otherwise it will run the whole document. This is different from the previous behavior, in which the "Run selection only" switch was sticky (and since it was invisible, you never knew what would happen).

  • When doing "Find in Reference" URL lookups, only the symbol name (and, if used, the language name) are encoded with percent escapes, rather than applying them to the whole URL string. This way, you can use URL metacharacters in the template string (such as "#") and they'll work.

  • Fixed formatting of <script>, <style>, and other tags with special content considerations when using a profile (including the "Pretty Print" option).

  • The UseNumericKeypadForCursorMovement preference still works, but since there's no GUI for it, changes to it can only take place outside of the application. Such changes are now correctly detected. Also, there's now notification feedback for toggling the setting on the fly (which can be done using Option-Num-Lock [the upper left key on the numeric keypad]).

  • Canonicalize filter names for the "Apply [Last] Text Filter" command.

  • Fixed bug in which the ProjectsOpenItemsOnSingleClick expert preference was not honored for the Project and Recent lists, as it should have been.

  • Corrected bug which caused the Text Encodings preference pane to display stale values after Restore Defaults, unless the app was quit and restarted.

  • If you dismiss the Markup Builder panel while the combo box is open, we now hide the combo box.

  • Fixed bug in which certain tags which should have been allowed as selections in the markup panel (for creating a new tag via Edit Markup) were not.

  • Corrected the scripting dictionary to clarify that the search string and replacement string properties are returned as Unicode text; and the search string script and replace string script properties have been removed, since they haven't been used for a long time (and access to them didn't work).

  • Fixed bug in which the line number bar didn't always refresh correctly when adjusting the line spacing preference.

  • When creating a new HTML document using a Unicode encoding, non-ASCII characters in the title are no longer entity-escaped, since they don't need to be.

  • Fixed bug in which list views with keyboard focus wouldn't allow keystrokes that didn't belong to them to propagate to the rest of the system.

  • A bug in the python module caused folds to start in the wrong place when a foldable, non-comment block began with a comment.

  • A Java file's fold points and function popup would become confused if, under certain circumstances, a class instance was created and properties were accessed all in the same statement, such as with new Foo(new Bar(bat).baz()).

  • Attempts to change the soft wrap mode to an invalid value using the scripting interface will now report an error.

  • Fixed crash which would occur when leaving certain terms blank in a file filter.

  • Fixed bug in which the "Edit" button for editing the known_hosts file in case of an SSH host verification failure didn't work on newer versions of the OS.

  • "Save As" is now disabled when the active document is "synthetic" (derived from the contents of a Zip archive or tarball, or downloaded directly from a URL). Use "Save a Copy", which behaves correctly in ways that "Save As" did not when it was inappropriately enabled.

  • Removed inappropriate attribute specifications from the <script> tag definition in the HTML 4.0/4.01 syntax checker definitions.

  • The font panel accessory view (with the tab width setting) no longer comes and goes whenever the font panel's event target changes; this in turn eliminates the tendency of the font panel to "shimmy" when closing or opening a bunch of documents.

  • Fixed bug in which the per-language tab width setting wasn't properly applied when changing a document's language setting.

  • Added large and high-resolution icons for the application.

  • When importing the clipboard from another application, we now rotate the clipboard ring (in a fashion similar to what happens when you Copy; so no rotation occurs if the current slot is empty). This way, "Paste Previous" can be used with text copied from other applications.

  • When enumerating a project for Open File by Name, duplicate entries are eliminated in order to avoid duplication in the results.

  • Fixed crash which would occur when quitting with a project window open, and a document with unsaved changes was open (not in the project window) and "Restore unsaved changes" was turned off in the Application preferences.

  • When running a shell process (for #! scripts and other purposes), we take a moment to grab the login environment and use that to set up the shell environment for the script being run. This should (among other things) ensure that $PATH and other important environment variables are set correctly when running Unix scripts and commands from within the application.

  • Fixed bug in which window split options were inappropriately mirrored into other windows (e.g. results or disk browsers).

  • Fixed bug in which in-document token completion didn't work for Fortran-9x documents.

  • Fixed bug in which site-defined environment variables were not set for #bbinclude Unix scripts when they should have been, and were instead passed through as "undefined".

  • Fixed a bug which caused the delete key to behave oddly when editing an href in the Markup Builder panel.

  • Fixed bug in which windows containing editing views (including project windows) were allowed to be made narrower than was healthy.

  • Fixed crash when using the contextual menu to create attributes.

  • Prevent Worksheets from executing commands that start with an opening paren, but do not end with a closing paren.

  • Fixed a memory leak managing a project's recent items.

  • Fixed a bug which cased Worksheets to not save if CWD could not be determined at save time (due to broken pipes, or a busy worksheet).

  • Corrected a bug which caused the Menus & Shortcuts pane to display stale keystroke data until the window had been recycled.

  • Made it possible to use the Menus and Shortcuts pref pane to assign key equivalents to scripts nested in folders.

  • Fixed a bug which made clearing or assigning key equivalents which contained glyphs unreliable.

  • The Patterns setup editor and find menus menus are kept in sync. Items may be rearranged in the Setup window, and the menu will immediately reflect those changes.

  • Removed some obsolete floaters from the AppleScript dictionary.

  • Disk Browsers expose a r/w "root path" property in the scripting dictionary. It does what it sounds like it does.

  • Fixed a bug which caused Live Search to mis-report the hit count if a match abuts its own doppelgänger.

  • replacing all the text in a view via the scripting interface (or certain other mechanics) no longer scrolls to the end.

  • Fixed crash which would occur after copying diffs to the clipboard, or exporting them to a text file.

  • When exporting results from a Find Differences window or results browser, the application now provides a default file name.

  • Results exported from a Find Differences window are now written with Unix line breaks, instead of legacy Mac OS.

  • When exporting results from a Find Differences window or results browser, the resulting file will only have its file type and creator assigned if the application determines that the file name indicates that it's not a text file.

  • Fixed a hang which could occur if a codeless language module had a grep pattern that returned a 0-length match.

  • Disable the Replace All command if "Selected text only" is checked, and the target view has a rectangular selection.

  • Disable all the Find buttons if the search string is empty.

  • Clicks in the text view while the completion panel is displayed both dismiss the completion, and move the insertion point.

  • Zip browsers' nodes are sorted alphabetically, not by pack date.

  • Changes to the File Filters are reflected immediately in Project Windows.

  • Shift Right only adds whitespace to lines that contain non-whitespace characters. The new behavior is keyed to an expert preference. It is still the default; but if you prefer the previous behavior, you may enable it:

    defaults write com.barebones.bbedit AllowShiftRightToIndentWhitespaceOnlyLines -bool YES

    This preference can also be set per-language in the usual fashion, by adding the language's name to the preference key:

    defaults write com.barebones.bbedit AllowShiftRightToIndentWhitespaceOnlyLines_C++ -bool YES

    (The Expert Preferences help has been updated to include this information.)

  • Changed case of and added a couple additional values for PHP ENT* attribute completions.

  • Fixed a bug which caused the functions popup (and floater) to display callouts regardless of the preference setting.

  • "Use Selection for Replace" with an empty selection clears the replace string.

  • Fixed case in which using "Replace" or "Replace & Find" in the Find window would replace the entire contents of the document with the replacement string, in specific cases involving a zero-length Grep match and the document not having a selection range.

  • If a remembered window was full screen when quitting, it is restored to that state when starting up.

  • When restoring application state which includes a zip browser, we open a zip browser instead of a disk browser to the parent folder.

  • When saving a new untitled document, we now make an attempt to pick a reasonable default directory for the save panel, when a disk browser or instaproject is immediately behind the document's window.

  • Auto-folds can be collapsed from either start or end indicators.

  • When saving a file with "Save a Copy" we attempt to create the copy with same permissions as the original file.

  • Made a change to improve performance when filtering ctags completions by language.

  • Wordsmithing.

  • Fixed a problem where block commented code ended up with an incorrect selection.

  • Corrected a bug which would cause the Preferences window's panel selector and panel content to get out of sync.

  • Corrected a long-standing bug which made it impossible to clear an existing value (including placeholders) from the Markup Builder Panel.

    Is it too early for scotch?

  • If you enable Typographer's quotes, BBEdit will only insert them in stuff that looks like prose. This allows you to have fancy quotes in the comments and strings in your C files, but still use the real deal in the code parts. (also works in HTML, etc.)

  • Fixed bug in which synthetic project documents (created by dropping a folder on the application to create an instaproject) would report an empty string as their name, which confused internal mechanics and would trigger scripting errors when attempting to access the document by reference (for example, during a documentDidOpen attachment event).

  • New documents created as output from text transformations (e.g. Process Lines Containing) will follow the same rules as all other created or opened documents, when deciding whether to make a new window or not.

  • Fixed a bug which could cause the scrollbar size/position to become stale when cutting text.

  • Command-backspace is now an alternative to Command-D in the "Save changes before closing" dialog.

  • Fixed a bug which would cause the vertical scrollbar to get out of whack if BBEdit was tracking changes to a file on disk, and the file got substantially shorter (like less than one screenful).

  • Corrected horizontal scrollbar calibration when dealing with long lines containing characters which required glyph substitution in the current display font.

  • Assigning or removing a shortcut to a submenu no longer collapses the parent node. While I was at it, selecting a new top menu resets the scroll position and selection in the right pane, so things look much neater.

  • Call -deselectAll: when loading each pane of the Setup editors. This looks nicer, IMO.

  • Shell worksheet views get Last Saved and Text Statistics in the status bar.

  • Holding-down the Option key when double-clicking, pressing the Return or Enter keys, clicking the Open button, or closing your eyes and thinking of ponies, will open an additional FTP/SFTP browser window if the selected item is a directory. (Just like it says in the manual.)

  • Fixed bug in which the application didn't look for Application Support/BBEdit/PreferenceData/ in your Dropbox the way the documentation said it did.

    To recap the rules, the following locations are used, in order:

    • If Dropbox/Application Support/BBEdit/PreferenceData/ exists, BBEdit will store outboard preferences files there.

    • If ~/Library/BBEdit/ exists, preferences files will live there. (This is the factory default location for BBEdit 10.0 and later.)

    • If ~/Library/Preferences/com.barebones.bbedit.PreferenceData/ exists, it will be used. Note that the location in ~/Library/Preferences/ is only for compatibility with legacy (9.x and earlier) BBEdit installations. If you have an active com.barebones.bbedit.PreferenceData folder there, you should move and rename it to ~/Library/BBEdit/ or move and rename it to Dropbox/Application Support/BBEdit/PreferenceData/, as appropriate.

    • If no appropriate folder is found, BBEdit will create ~/Library/BBEdit/ and store preference data there.

    This only applies to the folder containing non-preference data files. The com.barebones.bbedit.plist file is managed entirely by the system, and you should not move or rename it. (There's no way to share preferences settings using Dropbox, in other words.)

  • Fixed bug in function generation for Fortran (yes, really) which caused Go -> Functions -> End to fail on the last function in the file.

  • Made some changes to guard against the suspected cause of a crash while attempting to arrange windows under some conditions.

  • Fixed bug in which the function menu would navigate in the wrong window in situations where a document was opened from a Search Results window into an existing multiple-document window.

  • Added some HTML5 block elements to the default format profile (used for the Pretty Print option in Markup -> Utilities -> Format).

  • Fixed crash which would occur when trying to use the scripting interface to create something in a project document that didn't make sense.

fin