TextWrangler 2.2 Release Notes

This page documents all feature enhancements and bug fixes included in the TextWrangler 2.2 update.

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

For complete information on TextWrangler’s features, please refer to the included PDF user manual, which you can access by choosing “User Manual” from the Help menu.

Requirements

TextWrangler 2.2 requires Mac OS X 10.4 or later.

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

Additions

  • There’s a new command on the Edit menu: “Document Options…”. This lets you adjust the document’s line breaks and text encodings as desired (and replaces the now-defunct Document Options popup that was in the tool bar).
  • There has been significant rework to the tool bar (formerly known as the status bar), the navigation bar, and the status bar (the area at the bottom of editing views), as follows:
  • The function popup has been removed from the tool bar, and now resides in the navigation bar. The current function display has been removed from the status bar, and has been combined with the function popup. (If you’ve seen Xcode at all, this will look familiar.)
  • Include files are no longer listed on the function popup; they’re in a new item on the right-hand end of the navigation bar, marked with a “#”.
  • The Markers popup has been removed from the tool bar and now resides toward the right-hand end of the navigation bar.
  • There’s a new item toward the right-hand end of the navigation bar: the Counterpart button. Clicking it opens the file’s counterpart, as though you had chosen “Open Counterpart” from the File menu.
  • The “Language” setting has been removed from the Window Options popup in the tool bar, and now resides in the status bar, immediately to the right of the cursor position display.
  • The File Options popup has been removed from the tool bar. The line-ending settings now reside in the status bar, so you can see the current line endings at a glance. The text encoding setting is likewise now in the status bar. A new command has been added to the Edit menu: “Document Options”. You can use this as a hook to hang a keyboard equivalent on.
  • The File Path popup has been removed from the tool bar. It’s been available in the standard location (command-click on the window title) for quite a long time now, so the old one was just redundant. “Copy Path” and friends have been moved to a new submenu on the Edit menu.
  • The Text Encoding status bar popup has an item at the end: “Other…”. This brings up a sheet listing all available encodings (even if they’ve been disabled in the preferences), and you can select whatever one your heart desires.
  • The “Apply Text Factory” commands on the Text menu will now apply the selected text factory to the selected range of text in the front document, using the same rules as for the line-oriented commands on the Text menu: if the selection range encompasses one or more lines; then only the selected text is processed; otherwise, the whole document will be processed.
  • The action menu in the documents drawer contains a “Save All” command (dynamic variant of save) which saves all the modified documents in this window only.
  • Support is now in place for “Check spelling as you type”. There’s a preference in the Spelling prefs to set the default, and it can be turned on and off for a given text view by using the corresponding command on the Text menu.
  • There’s a new command on the Window menu: “Save Default Window”. If enabled, choosing it saves the front window’s position and size in the preferences, and subsequent new windows will be created at that position with that size.

Note that the default position is saved separately for different types of windows: for example, file groups’ default window position is distinct from editing windows’. Also, the preference is keyed by your screen configuration, so if you frequently switch screen layouts (as when connecting an external display to a PowerBook), you can save distinct defaults which are applied for different screen configurations.

  • The “Find in Reference…” command (on the Search Menu) now supports language-specific templates for on-line references. The old default of the Apple Developer Connection is still the factory default; for PHP, “Find in Reference” will look up the selected symbol on php.net; for Unix Shell Script, it’ll open the appropriate Unix man page.

