TextWrangler 5.5 Release Notes

TextWrangler 5.5 adds a variety of new features, performance improvements, and user-interface refinements, as well as fixes for reported issues.

For information on changes made in previous versions, please see the release notes archive.

For detailed information on using any of TextWrangler's features, please refer to the user manual (choose "User Manual" from TextWrangler's Help menu).


TextWrangler 5.5.2 requires Mac OS X 10.9.5 or later, up to macOS 10.12.6 "Sierra". TextWrangler is not however compatible with macOS 10.13 "High Sierra" or 10.4 "Mojave", and will not run under macOS 10.15 "Catalina".


  • There's a new settings group in the Appearance preferences: "Sidebar". The controls here determine the default behavior of the files sidebar in editing, project, and Differences windows.

    Note: Using "Save Default Text Window" or "Save Default Differences Window" sets the default visibility for the sidebar in windows of each respective type; this always overrides the preference.

  • There is a new folder-comparison option in the Find Differences dialog box: "Only compare items in common". When you turn it on, TextWrangler will only list items in the results that exist in both of the folders being compared. This option is also available to the scripting interface.

  • There is a new setting in the Text Colors preferences: "Differences". This color setting determines how differences are highlighted in editing views when you select them in a Differences window. (The color for differences within a line is derived from this, by darkening or lightening as needed.) If a custom color scheme does not include a Differences color, TextWrangler will use a dark gray or light gray (depending on the scheme's background color) instead.

  • Synchro Scrolling is now enabled (and on by default) for Differences windows: when turned on, scrolling either text view in the window will scroll the other one. Synchro Scrolling can be turned off for Differences windows; and if you would like it to be off for all new Differences windows, turn it off and then choose "Save Default Differences Window" from the Window menu.

  • Things that are highlighted in the text at various times (matches for selected text, Live Search results, spelling errors, and diffs) are now marked in the view's vertical scroll bar. The tick marks indicating matches for selected text are off by default, but may be turned on in the Editing preferences, if desired.

  • The GUI setting for extra space in text views, which was removed in 10.0, has been restored to the Editing preferences.

  • There is a new preference in the Keyboard preferences, subordinate to Emacs emulation: "Enable meta sequences". This is off by default, so that the Escape key is not intercepted and can be used to exit full screen mode when running on OS X 10.10 or later.

    To restore the previous Emacs emulation behavior (in which command sequences beginning with a press of Escape can be used), turn this preference on, at the cost of not being able to use the Escape key to exit full screen mode.

  • Added control to the Editing preferences so that instances of the selected text may be highlighted if desired, rather than underlined.

  • The FTP/SFTP connection panel now has a Path field, so you can see the directory that will be set once the connection is completed.

  • The FTP/SFTP connection sheet now has an explicit field for specifying the port to use, if you want to connect to an alternate server port.

  • The "Insert Folder Listing" command now provides options to control whether the generated listing is hierarchical (the original style), or flat (which lists the full path of every item). The "Include hidden items" option is back after a long absence, as well. These settings are saved, and will apply when dragging a folder in to an editing view as well.

  • When piping data into the edit tool, you can now add a line number specifier, and the and the insertion point will be placed at the start of the indicated line in the resulting document. For example:

    ls -la | edit +5

  • Added a new command to the Edit menu: Start Speaking. This command will speak the selected text in the document; if there is no selection range it will speak the entire document. If the document is empty, this command is disabled. When speaking is in progress, this command reads "Stop Speaking" and will stop the in-progress speech.

  • Added new command to the Edit menu: "Paste & Match Indentation". When pasting text, this command will attempt to indent it to the same point as the line on which you're pasting (or if that line is empty, the most recent non-empty line). The factory default for this command is Cmd-Opt-Shift-V. You can change the keyboard equivalent using the Menus & Shortcuts preferences.

  • The file info panel (used for text statistics and the Document Status navigation bar item) gets a new "location" field showing the URL to the file, and "Copy" buttons for the full path and the location.

  • Clicking on the cursor position display in the status bar now opens a popover that you can use to go to another line. (The popover stays up until you click outside of it or press the Escape key, allowing you to browse the file by line number.)

  • Added "New Text Window" to the application dock menu. This is equivalent to the "New Text Window" command.

  • By default, the Open panel implements the standard system behavior of displaying the same folder that was viewed the last time you used the Open command. If you wish, you may instead have the Open panel display the directory containing the active document (or some other location apposite to the front window):

    defaults write com.barebones.textwrangler OpenPanelShowsFrontDocumentDirectory -bool YES

    If no documents are open and a suitable location could not otherwise be determined, the Open panel will show you the last-used directory.

  • Added x-show-tab-stops as an application-specific EditorConfig key. (Answer for @pborenstein: "not too hard.")

  • Added a new command to the Lines submenu on the Edit menu: "Duplicate". This will duplicate the lines which intersect the current selection range.

  • Added Toothpaste as a factory-supplied color scheme. Toothpaste was designed by Cat Noone and is included with her kind permission.

  • Added credit for Toothpaste to the About box.

  • "Find Differences" gets two new options in the dialog box: "Ignore blank lines" and an "All" option in the "Ignore spaces" group. These operate as you might imagine: "Ignore blank lines" skips differences that consist entirely of blank lines, and turning on "All" causes all whitespace to be ignored during comparison.

  • The difference window AppleScript class now has a compare options property. You can use this to query or manipulate the options that are applied when comparing files in that window. Changes to the options will take effect immediately.

  • The Editing preferences have been rearranged slightly; there is a new setting to control whether spelling errors appear as tick marks in the scroll bar, and it is collected with the previous setting that controls whether matches for the selected text appear as tick marks in the scroll bar.

  • Added support for the C binary notation to the C-family language syntax coloring.

  • Added support for Github-style fenced codeblocks to the Markdown module. At this point, we simply recognize them as a codeblock for purposes of code folding and syntax coloring. No additional syntax coloring is done in the language of the fenced code.

  • Updated the internal Markdown previewing script to convert github-style fenced codeblocks into Markdown's traditional code block output. Thus this:

    while (pnoies) {
        alert("glitter and rainbows!");

    will preview as this:

    <pre><code>while (pnoies) {
        alert("glitter and rainbows!");

  • Custom keyword files (those that live in Application Support/TextWrangler/Custom Keywords) can now use an Emacs mode line to specify their language. This addresses the case in which you want to supply keywords for a language that doesn't have any filename extension mappings. For example. ".php" maps to "PHP in HTML", which means that embedded PHP keywords need to be in a keywords file that maps to the "PHP" language. Such a keyword file would look like this:

    -- mode: php; --


    Emacs mode lines and blank lines in the keyword file will be ignored.

  • When an untitled document is active in a window, the window's entry in the Window menu will be annotated with some text derived from the beginning of the document's contents.


  • The internal PCRE library has been updated to the latest "stable" version of PCRE (8.3 plus maintenance updates; see the about box for the exact version). There have been changes to the supported pattern syntax since PCRE 5.x, the previous supported version. Most patterns should work as-is but there is a possibility that patterns that previously worked may require adjustment.

  • The "Find Differences" dialog box has been reworked.

    The old path controls are dragged to the curb, and have been replaced with edit fields. When you choose a file, its path is entered in to the edit field. You can leave it alone, or make edits to it to choose alternative locations.

    The image to the right of each path shows a file or folder icon if the path refers to an item on disk; if the item indicated by the path does not exist, the image will show an alert icon.

    The image wells are also drop targets: you can drag a file or folder in to specify it. Finally, double-clicking in an image well will reveal the selected item in the Finder.

    The "Compare: ( ) Files ( ) Folders" switch is gone. Find Differences will figure out what you want to do based on the items you provide. (You can only compare a file to a file or a folder to a folder.)

  • The "Enable" popup menu in the Open dialog (for filtering by file type) has been removed. "Show hidden items" now affects file filtering behavior as well as making hidden items visible; when "Show hidden items" is turned on, any file is enabled and may be opened.

  • The Edit and Text menus have been rearranged, as follows:

    • All of the selection commands, except "Select All", are now on a "Select" submenu of the Edit menu.

    • The commands related to line insertion and movement are now on a "Line" submenu of the Edit menu.

    • The "Text Options" and "Printing Options" commands have been combined into a single "Text Options" command, which lets you adjust both sets of options in a single panel.

    • The spelling-related commands from the Text menu are now on a single "Spelling" submenu on the Text menu.

  • When viewing documents in Differences windows, differences ranges are now always highlighted and can be seen when scrolling through the document.

    • Only the selected top-level difference is colored using the Differences color when selected; all others are colored using a subtle gray shade.

    • When a difference containing sub-line differences is selected, all of the sub-line differences are colored using a darkened (or lightened, for dark color schemes) version of the Differences color.

    • When a specific sub-line difference is selected, it is colored using a darkened (or lightened, for dark color schemes) version of the Differences color. The surrounding difference range is colored using a subtle gray shade. None of the other sub-line differences are colored when a specific sub-line difference is selected.

  • The "Apply to Left" and "Apply to Right" commands (and buttons) no longer pay attention to the selected range(s) of text in the respective documents. Instead, they will apply the difference based on what is reported in the differences list (and highlighted using the Differences color).

  • The "Un/Comment" command has been split into two commands: "Un/Comment Lines" and "Un/Comment Block". The difference is whether commenting is done using the language's line-comment delimiter, or its block-comment delimiters. Thus, you get exactly what you asked for, without any confusion or guessing.

    The one circumstance under which your request is overridden is if you request line comments in a language which doesn't have them (e.g. HTML or XML), or request block comments in a language which doesn't support them (e.g. Perl, CSS). In that situation, the commands will behave identically and apply whichever comment delimiter is available.

    The old PreferLineCommentsWhenCommenting expert preference no longer has any effect.

  • Changed the height of the action bar (at the bottom of the sidebar) so that it lines up with the height of the status bar/scrollbar.

  • The action areas at the bottom of the sidebar in disk browsers, projects, and editing windows now use an appearance that matches the rest of the window adornments.

  • No more grip strips in the action area of the sidebar. (The effective area for dragging the splitter is the same, though, and the cursor will change in just the same way it did before.)

  • Added a preference to the "Sidebar" group in the Appearance preferences: "Show icons". This can be turned off to recover horizontal space or reduce visual load in sidebar lists.

  • Documents with unsaved changes are now indicated in the side bar with a ring around the close widget, rather than by darkening the document icon.

  • Rearranged the folder comparison options in the Find Differences dialog so that more frequently needed ones are at the top of the column, rather than being mixed in with ones that are less likely to be used often.

  • The side bar in document and differences windows is now uniformly referred to as the "Sidebar", as in "Show Sidebar" and "Hide Sidebar".

  • Made some edits to the Appearance preferences to clarify the "show sidebar" defaults.

  • The performance of Zip file filtering has been somewhat improved, and so the InspectUTIWhenFilteringZipFiles expert preference is no longer used. (The Expert Preferences help has been amended accordingly.)

  • Removed the rule between the line number bar and the fold gutter (when both are visible) for a cleaner appearance.

  • Document state storage no longer reads settings out of file resource forks, nor writes into them. If the UseResourceForkForDocumentState is turned on, the application will use extended file attributes for storing this information instead. (Any document settings stored in legacy resource forks will be ignored.)

  • Made a change so that the application no longer requests user interaction when attempting to resolve a reference to a document's file on disk (which would happen in cases where the document's backing file was deleted).

  • Language modules can now designate certain run kinds as "special" for purposes of balancing. When computing balance points (either while typing or in response to a "Balance" command), these runs are taken into account in a fashion similar to what has been done historically for strings and comments.

  • For language module developers: special balance runs are listed in the module's plist using a new key: BBLMBalanceSpecialRunKinds. This is an array of strings, each of which corresponds to a run kind generated by the module which should be skipped over when balancing (or balanced within, if the initial balancing point is inside of one of these runs). Here is an example for JavaScript:


    In this example, JavaScript regular expressions are designated as a "balance special run kind" so that they don't interfere with the balancing mechanics.

    The following run kinds are treated as special by default, so you should not include them in your BBLMBalanceSpecialRunKinds:


  • Open File by Name will now search Xcode for system framework headers, rather than relying on previous installation of the Xcode command-line tools package (which places framework headers in /System/Library/Frameworks/).

  • It is now possible to use the Escape key to exit full-screen mode (on systems that support that behavior, namely 10.10 and later). Note that in order for this to work, you must turn off Emacs meta sequence support in the Keyboard preferences.

  • When closing a window containing multiple documents, the "Close documents?" alert will now list the first few documents in the window, to help make an informed decision.

  • When using "Close All Documents" or closing a window containing multiple documents, if any of the documents require saving, you are now prompted to save them as a batch, rather than one at a time.

  • When running a multi-file Replace All, the confirmation dialog now runs as a sheet on the Multi-File Search window, rather than as an application-modal dialog.

  • "Use Selected Text for Find (grep)" and "Use Selected Text for Replace (grep)" will now escape control-character sequences (tab, line breaks, and other unprintables) in the resulting Grep pattern.

  • The horizontal scrollbar in text views is now only visible when it's needed in order to scroll the text horizontally. ("All right, I won't poison your dinner. THIS TIME.")

  • The factory default for FullScreenWindowsHogScreen is now on, so that clicking the "enter full screen" button will cause the window to take up the entire display, irrespective of whether it's a good idea to do so. You can hold down the Command key when clicking the "enter full screen" button to have the application make that decision based on the current width of the window; complete details are in the Expert Preferences help.

  • The following changes have been made to the editing view structure:

    1. The toolbar has been, uh, sent to live on a farm upstate.

      The document icon is now on the right-hand end of the toolbar and behaves as before when clicked.

      The Text Options icon is now at the left side of the navigation bar.

    2. The text used to draw items in the navigation bar, status bar, and line number bar has been desaturated a bit.

    3. The "current document" navigation bar item now shows the document's name followed by as much of the document's parent path as possible. Clicking anywhere on it will open the menu that lets you switch to other documents, as before.

    4. The document navigation arrows have been retired. "Previous Document" and "Next Document" on the View menu still work as before.

    5. The Current function/function menu has been moved to the right-hand side of the navigation bar.

    6. The overall appearance of the navigation and status bars has been cleaned up quite a bit.

  • The Appearance preferences have been adjusted to account for the changes in the navigation/tool/status bar structure.

  • Cheated some space from the Cursor Position status bar item, in order to make more room in the status bar. The "Line" and "Col" indicators are now "L:" and "C:", respectively.

  • Removed the "Tool bar" option from the Text Options sheet.

  • The sidebar close widgets for modified documents now show a darkened "x" in the center as well as a ring around the outside.

  • Differences windows now show document paths in the navigation bar, just like the other windows, and thus no longer have a toolbar.

  • Reduced the navigation bar items in Differences window text views to just the essentials.

  • The action menu at the bottom of the sidebar duplicates everything from the contextual menu, and its icon caused confusion with the new Text Options item icon, so it's gone now.

  • Compiled language modules should be updated to be line-ending agnostic; BBLMInterface.h includes a new function: BBLMCharacterIsLineBreak, which may be used to assist in transition. Codeless language modules are unaffected by this change.

  • The "Classic Mac (CR)" line ending type is now described as "Legacy Mac OS (CR)" in the UI.

  • Operations that select a line (such as providing a line number to the command-line tool, or Open Selection with a file:line specification) will now place the insertion point at the beginning of the indicated line, rather than selecting the entire line.

  • Rewrote the "Info" sheet in FTP browsers to eliminate some legacy code. Operation is as before, but the Permissions options are arranged a little more rationally and have "Save" and "Revert" buttons.

  • Changed the behavior of the "New text document" setting in the Application preferences so that a new document gets created when activating the application only when no other text documents are open. (If other windows are open when the application is brought to the foreground while already running, no new document gets created.)

  • If flake8 is installed (which you can do using pip install flake8, see the pip website for more details), "Check Syntax" for Python scripts will use it instead, since it provides better diagnostics overall.

  • Made a change so that files processed during multi-file operations are processed in order by name, which may differ from the order in which the file system provides them.

  • Made a change to improve file filtering performance in the Open panel when many documents are open.

  • Retired the internal "68K Assembler" language module.

  • TextWrangler now uses the line feed (ASCII decimal 10) as line breaks in its internal representation for text in open documents, instead of the carriage return (ASCII decimal 13) that was the standard Mac format for many years. This (theoretically) reduces the time required to open documents, since in the normal case, no conversion is necessary; it also eliminates conversion logic when copying and pasting text, since LF-delimited text is also the standard interchange format on the Clipboard.

    As before, you may use \n and \r interchangeably in search strings and Grep patterns. (The latter usage is for compatibility with old versions of BBEdit and TextWrangler.)

  • The "Hex Dump Front Document" command no longer provides a (confusing) choice of whether to dump the document's contents or its file on disk. The command will always dump the contents of the document, and now provides control over which encoding to use when interpreting the document's contents.

  • The "Hex Dump File" dialog no longer uses that awful path control.

  • Since Unix line breaks are now the norm, the -u/--create-unix options to edit are now treated the same as -c/--create, and will write out an empty file. The man page has been updated to reflect this.

  • Made a change so that Option-clicking in the close box of a window behaves as though you had pressed Command-Option-W to close all of whatever is appropriate. In practical terms, this means that it's more like "Close All Documents" when a document window is in front, which is more useful since it won't prompt you to close each multi-document window with a sheet.

  • Fold ranges in Markdown documents now include blank lines at the end of the range.


  • Made a small change to improve performance in the computations for soft wrapping text.

  • Fixed bug in which an empty selection range would be passed to AppleScript filters run from the "Apply Text Filter" command, rather than passing the entire text of the document (which is what should be done, consistent with other filter types and the documentation).

  • Made a change to improve directory scanning and file filtering performance for Find Differences folder comparisons (which also benefits multi-file search/replace and Text Factory application).

  • Fixed a case in which autosaved document data would be lost if the application crashed or was forcibly quit after the restoration of sleep data, but before an auto-save took place.

  • Corrected the error message text for error 13110 ("Export as Text" attempting to overwrite a non-text document type) and added error text for 13109 (font height exceeds text view height).

  • When the differences list has focus in a Differences window, commands on the View -> Text Display submenu will be enabled appropriately and the changes they make will apply to both of the displayed documents.

  • Command-clicking on a delimited URL will now properly handle line breaks (and subsequent white space) that may occur in the middle of the URL.

  • When performing a "Process Duplicate Lines" and not using a Grep pattern for matching, empty (zero-length) lines are now treated as equivalent (and thus duplicates) and will be removed if the options so indicate.

  • Fixed bug in which some commands on the Edit menu were inappropriately enabled in Differences windows when the list had keyboard focus, leading to possible unintentional edits (depending on choice of keyboard equivalents).

  • Fixed bug in which the "Flatten hierarchies" option in Find Differences did not actually do anything and so the hierarchies were allowed to remain resolutely unflat.

  • Made a change to reduce overhead when reading in a file during multi-file search or text factory operations.

  • Worked around OS API bug in which named historical backups would fail after changing the primary system language (in the "Language & Region" system preferences) without restarting the computer.

  • Fixed bug in which twdiff would activate the application, even after no differences were found.

  • Fixed crash which would occur when cancelling a search initiated by twfind by killing the twfind command.

  • Bookmarks listed in the Setup window will now show the bookmark's URL location as a tooltip when appropriate.

  • SFTP file transfers are now done on a background thread, with progress running on the main thread, to improve performance.

  • Made a change so that live matching is done on a background thread and updated when the work is done, rather than tying up the UI in cases where there are so many matches for the selected word that a noticeable amount of time is required to find them.

  • The current function display in the navigation bar will now replace tabs with nonbreaking spaces and collapse multiple runs of spaces to a single space, which improves display of function names in some situations.

  • Fixed bug in which replacements for capture groups in patterns containing lookahead assertions would generate incorrect (or junk) results.

  • Fixed crash which would occur in the C/C++/ObjC/ObjC++ function scanner when encountering certain unbalanced constructs.

  • Fixed bug in which double-clicking in the empty space of a palette backed by folder items (scripts, text filters, etc) would report an error instead of quietly doing nothing.

  • Made a change to correct tab width calculations when drawing non-antialiased text.

  • Live Search now does its work asynchronously, so that intermediate searches in very large documents don't tie up the search box as you type.

  • Made a change so that Open File by Name lists recent items after items which are derived from the active project (or other contextual source).

  • Fixed crash which would occur when printing with line numbers turned on.

  • Made a change to improve the performance of Quick Find and live-matching operations.

  • Enlarged the "Path:" text area in the File Info popover.

  • Fixed bug in which "Restore Defaults" in the "Menus & Shortcuts" preferences did not also reset hidden menus and items, as it should have.

  • Fixed bug in which turning on "Text Magnification" alone in the Appearance preferences was insufficient to trigger the status bar display.

  • When importing the legacy .bbcolors color scheme format, rgb(...) color values are now correctly converted using 0..65535 as the range, instead of 0..255.

  • Rewrote the logic which tests for reasons why a file might be locked. This should help correct situations in which the application inappropriately reports that files resident on remote server volumes are not unlockable.

  • Single-file "Find All" now takes a code path that avoids the multi-file search mechanics, so it will work as expected on open documents which are not necessarily seen by the system as text files (for example, SVG).

  • Highlighted ranges for "Live Search" matches no longer get cleared when the text view is activated or deactivated.

  • Fixed bug in which using the "Open in New Window" option from the Open panel would not open an additional window for a document that was already open. The underlying issue would also cause incorrect state restoration in cases where a document was open in multiple windows when the application was quit (or when an automatic state snapshot was made).

  • Corrected some missing terms in the replace AppleScript verb.

  • When opening a document into an explicitly specified window (as when restoring state during startup), if the document was already open in another window, the application will no longer move the document from the other window into the specified window (which might cause the other window to close unexpectedly).

  • Fixed bug in which incorrect time zone calculations were done on the dates of files listed in the FTP/SFTP browser UI.

  • Separator generation for "MARK:" comment callouts now works correctly in C/C++ and PHP files.

  • "Show Fonts" when a Differences window is in front now does something, and changes in the font panel are applied to both text views.

  • Added some symbols to color as predefined names in C-ish languages. (Mostly stuff from <stdint.h>.)

  • Fixed crash which would occur when an error is returned from running an Automator workflow. (This would actually happen all the time on some OS versions in which the Automator workflow API always returned an error, even when none had occurred.)

  • When wrapping text in a document with "Auto-Expand Tabs" turned on, Hard Wrap will now detab the wrapped text, instead of leaving it indented with tabs.

  • Fixed bug in which tags with name attributes (e.g. map) were not correctly recognized as internal link targets.

  • Made a change so that scripted Replace All (and Find) operations on single documents are routed directly to the document's text, rather than through the Multi-File Search mechanics, which will increase performance and reduce UI churn caused by progress windows coming and going.

  • Added "finally" to the PHP keyword list.

  • Modernized the "Insert Emacs Variable Block" sheet.

  • Rewrote the panel used for confirming saves when doing multi-file Replace All or text factory operations.

  • Fixed bug in the Text Options panel in which dragging off a popup menu's button without selecting anything from it would cause it to select the first item in the menu.

  • Fixed cases in which list items that should have been drawn in the italicized system font were not, on 10.10 and later. This affects applied differences, aliases in disk browsers, and the "empty line" items in the Jump Points and other navigation palettes.

  • Updated the Objective-C/Objective-C++ keyword lists to add __kindof, nullable, _Nullable, _Nonnull, _Null_unspecified, and a few others.

  • When Page Up and Page Down are allowed to move the insertion point, they now behave consistently with using Option-Up/Down Arrow for the same purpose.

  • Made a change to improve performance when highlighting (or clearing highlighting of) large quantities of matches for live-matched selections or Live Search results.

  • Made changes to improve performance when working in windows containing large numbers of documents.

  • Fixed bug in which displaying a bezel alert ("wrap around", "not found", etc) as the result of an operation that also dismissed the Find window would leave the front document window in an inactive state.

  • Made some changes to improve behavior when changing display geometry, either by adjusting the resolution of a single display, or by adding/removing displays.

  • Corrected the computation for deciding whether to use a contrast-enhanced I-beam cursor on text views with dark backgrounds.

  • Fixed bug in which XML tags beginning with non-ASCII characters weren't colored as they should have been.

  • Fixed bug in which paragraph tags did not get fold indicators.

  • Updated the search keyword tables to include new or changed preference settings.

  • Added an expert preference, PCREMatchLimitOverride, to be used only on the instructions of Tech Support to adjust an internal circuit breaker in the PCRE library.

  • We no longer ask the active printer for its output resolution when calculating margin offsets for the "1-inch gutter" option, since printer drivers never return the correct answer.

  • Fixed bug in which file filter terms referencing "Parent Folder" did not work correctly.

  • Fixed crash which would occur while typing a #MARK comment callout at the very end of a PHP or C file.

  • Fixed bug in which Go -> Previous/Next Difference would select items in the Differences list, but not bring the selected list item into view.

  • Operations that select a line (such as providing a line number to the command-line tool, or Open Selection with a file:line specification) will now place the insertion point at the beginning of the indicated line, rather than selecting the entire line.

  • When restoring application state, documents that were open only in results windows (search results, source control status, etc) but were not open in any other windows are now opened together into a new window, rather than having one new window opened for each instance of the document that had been displayed in a results window.

  • Put in a timeout to guard against a hang which occurs sporadically when we request the current runtime environment from the user's login shell.

  • Improved error reporting for invalid Grep patterns.

  • Fixed bug in which "Process Duplicate Lines" would delete the line following a blank line (in sort order), whether it was blank or not.

  • Fixed an error 10003 which would occur when performing scripted operations which involved high-frequency open/close cycles with different documents.

  • Fixed bug in which documents opened from a results window in which Soft Wrap Text was turned on did not correctly apply the wrap settings.

  • Made a change so that text in CDATA sections in HTML and XML files is now eligible for spell checking.

  • Made a change to improve performance when changing the live-match highlighting in documents with extremely long unwrapped lines.

  • Put in a workaround for an OS bug on 10.11 in which the state restoration progress window would appear blank or black for some period of time at startup.

  • Fixed bug in which documents which did not have saved state did not correctly adopt language-specific preferences when opened.

  • Fixed crash which would occur when performing a Sort Lines or Process Duplicate Lines operation using a pattern and the "All sub-patterns" option.

  • Text underlined or highlighted by the "Display instances of selected text" matching now uses the "Plain text" color, rather than deriving from the "Background" color.

  • Fixed a bug in which the keyboard focus was not on the name field in the "save color scheme" sheet, as it should have been.

  • Fixed bug in which Differences windows had, incomprehensibly, a Current Function item in the status area.

  • Made a collection of changes to improve startup performance and application responsiveness when initially loading the contents of very large folder-backed menus.

  • Fixed layout goof in text views in which all status area items were turned off, but Show Line Bar or Show Gutter was turned on.

  • By default, "display occurrences of selected text" will only search for qualifying text that is two characters or longer, so that selecting or placing the insertion point in front of a single character will no longer display highlights throughout document.

  • The "Strip trailing whitespace" option when saving files will no longer remove page breaks.

  • The Unix Shell Script language module now allows single- and double-quoted strings to cross line boundaries.

  • Fixed bug in which current-line highlighting would disappear from the first line in the document when using an unmodified up-arrow to move the insertion point to the beginning of the line.

  • Adjusted the PCRE library to use the application heap for recursion instead of the machine stack, which allows more deeply recursive patterns to run successfully (at the theoretical cost of some performance).

  • Fixed bug in which custom language mappings for file names or file name patterns didn't work for files without a name extension.

  • Worked around a bug in the Wacom tablet driver in which it was generating spurious mouse-wheel-moved events which would in turn cause unwanted scrolling during certain pen movements.

  • Fixed bug in which initiating a drag with the mouse could happen unintentionally when clicking on draggable objects.

  • Fixed crash and malfunction which could occur in certain situations when converting Unicode data from a non-Unicode on disk representation in zero-length files.

  • Made a change to reduce the transient memory requirements when performing a non-Grep Replace All operation using a replace string that is longer than the search string.

  • Made a change so that text factories and multi-file Replace All operations avoid running out of address space when processing an extremely large number of files.

  • Fixed crash which would occur when trying to change the name of a "Favorite" in the font panel.

  • Fixed bug in which a document's Undo history was cleared when using "Move to New Window" from the project sidebar popup or contextual menu.

  • Made some changes to address lurking concurrency problems during package loading.

  • Improved the performance of "Strip trailing whitespace" when saving documents and the eponymous preference is turned on in the Text Files preferences.

  • If a file-based Unix script or filter isn't usable because of its on-disk representation (as when choosing it from the Apply Text Filter or Scripts menus), an informative error is now reported.

  • Fixed bug in which heredoc strings in Unix Shell Script documents were not colored using the proper color.

  • Fixed a bug in the VHDL and Verilog HDL language modules that would cause unexpected coloring effects (which sometimes corrected themselves during editing, and sometimes not).

  • The Live Search box no longer displays the magnifying glass (the system draws it incorrectly on retina displays, and won't be corrected).

  • Fixed cosmetic glitch in results windows, along the boundary between the splitter and the text view.

  • When spell checking in HTML/XML, the checker now properly handles transitions between checkable ranges (such as CDATA body text) and non-checkable ranges (tags), so that all CDATA text will be checked, even if checking did not start inside of a CDATA range.

  • When closing a very large document without saving changes, and "Make Backups" is turned on, the auto-recovery file doesn't neeeeeeed to have trailing whitespace stripped out, so we no longer do that (and save lots of time in the process).

  • When "Find Next Misspelled Word" wraps around, the "Wrap Around" indication is now displayed (as it should be).

  • Fixed case in which a text view would draw twice when loading a document and then changing its selection range to some place that required scrolling.

  • Put in code to work around a bug in the OS (16742697) which would cause the application to crash after scrolling views in an Open or Save panel (and a few other windows).

  • Fixed a crash which would occur in some situations when calculating data for the fold gutter.

  • Fixed bug in which document state was not automatically saved in situations where it should have been saved when closing the document.

  • It is now possible to run Perl, Python, or Ruby files directly from an editing window, the Scripts menu, or the "Apply Text Filter" command when the file in question does not have a shebang line, as long as the document's language is set appropriately.

  • When python3 is available in a typical executable location, we will now use that to run Python scripts that don't have a shebang (#!) line.

  • Updated the built-in list of PHP predefined names so that symbols occurring in PHP embedded in HTML will be colored.

  • When saving an already extant document, the permissions check (to determine the need for authentication) no longer checks the parent directory if the file itself appears to be writeable.

  • "Save Default Window" is now disabled for singleton windows (Find, Multi-File Search, and others) rather than being enabled and showing the wrong title.

  • Fixed cosmetic glitch in results windows, along the boundary between the splitter and the text view.

  • Finder data storage files (".DS_Store") are now disabled in the Open panel, even if "Show hidden items" is turned on.

  • The language guesser for Python will now recognize shebang lines that specify python3.

  • Fixed crash which could occur when a background operation (such as highlighting matches of the selected text) was interrupted by a replacement of the backing store (Replace All, Revert, reload from disk, etc).

  • Made a change so that file enumeration when searching projects and evaluating Open File By Name results does not omit items when the starting point is itself an invisible directory.

  • Quieted a runtime warning when using the Save As panel to save a text document.

  • Conditionalized the workaround for Radar 16742697, which has been fixed for $FUTURE_OS_VERSION.

  • Fixed bug in which Objective-C/C++ specific keywords were inappropriately used in C/C++ documents.

  • Made a change so that using a language-specific color scheme (other than "Application Defaults") no longer fills the preferences with language-specific color settings; and at the same time fixed a bug which would cause some color settings to be incorrectly applied when using a language-specific color scheme.

  • Fixed bug in which the UTF-8 factory default encoding for new documents was not applied when it should have been.

  • Fixed bug in which a document's contents would briefly jump to the top after a "Replace All" operation.

  • Fixed a couple of cases in which documents would open or reload and briefly display at the top of the document before scrolling to the appropriate position.

  • Made a change to fix a crash which would occur when opening the file info popover on 10.11.4 when the Dock was positioned on the right side of the display.

  • Fixed a case in which saving a new document would cause its tab width to change to the default setting, which was a problem when the document's width had previously been changed to something else.

  • Fixed bug in which custom highlight colors specified by color schemes were not correctly applied when starting the application.

  • Made the line-number column in the Markers and Functions palettes fixed width, to eliminate confusing behavior when resizing the window.

  • Fixed crash which would occur when making changes to FTP/SFTP bookmarks and one or more of the stored bookmarks had a corrupted URL string.

  • If /dev/null is passed as an argument to twdiff, it will now exit normally (and quietly), rather than reporting a -36 error.

  • Fixed bug in which certain operations would cause the selection range to drift.

  • Worked around a pathological behavior in the OS which would cause the file info popover to take minutes to appear in some situations (in particular, when Active Directory services are in use).

  • Fixed a bug in which canceling a multi-file search/replace or Text Factory operation would leave some internal bookkeeping undone; after enough uptime this would cause future operations to stall while waiting for a condition which would never be satisfied.

  • Fixed a bug in which the HTML function scanner would generate function menu items with empty names for headings in some situations; this in turn triggered a bug which would cause a crash when the Current Function display needed to display that item in the navigation bar.

  • Made a fix so that high-frequency changes to progress status from background threads no longer cause drawing glitches in the progress panel.

  • Fixed a bug in the AppleScript internals in which whose tests for certain value types would occasionally fail for reasons that were not immediately evident to the observer.

  • The Markdown module will no longer add fold points for 1-character fold ranges. For example, a #headline will not have a fold point if the very next line is another headline (as that fold would only hide the line break).

  • Fixed bug in which Option-clicking to move the insertion point would frequently leave behind a stale line highlight.

  • Made a change to improve file filtering performance, particularly in the Open dialog.

  • Made a change so that Emacs-style backups (foo.txt~) no longer appear in folder-backed menus (Scripts, Text Filters, etc) when there's a non-backup file in the same location.

  • Fixed bug in which making changes to a folder being observed by a palette (Scripts, Text Filters, etc) would cause any expanded items in the palette to collapse.

  • Made some changes to improve internal performance during regular-expression capture.

  • The application no longer promises UTF-16 text to the Clipboard, which improves copy/paste compatibility with Microsoft Office.

  • Fixed a bug in which the "Extract" command in the Find window didn't respect the "Selected text only" option.

  • Made a change to increase the reliability of reloading changes to a document's backing file when they're made at high frequency (intervals less than the time resolution of the file system) or made by an attached documentDidSave script.

  • The differences list (in Differences windows) now always uses the small system font, and ignores the List Display Font preference. This works around bugs when trying to italicize the font on some OS versions.

  • If a documentDidSave attachment script exists and is run, we will now manually verify the disk file after saving, in case the script changed it. This works around problems in which we don't receive file system notifications when the script runs.

  • Made a change so that Emacs-style backup files are omitted from Switch to Counterpart and the Counterparts menu when appropriate.

  • Fixed bug in which character escapes in non-Grep search strings were not properly unwound when doing a single-file "Find All" or "Extract".

  • Fixed a case in which the Open File by Name window was doing more work than it needed to when it was activated, which would lead to delays.

  • When performing an interactive Process Duplicate Lines, the "Process" button is now disabled if you select both "Unique lines to clipboard" and "Duplicate lines to clipboard", since you can't do both.

  • Fixed cases in which files chosen from the Includes navigation bar menu weren't found and opened as they should have been.

  • Made a change so that the check for "is a file controlled by Perforce" will time out when necessary, rather than stall the application forever.

  • Fixed a hang which could occasionally and randomly occur while waiting for a response from certain forked Unix processes.

  • Fixed bug in which certain characters in search and replace strings would cause unexpected drawing effects in the Find window's search history menu; these characters are now hex-escaped.

  • Non-printable characters in the "Latin-1 Supplement" range (0x80-0x9F) are now escaped in search strings.

  • Fixed bug in which forced changes to UTF-8 while saving did not correctly update the text encoding setting display in the status area.

  • Full-path truncation in printed page headers now uses a little more intelligence, to make better use of the available space.

  • Condensed the page count in printed page headers, to make a little more room available for the full path (if used).

  • The path truncation used for menu items (Open Recent, windows) and other appropriate locations is now somewhat smarter, so that useful information is now retained in situations where it wasn't before.

  • Fixed a bug when auto-recovery data wasn't cleared when using Revert or Undo to discard changes to an open document; this would lead to the previously autosaved contents being restored at the next startup.

  • Fixed bug in which edit --launch did not bring the application to the foreground when it was already running.

  • Fixed a bug in which the highlight color was incorrect after selecting a color scheme in some circumstances.

  • Fixed crash which would occur while typing certain URLs into the Open File By Name search box.

  • If the page guide contrast (which also affects the contrast of tab stop lines) is set to zero, don't spend time drawing invisible tab stop lines.

  • The Guide Contrast setting is now range-limited, so that using the minimum setting no longer renders tab stops and the page guide invisible when those display options are enabled.

  • Fixed bug in which certain malformations in a language module's plist would cause the application to crash; and other errors in construction would cause the language module to fail silently. Validation has been extended to log these conditions and prevent the module from loading.

  • The internal PCRE library has been updated to 8.40 (current as of this writing).

  • Fixed crash which would occur while parsing fragmentary #include or #import statements in C-family languages.