The URL templates are customizable in the Languages preferences; click the “Options” button to edit the URL template (along with other language-specific settings, such as the comment delimiters). Note that the URL can be any well-formed URL of any scheme supported by the OS or installed applications. (Witness the above x-man-page:// usage.) The string “SYMBOLNAME” (without the quotes) is replaced where it occurs in the template.

  • TextWrangler recognizes a new variable in the Emacs-style variable block: “x-counterpart”. If desired, you can specify an x-counterpart value which will override TextWrangler’s built-in rules for switching between counterpart files (Control-Tab). So, for example, if you had a file that contained a variable block like this:
-*- x-counterpart: ExampleStrings.R; -*-, typing Control-Tab would look for the file “ExampleStrings.R”.
  • Added an “Increase Indentation” option to the Rewrap Quoted Text dialog; this allows you to inset lines inside of the quote marks in a single step.
  • PCRE 5.0 is now supported, with all of the additional features that entails.
  • TextWrangler can open and save text files in gzip-compressed (.gz) files with ease. Opening and browsing are the most useful; for example, you can now browse the archived logs in /var/log without having to decompress every one.
  • On initial save, or save as, TextWrangler looks at the destination file’s extension to determine if the file should (still) be gzip compressed. (.gz and .gzip are recognized.)
  • If the “Emacs Local Variables” setting is turned on (in the Text Files: Opening prefs), and there’s an Emacs-style variable block^1^, TextWrangler will honor the “tab-width” variable when opening the file.
  • The “Menus” preferences panel now provides the means to show or hide individual commands, as well as entire menus. Note that some commands and menus cannot be hidden, as they are necessary for the program’s correct operation (“Quit” is an example of one such, though of course there are many others) or are fundamental to the program’s identity (such as the commands on the Find menu). In general, though, you have the flexibility to turn off any commands (or entire menus) that you never use in order to make menu navigation easier or conserve space in the menu bar.
  • TextWrangler now supports “camel case” navigation: press Control-left-arrow or Control-right-arrow to jump to the next (or previous) transition from lower-case to upper-case characters (or a word boundary, whichever comes first).

Note that this use of Control-left-arrow and Control-right-arrow replaces the old behavior of using these key combinations to scroll horizontally. If you prefer the old behavior, you can do the following from the command line:

@defaults write com.barebones.textwrangler Editor:ControlArrowCamelCase -bool FALSE

defaults write com.barebones.textwrangler Editor:ControlArrowHScroll -bool TRUE@

  • There’s a new collection of settings in the Editing: General preferences: “Soft wrapped line indentation”. These control how the soft-wrapped portions of a long line are indented: Flush Left (not at all); First Line (same as the first visual line of the wrapped line); and Reverse (one tab stop’s worth of hanging indent). The factory default is “First Line”, and changes to these preferences take effect immediately.
  • In the “Text Search” preferences pane, you can now drag items in the Grep Patterns list to reorder them.
  • Codeless language modues now do function scanning via PCRE. If a CLM plist contains a string with the key “Function Pattern”, that grep pattern is used. The pattern is expected to have named subpatterns <function_name> and <function> to identify the function’s name (which will be added to the function popup menu) and the function as a whole. You can omit <function> and the entire pattern match will used instead, but this would be a bad idea for the function_name; if it is missing the match doesn’t add anything to the menu.
  • You can now (using the Menus preferences) assign keyboard equivalents to open the menus that are attached to items in the Navigation Bar (the files, function, includes, and marker popups) and the Status Bar (language, text encoding, and line endings). So, for example, you can now navigate a document’s function list without removing your hands from the keyboard, if so desired.
  • Added a —reverse option to the twdiff tool.

This is useful when you don’t have direct control over the order of the arguments passed (such as when using twdiff as a svn diff helper) but would like the argument reversed before being passed to TextWrangler.)

  • “Look Up in Dictionary” now appears on the contextual menu when you right-click on a single word (selected or not) in a text view.
  • If a file contains no cues to indicate its text encoding (for example, Emacs variables, HTML/XML character set declaration, saved state, BOM, etc), TextWrangler will attempt to interpret it as UTF-8 (No BOM), before giving up and asking you what to do.
  • The various folder floaters (scripts, #! scripts/filters, stationery, text factories) now have a contextual menu for the list which includes the action command as well as Edit and Reveal in Finder.
  • When viewing differences, sub-line differences are highlighted in the selected range.
  • Added a new entry point for language modules: kBBLMMatchKeywordWithCFStringMessage. This is just like kBBLMMatchKeywordMessage, but the parameter block contains a CFStringRef to the token to be looked up.
  • The kBBLMAlwaysGuessLanguage flag is now hooked up. If a language module specifies this flag and kBBLMCanGuessLanguage, then the module will get called after an explicit suffix-mapping match, so that it can fine-tune the language match, as desired.
  • “Open Selection” and “Open File by Name” can now accept a Unix-style character offset specification (in addition to the line, which has been supported for a long time), as in:
foo.cp:398:43
  • There is now a “Tool Bar” grouping in the Menus preferences. Right now it contains the commands for the Text Options popup menu. Some day it will contain more.
  • It is now possible to configure language specific options for the “(none)” language, in the Languages preferences. So, for example, if you wanted soft-wrapping on for all of your “(none)” files, but off for everything else, you can do that now by setting the default to not soft wrap, and then turning it on in the language-specific settings for “(none)”.
  • The language options sheet for JavaScript now contains a control for whether you want anonymous functions to be listed in the function popup.
  • The —wait flag is now supported when using the command line tool to open ftp or sftp URLs.
  • The window control flags (i.e. —new-window) are now supported when using the command line tool to open ftp or sftp URLs.
  • Added a built-in language for Perforce specifications.
  • Added support for Ruby’s “ri” to “Find in Reference”
  • Added “first class” support for Ruby as a #! language. This gets you check syntax, run in debugger, error parsing, reference lookup and runtime support for local(relative) include/require files (-Ipath).
  • The edit command line tool knows how to parse “edit file.c:10” into “open and goto line”.
  • “utf8” is now accepted as a synonym to “utf-8” by the command line tool and scripting interfaces.
  • When inserting text into an empty document whose language is “(none)”, TextWrangler will auto-guess the language and adjust accordingly. The intended usefulness of this addition is for setting the document’s language correctly when pasting or dragging a chunk of guessable text into an empty document; it won’t be quite so useful when you’re just typing. :-)
  • Look Up in Dictionary from the context menu will use the dictionary panel when appropriate.
  • The JavaScript language module has been improved, featuring the following enhancements:
  1. p. Truly “anonymous” function detecting is optional, and can be controlled by the “Show Anonymous Functions” setting in the JavaScript language options (Languages preferences);
  • Functions that were previously undetected completely are now shown as regular functions. That is, functions which are assigned to variable or object properties, like this:

var foo = function() { … }; foo.bar = function() { … }; var bar = { bat: function() { … } };p. In the above examples, foo(), bar() and bat() would all be listed in the function popup.

  • Nested functions are supported, and are listed properly in the function popup.

function a() { var b = function() { … } b(); }

  • ‘$’ is recognized as a legal character in identifiers
  • The keyword list is updated and expanded
  • Regular expressions are detected and colored separately from strings.
  • If a file contains an Emacs variable block (or line) with a "mode: " variable in it, TextWrangler will attempt to match the mode name against the installed languages, before attempting to match the file name suffix or guess based on the file’s contents.
  • If the insertion point is within a pragma mark, the function menu now indicates that (just like functions).
  • Convert to ASCII now replaces the Euro sign with ‘[euro]’ instead of ‘O’.
  • TextWrangler now features built-in support for Markdown, with the function popup used for navigating elements in the file, and syntax coloring.
  • The source list used for multi-file searching and Text Factory application now includes the directories being browsed in open Disk Browser windows.
  • By default, TextWrangler will avoid writing extended attributes (HFS Type/Creator) to volumes which don’t natively support them (i.e. to avoid creating the ._FILE) when it is safe to do so (i.e. we’ll be able to re-open the document correctly later.)

This behavior can be controlled by

defaults write com.barebones.textwrangler Filing:WriteExtendedAttributes<value>

value should be one of Always, Never, or Smart. Smart is the default.

  • The TeX language module has been significantly enhanced, with improved section/subsection detection for the function menu, much more robust math-mode detection, and greatly enhanced LaTeX support. These changes resolve various reported bugs, as well.

If you wish to place a “marker” in the function menu, you can write a comment of the following form:

%: this is a mark

This comment syntax matches that used by TeXShop.

The new TeX module also includes some support for ConTeXt, in the form of special-case support for the “mode” environment (we ignore the contents of the mode environment, because it often contains out-of-order environment start/stop commands which can confuse the parser).

  • The Java language module has been rewritten, and gets all sorts of goodies: inner class support, recognition of interfaces, and listing of abstract method declarations in the function popup.
  • Baked in support for /usr/include and /usr/local/include as search locations (so they don’t need to be in the default search paths)
  • TextWrangler can now read and write the “binary property list” format used by default in Mac OS X 10.4 for storing application preferences files. This makes it easy to use TextWrangler as an editor for such files. For bonus points, TextWrangler’s support for editing-in-place of Gzip-compressed (.gz) files extends to binary property list files. (And yeah, multi-file search reads them too.)

Changes

  • Modernized the “Backup Options” dialog. It’s a sheet now, and there’s more room for those super-sized Unix file paths.
  • Dialogs in the FTP preferences (add/remove bookmark) now run as sheets.
  • File Search prefs get sheets.
  • Most of the file and folder dialogs invoked directly from the Prefs dialog now run as sheets.
  • The comment options dialog (in the Languages preferences) now runs as a sheet.
  • New disk browser layout: the list of files is now down the left-hand side of the window, which opens up more vertical space for the text view.
  • Changed the format of the time stamp used for naming backup files (when “Make Backup Before Saving” is turned on). The new format includes the time the backup was made, and sorts better in “by name” listings.
  • Adjusted control names and prompts in the Preferences dialogs to match modern conventions (sentence case instead of title case).
  • Removed the settings for translucent drags from the Application preferences. If you previously changed the setting from its factory default, the change is still honored. If you want to change it, you can do so from the command line:
defaults write com.barebones.textwrangler Services:TranslucentDrags -bool NO

Change “NO” to “YES” to enable translucency in drags.

  • The prefs UI bits for QuickTime translation and playback have been consigned to the dustbin of history. If you previously changed these settings from their factory defaults, the changes will be honored. Also, the factory default for QuickTime playback is now off, so TextWrangler will no longer try to interpret .m3u and .smi files as movies (which was technically possible but not really useful).

If desired, these settings can be changed from the command line:

@defaults write com.barebones.textwrangler Services:QuickTimeImages -bool NO

defaults write com.barebones.textwrangler Services:QuickTimeMovies -bool NO
defaults write com.barebones.textwrangler Services:DontTranslatePDFs -bool YES@

Change “NO” to “YES” to turn the option on (vs. off).

  • Modernized alerts for plug-in installation and “Open File by Name” searching confirmation (presented when none of the search paths work out).
  • Modernized the “can’t undo” alert for plug-ins.
  • Modernized the confirmation dialog for Revert. (You won’t ordinarily see this unless the revert is done from the scripting interface with an explicit “ask”.)
  • Modernized the various alerts related to Set Menu Keys and friends.
  • Updated the “Delete Now” alert (which doesn’t come up much in nature; it’ll occur when an internal “Move to Trash” fails).
  • Modernized the document-unlock confirmation alerts
  • The “Browser Display” preferences UI has been consigned to the dustbin of history. if you previously changed these settings from the factory defaults, the changes will be honored. If you wish to change them further:
@defaults write com.barebones.textwrangler BrowserWindows:ShowIcons -bool NO

defaults write com.barebones.textwrangler BrowserWindows:HierarchicalResults -bool NO
defaults write com.barebones.textwrangler BrowserWindows:NodesExpanded -bool NO@

  • The “Show Icons” preference for multi-file Find Differences results windows has, well, you get the idea. If you changed the setting from its factory default, the change will be honored. Otherwise:
defaults write com.barebones.textwrangler DifferencesResults:ShowIcons -bool NO
  • Used to be, there were two “Find in Reference” commands; one on the Search menu, and one on the #! (Shebang) menu. These have been consolidated, and “Find in Reference” on the Search menu now does the appropriate documentation lookups for Perl and Python.
  • The “Open from FTP Server” command no longer brings up the modal dialog. Instead, it will open an FTP/SFTP browser window if none is open; otherwise it will bring the frontmost FTP/SFTP browser all the way to the front, ready for entry.
  • FTP/SFTP browser windows get rounded pushbuttons
  • Rearranged the View menu as follows:

There is a new “Text Display” submenu. This menu contains the following commands:

  • Show/Hide Fonts (moved here from the Text menu)
  • Soft Wrap Text
  • Show/Hide Page Guide
  • Show/Hide Tab Stops
  • Show/Hide Line Numbers
  • Show/Hide Invisibles
  • Show/Hide Spaces
  • “Open Counterpart” has now been promoted to the File menu rather than being invisible.
  • The “Insert File Path” and “Insert Folder Path” commands (Edit menu, Insert submenu) have been coalesced into “Insert File/Folder Paths”. You can choose any number of files and folders.
  • “Insert Folder Listing” now allows you to choose multiple folders.
  • “Insert File Contents”, “Insert File/Folder Paths”, and “Insert Folder Listing” now run as sheets in the editing window rather than as app-modal dialogs.
  • The “Insert” pop-up menu in text view tool bars has been consigned to the dustbin of history, since it duplicates what’s on the “Insert” submenu of the Edit menu.
  • The Document Path popup has been removed from the tool bar, since it is largely redundant to the popup menu that you get when you command-click on a window’s title. The “Copy Path” command and friends have been moved to a new “Copy Path” submenu on the Edit menu.
  • Disk browser windows get the rounded push buttons
  • the ASCII Table palette gets round pushbuttons.
  • Normalized nomenclature for line-break types in the UI:

“Mac (CR)”
“Unix (LF)”
“Windows (CRLF)”

This affects the prefs window and Text Factory “Change Line Endings” settings dialog.

  • The separate preferences for “BBEdit plug-ins”, “Script menu”, and “Text Factories menu” have been removed from the Application preferences. If you want to hide those menus, you can now do so in the Menus preferences.
  • The “Script Editor” setting in the Tools preferences has been consigned to the dustbin of history. TextWrangler will use whatever application that the OS claims is capable of opening script files.

If you wish to override this, you may do so from the command line with a “defaults write” command to change the “Services:ScriptEditorBundleID” preference; for example, to set the script editor to Script Debugger:

defaults write com.barebones.textwrangler Services:ScriptEditorBundleID com.latenightsw.ScriptDebugger
  • The “Tools” preferences pane has been consigned to the dustbin of history. The “Install Command Line Tools” button has been moved to the “Application” preferences.
  • The “Startup” preferences pane has been consigned to the dustbin of history. The startup settings are now in the “Application” preferences.
  • Since the “Open from FTP/SFTP Server” and “New FTP/SFTP Browser” are practically synonymous, the latter has been removed as a startup option.
  • “Set Menu Keys” has been removed from the application menu. There is now a “Menus” preferences panel, which contains the list of commands and the means to adjust their keyboard equivalents.
  • “Set Key…” for glossaries and certain other palettes (Scripts, Stationery, Text Factories) gets the new Set Key sheet.
  • The Plug-In Tools floater now uses the new Set Key sheet.
  • The “Allow menu key equivalents to autorepeat” preference has been moved from Applications to Menus.
  • The switches in the Contextual Menu preferences have been moved to Menus; the Context Menu preferences pane is no more.
  • The “Documents” and “Documents Drawer” preferences have been consolidated into “Documents&Drawer”.
  • The text encoding settings, formerly in Text Files: Opening and Text Files: Saving, have been relocated to the Text Encoding preferences, as has the “Link file’s encoding to HTML/XML character set” setting.
  • The “Text Files: Opening” and “Text Files: Saving” preferences panes have been (re)combined into a single “Text Files” preferences pane.
  • The “Warn when opening a malformed UTF-8” preference control has been removed. If you wish you may adjust this preference from the command line:
defaults write com.barebones.textwrangler Filing:WarnMalformedUTF8 -bool YES
  • The “Differences” prefs pane has been consigned to the dustbin of history. If you use the “Arrange…” command with a differences window open, its settings will be remembered across invocations of the application (and will take effect the next time you do a Find Differences).

If you want to adjust the Hide Palettes or Keep Windows Arranged options, you can do so thusly:

@defaults write com.barebones.textwrangler DifferencesResults:HidePalettes -bool TRUE

defaults write com.barebones.textwrangler DifferencesResults:KeepWindowsArranged -bool TRUE@

  • CVS directories (that is, directories containing CVS administrative data such as root and repository information) are now considered invisible. This affects Find Differences when comparing folders, and the behavior of multi-file search and replace. If for some reason you need the old behavior:
defaults write com.barebones.textwrangler Misc:CVSDirsAreInvisible -bool NO
  • The “Zoom Windows To:” setting in the Windows preferences has been consigned to the dustbin of history. The application will always zoom a window to the screen with which it has the largest intersection (which was the factory default from previous versions, and the consistent behavior of the OS).
  • If a File Search directory is unavailable, it is so indicated in the list.
  • The “Only Search<…>Folder” option in the Open File By Name dialog was an anachronism whose time has passed.
  • Normalized the UI nomenclature to “Tool Bar” for the tool bar and “Status Bar” for the (new) status area.
  • Coalesced the Software Update settings into the Application preferences.
  • The “Always zoom windows” preference (Windows prefs) has been consigned to the dustbin of history. To always open a document window at its default position and size, rather than any such which may have been saved with the document, turn off the “Window position” setting in the “Text Files” preferences.
  • The “Move as little as possible” control for window zooming has been removed from the Windows preferences. If you want to change this value:
defaults write com.barebones.textwrangler Windows:ZoomInPlace -bool NO
  • The “Maximum width” setting in the Windows preferences has been consigned to the dustbin of history. The application now figures out how wide to zoom your windows based on other (and generally more useful) criteria.
  • The “Unix Scripting” preferences pane is gone:
  • “Use UTF-8 for Unix script I/O” has been moved to the Text Encoding preferences
  • “Warn about non-Unix line breaks before running” can now be adjusted from the command line if necessary:
defaults write com.barebones.textwrangler "#!ScriptTask:WarnAboutNonUnixLineBreaksBeforeRunning" -bool NO
  • “Use Affrus for Perl debugging” can now be adjusted from the command line if necessary:
defaults write com.barebones.textwrangler "#!RunScriptPrefs:UseAffrusForPerlDebugging" -bool NO
  • The layout of items in the Preferences window has been adjusted to match current HIG recommendations for placement and spacing.
  • In the Sort and Duplicates sheets, renamed the radio button “Entire Search Pattern” to “Entire Match” to be more precise about what is going to match.
  • Find Differences results windows now use the standard push button, to work around the bug in the standard bevel button.
  • The floating palettes now use the standard push button, to work around the bug in the standard bevel button
  • The “Plug-In Info” window now uses the standard push button, to work around the bug in the standard bevel button.
  • The “Quick Search” window now uses the standard push button, to work around the bug in the standard bevel button.
  • The Spelling preferences have been consigned to the dustbin of history. The highlight color setting can now be found in Text Colors, and the “Check spelling as you type” setting is now in Editor Defaults.
  • “Check spelling as you type” is now settable on a per-language basis.
  • The “File Type” popup, used in disk browsers and the Open dialog, has been shortened and simplified. The “PICT Files” setting is gone, and the word “QuickTime” has been removed; instead, there’s a single “Images” setting and a single “Movies” setting. (Note that options may be hidden if QuickTime image translation or movie playback have been turned off.)
  • Updated all appropriate floating palettes to use the “glass” rectangular buttons.
  • Pushed around layout in the Find Differences dialog to make more room for file paths and open up the spacing a bit.
  • The factory default encoding for writing files is now UTF-8 (No BOM).
  • The Balance command has been moved to the view menu.
  • Retitled the Find Differences results window buttons.
  • Double-clicking on a language in the Languages prefs list now brings up the Text Options sheet for that language, rather than the Options sheet.
  • Since the separate Word Services setting is gone from the Spelling preferences, if you want to use Excalibur for spell checking (which is useful if you spend a lot of time in LaTeX, I’m told), you can enable it from the command line:
defaults write com.barebones.textwrangler Spelling:UseExcalibur -bool YES
  • The language module interface has been enhanced so that coded modules can indicate whether they filter language runs for spell checking. This gives modules greater control over which runs of text are eligible for spell checking.
  • if the application couldn’t guess a file’s encoding, the appropriate preference is honored (unless the preference indicates a UTF-8 encoding, because we would have figured that out beforehand). If unmappable characters occur while reading the file using the preferred encoding, the application will drop a sheet asking you to choose another encoding.

There’s a new preference that can be used to bypass the default encoding:

defaults write com.barebones.textwrangler Filing:Filing:AskForUnguessableFileEncoding -bool YES

If this preference is set, then the application will ignore the preference and always drop the sheet asking you to choose an encoding.

  • Language modules are now required to report, via the feature flags, whether they implement custom keyword lookups via the kBBLMMatchKeywordMessage and/or kBBLMMatchKeywordWithCFStringMessage. Bundled language modules do this with the “BBLMSupportsOneByteKeywordLookups” or the “BBLMSupportsCFStringKeywordLookups” keys. (Note that if “BBLMSupportsCFStringKeywordLookups” is present and TRUE, then “BBLMSupportsOneByteKeywordLookups” will be ignored.

NB: this will break any third-party CFM-based LMs that expect to receive kBBLMMatchKeywordMessage, because they no longer will. I don’t think that any such exist in nature, however.

  • The little “keychain” icon has been retired from the FTP/SFTP dialogs and browser.
  • The FTP/SFTP browser no longer uses separator lines between buttons with extra space.
  • Layout cleanups in FTP/SFTP browsers.
  • the toolbar icons have been updated and modernized. NB: this also affects the drawer icon in the Find dialog.
  • When doing “Find in Reference” on an empty selection in a document, you now get a sheet instead of an app-modal dialog, and the sheet is prefilled with what a “Find in Reference” from the contextual menu would have looked for.
  • Added default keyboard equivalents as follows:

Navigation Bar → Open Files Menu (Ctrl-Opt-F) Navigation Bar → Open Function Menu (Ctrl-Opt-N) Navigation Bar → Open Includes Menu (Ctrl-Opt-F) Navigation Bar → Open Marker Menu (Ctrl-Opt-M)

  • Folders whose names begin with a period (.) are now considered invisible. This affects Find Differences, and folder comparisons.
  • Changed the default page guide setting to 100 characters (previously 80).
  • If the document’s language does not support function scanning, the function popup and includes popup are removed from the navigation bar.
  • the app-modal Hex Dump File dialog now uses a sheet when choosing a file.
  • Modernized the “Open File by Name” dialog.
  • The “Quick Search” command is now disabled unless the front window has a text view in it or otherwise responds to the Quick Search command (as in the Preferences window).
  • The “Include passwords in proxy URL drags” FTP preference has been removed.
  • The “Remember Password” check box in the modal “Save to FTP/SFTP” dialog is gone; the password you use will always be stored in the system keychain.
  • The “Remember bookmark passwords” FTP preference has been removed; TextWrangler will always save bookmark passwords (in the Keychain as before).
  • Removed “Find All Matches” switch from File Search Preferences, and added it to the Open By Name dialog
  • “Save a Copy…” now drops a sheet.
  • “Make Backup Now…” now drops a sheet.
  • The default setting for honoring font settings in saved state (Text Files → Honor Saved State → Font Settings) is now OFF; as such the preferred font setting in the Editor Defaults preferences will override the font settings stored in the document’s saved state.
  • When honoring font settings in saved state is turned OFF (Text Files → Honor Saved State → Font Settings), changing the preferred font (Editor Defaults preferences) now takes effect immediately for all open documents and browser views.
  • When opening a file from an FTP browser, TextWrangler now stores the “last session” information, which is shared with the “Save to FTP/SFTP Server” dialog. The last-session information is also used when opening a new FTP browser.
  • Disk browsers will no longer list invisible directories when using a setting in the “Show:” popup other than “All Files”.
  • The FTP/SFTP browser no longer presents an alert to confirm bookmark selections that involve changing to a different server or account.

If you preferred the old behavior, there is a preference to restore it:

defaults write com.barebones.textwrangler FTP:ConfirmServerChangesFromBookmark -bool YES

Fixes

  • Fixed a bug where save as on a text file didn’t change the file creator back to TextWrangler.
  • Fixed a bug where twiddle was incorrectly resurrecting a deleted character from the gap in certain situations.
  • Removed a stray placeholder from the format string for reporting AppleScript errors.
  • Worked around ssh not sending a useful password prompt to the SSH_ASKPASS helper in some situations.
  • Plugged a hole that would cause a crash if you did a “Paste Column” into a freshly created document.
  • adjusted the scripting interface and internals to represent FTP/SFTP port numbers as 32-bit quantities (rather than 16), which fixes a cosmetic problem when using large port numbers in the FTP bookmarks preferences.
  • Fixed a bug where if an exception were raised while running a plug-in (for example, if it was mal-formed) the menubar would be left in an state where most commands were disabled.
  • Fixed a byte order bug in the ASCII table which resulted in incorrect Code and Escape values when running on Intel.
  • Fixed bug in which the “Passive FTP” switch setting in FTP browsers wasn’t honored when opening files, which was a problem when the setting differed from the global preference.
  • Fixed a bug in which “Count Words” didn’t correctly take apostrophes (right curly single quote) into effect.
  • Detached state storage now tracks documents which are moved/renamed (within a single volume) if that volume supports persistent file ids.
  • The screen positioning options in the Arrange dialog for differences are now disabled when the system you’re running on has only one screen.
  • The multi-screen options in the Arrange dialog are disabled if the system you’re running on has only one screen.
  • Fixed bug in which markers whose names began with a hyphen were turned into separators on the Marker menu.
  • Fixed a bug in the C++ function scanner in which the first #pragma mark after the opening brace of a namespace was ignored.
  • Fixed a bug where the Paste command appeared disabled in navigation services dialogs.
  • Fixed bug in which keystroke modifier information for outboard items (scripts, etc) was lost when moving preferences from a PowerPC machine to an Intel machine. Note that if you previously re-configured your keyboard equivalents after moving to the Intel machine, you’ll have to configure them again one more time; sorry for the inconvenience.
  • The horizontal scrollbar scope is computed using the same logic as the page guide when wrapped to a character limit. This avoids the problem where the scrollbar range is much larger than it needs to be because a font reported an overly large value for widMax.
  • Fixed a bug where if you did ‘edit -w filename’ for a file that didn’t exist more than once, any invocation after the first one would return immediately.
  • The SystemVersionCheck stub now launches the sub-process under Rosetta when appropriate.
  • Fixed a bug in the PHP function scanner where it incorrectly treated “class” and function as “case” sensitive.
  • Fixed bug in which ‘aete’ (scripting terminology) resources were not loaded for bundled plug-ins.
  • Fixed bug in which the “Why is this menu empty?” command was visible even when it shouldn’t have been.
  • Reworked STDIN handling in ShellCommand to avoid a potential hang and correct a pathological performance problem when using a #! script in a text factory.
  • Fixed a bug in which the Editor Defaults settings wouldn’t correctly load the preferred font setting for certain fonts.
  • Detached state storage now tracks documents which are moved/renamed (within a single volume) if that volume supports persistent file ids.
  • Window titles and status bar paths now update even when only the file name’s case has changed.
  • Deleting or cutting or pasting an extremely large (vertically) rectangular selection should now be handled much more quickly.
  • Added “edit” (for TextWrangler) and “mailx” to the Unix shell script keyword list.
  • Fixed bug in which the results browser context line for a search match on line 2 of a file would be blank if line 1 of the file consisted solely of a carriage return.
  • Fixed the behavior of Process Duplicates and Sort Lines when using grep patterns.
  • /private/var/tmp/ now considered a “temp” directory for purposes of not remembering recent files opened from /tmp.
  • The numbers in the Get Info window now display with proper thousands separators.
  • Fixed bug in which the BBXFDoesNotModifyEditWindow and BBXFRequiresModifiableWindow keys in plug-in plists worked at cross purposes. The application will now prefer the newer (BBXFRequiresModifiableWindow) if both are present, as it should.
  • The comment string used for multi-file search progress windows is now properly escaped for appearance in the Window menu.
  • Fixed a bug in which the “string not found” sheet would fail to appear in the search status window in situations when it should have (so the status window would just quietly go away, instead of reporting “[search string] not found”).
  • In the “Not found” sheet for multi-file searches, the search string is now escaped properly for display.
  • Install a low level carbon even handler so we can do window proxy drags from the background like the Finder and Cocoa apps.
  • Added STDIN, STDOUT, and STDERR to the PHP keyword list
  • Fixed bug in which user customizations to date/time formats were ignored (and the wrong formatting was generated).
  • Corrected an error in the headerdoc for bbxtGetSelection() and bbxtSetSelection().
  • Fixed bug in the Hex Dump tool in which the “Blank line every…” setting was not properly reloaded if the check box had been turned off, leading to a crash (unless you noticed the missing setting and reset the radio buttons).
  • Fixed broken Rendez—uh, Bonjour server lookups when running on Intel.
  • “Find all Misspelled Words” no longer limits the range of spell checking to the first 64K of the document.
  • Fixed bug in which PHP functions-returning-reference didn’t appear in the function menu if whitespace existed between the “&” and the function name.
  • Fixed an edge case in the PHP scanner in which an empty function body (consisting of two braces with nothing between them) or other empty brace construct would result in subsequent functions being lost.
  • Un/Comment Selection does nothing when there’s no selection, so in that case it is now disabled.
  • Changed the “triple-click” behavior for hard-wrapped text and for soft-wrapped but hard-line-numbered text (this also applies to “single-click line selection”). It is now consistent with the behavior of triple-clicking soft-wrapped and soft-line-numbered text. Specifically, the line/paragraph initially clicked on will always stay selected, whether you drag the selection up or down.
  • Fixed a bug in the tab auto-expansion code.
  • If a file looks like an “mbox”-format file, TextWrangler will no longer let the HTML guesser at it, just in case the file contains HTML messages that might cause things like text-encoding miscues and misguided attempts to interpret the file as HTML.
  • Fixed bug in which dropping bundled plug-ins (or language modules) on the application would cause them to open in a disk browser, rather than being offered for installation.
  • Fixed the incorrect description for “show documents drawer” in the scripting terminology.
  • Fixed capitalization for “Default list font” in the preferences search results
  • Disk browsers now open only one file descriptor per opened directory, rather than one file descriptor per listed directory; this reduces resource consumption and the risk of failure when viewing listings with lots of directories.
  • Fixed bug in which saving a document would cause it to become disconnected from the Text Printing preferences, such that changes to the prefs didn’t affect printing options for the document until the document got reopened.
  • Fixed a bug in which SFTP passwords were stored incorrectly in the system keychain, so depending on what other passwords were there, the ‘wrong’ password would be used when connecting to an FTP or SFTP server. This fix also improves intoperability with passwords stored by other Mac FTP/SFTP clients.
  • Fixed a bug where password fields in dialog manager modal dialogs (e.g. Save to FTP Server) could inadvertently leave secure input enabled. This in turn broke applications which polled the keyboard (e.g. SketchFighter) as long as TextWrangler was running, once the condition was triggered.
  • Fixed a bug in which a 22701 error would be reported when using the Bookmark popup in the FTP browser to change servers at a point after which the FTP connection was automatically closed.
  • Removed support for colon-based paths in Find File By Name
  • Added super-secret logic to Open Selection so the right thing happens more often than the wrong thing.
  • Fixed enabling of Open button in Open by Name dialog.
  • Fixed bug in which {disk, results} browser windows didn’t auto-guess the file’s language correctly.
  • Restored metadata missing from the default support folder items.
  • Fixed a bug where “Save Default Window” was omitted from the menu key list.
  • Fixed bug in which script application packages in Application Support/TextWrangler/Scripts were listed as folders, not as runnable scripts.
  • The Disk Browser folder list now hides packages unless the File Type menu is set to “All Files”.
  • Multi-file search/replace and Text Factories will skip packages unless “Search Invisible Folders” is turned on.
  • Fixed a bug where the Next/Previous Function command did not always work predictably.
  • The Grep Search Pattern and Grep Replace Pattern syntax coloring now uses the preferences “Keyword” color for coloring escaped character sequences.
  • Fixed a bug where under certain conditions the startup action didn’t fire when the application was “reopened”.
  • Fixed a pair of bugs which conspired to cause the edit tool to abort when trying to open a path with a trailing colon
  • Make sure the Find dialog titlebar appears on screen if the saved geometry doesn’t intersect nicely with the current screen(s)
  • Fixed bug in which a bookmark created in an FTP browser did not correctly retain the “SFTP” setting if a connection was not open at the time the bookmark was created.
  • After telling the spell checker to Learn or Ignore a word, we remove the squiggles from other instances of that word.
  • Fixed bug in which the function popup item didn’t resize correctly when switching to different files in a browser window.
  • Fixed crash which would occur when deleting saved Grep patterns from the beginning or middle of the saved patterns list in the Text Search preferences.
  • Fixed bug which limited text entry in the comment fields (in the Language Options dialog) to numeric characters.
  • Fixed crash that would occur when running out of memory during a Replace All on a sufficiently large file.
  • Fixed a bug where scrolling/editing in split view #1 could cause the background (page guide, tab stops) to get out of sync.