SUPPORT : TextWrangler : Archived Release Notes : TextWrangler 2.0 Release Notes
TextWrangler 2.0 Release Notes
TextWrangler 2.0 is a new major version, which includes hordes of new features and enhancements to existing features, along with sundry behavioral changes and bug fixes.
This page documents all feature enhancements and bug fixes included in the TextWrangler 2.0 release. 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 "TextWrangler User Manual" from the Help menu.
Requirements
TextWrangler 2.0 requires Mac OS X 10.3.5 or later. This is necessary because 10.3.5 contains fixes for bugs which adversely affected the operation of TextWrangler.
The folder previously known as "TextWrangler Support" is now named "TextWrangler" in the file system. To be clear:
~/Library/Application Support/TextWrangler /Library/Application Support/TextWrangler
If ~/Library/Application Support/TextWrangler doesn't exist when the application starts up, this folder will be created for you and filled with the factory default examples.
NOTE: Keystrokes are no longer stored directly in the files themselves (among other reasons, because all users don't have write access to the local domain files.) Existing keystrokes in files themselves are ignored - you'll have to set your keystrokes once after upgrading to this version.
Additions
The following features and enhancements are new for TextWrangler 2.0:
-
TextWrangler now supports a multiple-documents-per-window interaction model, accessed via the Documents Drawer and the Navigation Bar. The drawer presents a list of all of the documents that are open in that window, and you can select a different document by clicking on it. To open and close the Documents Drawer, use the widget at the right-hand end of the text window status bar, or use the appropriate command on the View menu.
Each item in the list has a close widget ("X" in a gray circle): click the close widget to close the selected document. If the document being closed is the only document in the window, the window will close as well.
The Action menu in the upper left-hand corner of the document drawer allows you to perform a selected action on one or more selected documents:
- "Close" closes the selected document(s). If the document being closed is the only one in the window, the window is closed as well.
- "Close Others" will close all documents in the drawer except for the selected one(s).
- "Save" will save the selected document(s).
You can also perform the above actions by control-clicking on an item in the list (or right-clicking, if you have a three-button mouse).
The "New" command on the action menu creates a new text document in the window to which the drawer is attached.
The Navigation Bar is the strip right below the window status bar. It contains a popup menu which, when clicked, presents a list of all of the documents open in the window. To the left of the popup menu are the "Previous Document" and "Next Document" buttons, which allow you to cycle through all of the documents that are open in the window. With the Navigation Bar, you can get to all of the documents in the window without having the drawer open, thus conserving screen real estate.
The behavior of TextWrangler with respect to using the Documents Drawer is controlled by the new "Documents" preferences. The "New & Opened Documents" group controls TextWrangler's behavior when creating new documents or opening documents from within TextWrangler itself. Select "Open in the Front Window" to have such documents added to the Documents Drawer of the front editing window; choose "Open in a New Window" to maintain the old one-window-per-document model (as in previous versions of TextWrangler).
Regardless of the above setting, you can always use the "New Text Window" command (that is, File -> New -> Text Window) to create a new untitled text document in its own window.
The "Documents Opened from Other Applications" controls TextWrangler's behavior when the open-document request comes from another application (including the Finder).
Finally, the "Open the Documents Drawer" determines the conditions under which TextWrangler will automatically open the Documents Drawer.
When working in a window with multiple documents, you can use the usual "Close" command to close the entire window, including all of the documents contained therein. If any of the documents have unsaved changes, TextWrangler will present you with a confirmation dialog, listing all such documents and giving you the opportunity to save them all, discard the unsaved changes, or cancel the close operation.
To close only the document that you're working on, use the "Close Current Document" command on the File menu, which would have the same effect as clicking on the close widget in the Documents Drawer, or selecting the document and using the action menu to close it.
-
TextWrangler now uses ATSUI for text rendering. This greatly improves its handling of Unicode files, particularly those containing glyphs from multiple disparate languages (e.g. Roman, Japanese, and Cyrillic all in the same file).
Open documents are now always rendered internally as Unicode, regardless of the on-disk encoding; previously this was only done if the document was in a non-Mac Roman encoding. This should in general be invisible as it was in 7.x, but old plug-ins and language modules that are not Unicode-savvy will not be loaded (and a message will appear in your console to that effect).
-
Many commands which were supplied as plug-ins and so were on the Tools menu are now baked into the application:
File menu:
Hex DumpText menu:
Un/Comment Selection
Add/Remove Line Numbers
Prefix/Suffix Lines
Sort Lines
Process Duplicate Lines
Process Lines Containing There is a new preference in the Differences preferences which controls whether palettes are hidden when doing a Find Differences.
There is now a command "Special Characters..." at the bottom of the edit menu which brings up the system special characters palette.
If the "Open File by Name" dialog contains a file:// URL, TextWrangler will ask the system to resolve the URL to a local file, and if successful will open the file thus found.
TextWrangler's spelling checker UI is all new. The "Check Spelling" command on the Text menu will now find and highlight the next misspelled word in the document (starting with the insertion point or end of the selected range). If any is found, it will be underlined with red. You can then use the "Show Spelling Panel" command to correct the word, or Control-click on the word to bring up the contextual menu with spelling options (including replacements for the word, and the dictionary-management options "Ignore Spelling" and "Learn Spelling".
It is now possible to set the tab width in the font panel. As such, the "Font & Tabs" command has been removed from the main menubar.
-
The Find Dialog search history has been enhanced in two significant ways:
Search and replace strings entered via Command-E and friends are added to their respective histories.
Search strings restored via the popup menu restore their grep state. Replace strings do not.
-
The following remark in the LaunchBar 4 release notes...
Limitations: The "recent documents" sub-search only works with Cocoa applications...is not true for TextWrangler. :-)
The prefs window now uses the font panel for setting fonts/tabs where appropriate.
-
The multi-file search features of the Find dialog have been worked over. The biggest improvement is that you can choose multiple sources for a multi-file search, and you can mix different types of sources: folders, individual files, file groups, open documents, and web sites. When you turn on the "Multi-File Search" option, a drawer will appear in which you can specify which sources to use (by marking the check box on each one). The text box beneath the "Multi-File Search" check box will display a summary of the selected items; click and hold to see details (such as file paths).
The "Options" button now presents a sheet for the various multi-file search options.
The "Other" button brings up an OS-standard file selection sheet for choosing files to search; you can choose multiple items, including text files and folders. If you hold down the Option key when clicking the Other button, you can select invisible items, and dive into packages.
You can drag items to the sources list drawer or to the file summary area to specify them as the search sources. To add to the existing sources, use Option-drag.
The "Saved Search Sources" popup allows you to save sets of search sources for later use.
There's a new group of items in Set Menu Keys: "Status Bar". In here you will find the means to assign menu key equivalents to frequently used items on the Text Options and Document Options popup menus (which otherwise have no equivalents on the menu bar).
There's a new setting in the Text Editing preferences, to control whether typing Option-yen on a Japanese keyboard generates a yen ( ¥ ) or a backslash ( \ ).
Educate Quotes makes its appearance on the Text menu.
There's a new command on the Text menu: "Straighten Quotes". It will convert curly single and double quotes to straight single and double quotes ( ' and " ).
-
Added a new text transform: "Normalize Line Endings". This command replaces the old "Filter Line Feeds" option in Zap Gremlins, and is much more useful: if a file contains a mixture of Mac, Unix, and DOS/Windows line endings, the "Translate Line Breaks" preference is insufficient to convert the document for viewing and editing; after conversion, the document may appear to not have any line breaks at all (this usually happens if the first line break in the file is a Mac line break, and all the rest are Unix), or to have an invisible character at the beginning of each line.
If this happens to you, use Normalize Line Breaks to convert the remaining line endings, and save the document. At that time, all of the line endings will be of the appropriate type, and future line-break translation will work correctly when you next open the document.
-
Hex Dump has been split into two (technically, three) commands:
Hex Dump File: This will open an application modal dialog with a familiar file well to choose the file to dump, radio buttons to choose the fork, and various output formatting controls.
Hex Dump Front Window: This will drop a document modal sheet with radio buttons to choose in memory or on disk, and the same output formatting options. (There is a Just Do It(tm) variant as well.)
All of the text transformations on the Text menu now bring up document-modal dialogs ("sheets") rather than application-modal dialogs. Note that the "Selection Only" option has been removed; each transformation will operate on the selection range if there is one, and on the entire document if not. Finally, for each transformation that brings up a dialog, you can hold down the Option key to invoke it without the dialog (using the last settings chosen from its dialog, or the factory defaults if appropriate).
Prefix/Suffix Lines is now recordable. Note that the scripting interface has changed, so if you have existing scripts which invoked the old Prefix/Suffix Lines plug-in, they will need to be modified. (See the dictionary for details.)
Add/Remove Line Numbers is now recordable. Note that the scripting terminology has changed; if you have scripts that invoke the old Add/Remove Line Numbers plug-in, they will need to be modified. See the scripting dictionary for details.
Sort Lines is recordable. Note that the scripting interface has changed slightly; see the dictionary for details.
New scripting terminology is in place for Educate Quotes and Straighten Quotes. If you have previously scripted Educate Quotes, please review the dictionary for changes.
The Prefix/Suffix Lines sheet now recognizes the same escapes as the find dialog (\t, \r, etc.).
Added Find & Mark All to Text menu
-
If you never use the FTP/SFTP-related commands (Open from FTP/SFTP Server, Save (A Copy) to FTP/SFTP Server, New FTP/SFTP Browser), you can remove them from the menus with this shell command (Note: your web browser may have wrapped the following line for display):
defaults write com.barebones.textwrangler FTP:HideFTPMenuCommands -bool trueNote that TextWrangler only reads this setting when it starts up, so you'll need to quit and relaunch after changing this.
Sort Lines has clean sheets.
Add Marker gets a sheet.
Add/Remove Line Numbers uses a sheet.
There's a new tool that can be used to invoke Find Differences from the command line: "twdiff" is now installed by the "Install Command Line Tools" button in the Tools preferences.
The Philip bar as we know it is history. It has been replaced by a "page guide" which indicates the historical Philip Bar point in the window's content area (rather than being limited to the status area).
Tab stops are no longer confined to the status bar; when "Show Tab Stops" is turned on, grid lines will appear in the window's content area.
There's a new setting in the "Text Colors" preferences: "Highlight Insertion Point". When this is turned on, the line containing the current insertion point is highlighted in the indicated color. (The highlighting goes away when a selection is made.)
There is now a "Paste Column" command to force a paste as a rectangular column.
Process Lines Containing gets a "Don't" button
Process Lines Containing intuits the selection setting from the target window
Process Duplicates is now document modal (sheet). It, also, has a "Don't" button and terrific selection intuition.
Marker commands are now hosted in the Text menu. Among other things, this allows you to add menu shortcuts to the marker commands.
All the Text menu commands (that make sense) have 'Just Do It' variants, which will reuse the settings from the last dialog invocation. These are not all hooked up, but will be when the sheet transition is complete.
Printing is now recordable.
Multi-file searches no longer occupy the application's entire attention. This means that you can Do Other Stuff while a multi-file search (scripted or otherwise) is in progress, and you can also have multiple multi-file searches running at the same time. Each search in progress will display its own progress window. Closing the window or clicking its Cancel button will stop the operation in progress and display any results generated thus far.
The preference to control list font display has been added to TextWrangler.
The "Built In" spelling checker option (see the Spelling preferences) now uses the Mac OS X system spelling checker. As such, the Spelling preferences pane has been heavily worked over (specifically, the dictionary configuration list has been removed).
-
The application no longer uses a separate prefs file, but rather uses the appropriate OS services for storing preferences. There are several practical implications:
Prefs files are much less likely to get corrupted and need replacing or restoring;
The new system is much friendlier in setups where prefs storage is not on the local disk;
It is possible to modify preferences without launching the application by using the appropriate "defaults write" commands (but you must take responsibility for any bad things that happen as the result of doing so without explicit advice from Tech Support).
If there is a "TextWrangler Prefs Data" file inside of your TextWrangler Preferences folder (in either the TextWrangler support folder or in ~/Library/Preferences), most of the old settings will be imported.
Note: Not all items are usefully stored in the preferences file. For those items, TextWrangler will create a folder named "com.barebones.textwrangler.PreferenceData" in ~/Library/Preferences and store those items there. Unlike previous versions, TextWrangler 2.0 will not look for its preferences folder in any location other than ~/Library/Preferences (or, more specifically, the user preferences folder as instructed by the system).
Preferences are now "live", and don't need to be explicitly saved, so the "Save" and "Revert" buttons have been removed from the Preferences window.
There are two new preferences in "Editing: General" which allow the user to control the threshold at which proportional and fixed-width fonts are anti-aliased.
-
The edit tool now supports two new flags for dealing with pipes:
--clean the piped data will be opened an an untitled document which is initially clean (or unmodified) so that you can close the window without save confirmation. --view-top the document is scrolled to the beginning of the piped data rather than the end (the default.)
There is a preference pane to control the presence of the various commands on the contextual menu in text editing views.
The Text Colors preference pane has a control which lets you adjust the contrast of the tab stops and page guide.
The "Text Printing" preferences panel now has settings to control the defaults for printing the rubber stamp.
FTP/SFTP browser gets a Rendezvous popup. Works just like the one in the "Open from FTP/SFTP Server" and "Save to FTP/SFTP Server" dialogs.
If you ask TextWrangler to open a Text Factory document, it will present a dialog so that you can run the factory. The dialog provides control over the items to be processed, and the options to apply when running the factory.
Renamed some of the integrated plugin menu items.
-
Support for the old Projector 'ckid' resource has been removed.
If a file containing a 'ckid' is opened, it will not be recognized.
The "Projector State" property has been removed from the scripting terminology.
The "Projector State" option has been removed from the file filter UI.
The "Projector Info" icon has been removed from the status bar.
Projector status is no longer displayed in file group windows.
The site updater, Update Images, and multi-file search subsystems will all ignore the 'ckid'.
The "Open Selection" service has been renamed to "New Window with Selection" to more accurately convey what it does.
The "Remember Dialog Placement" switch (Application preferences) has been consigned to the dustbin of history.
-
TextWrangler no longer saves document state in the resource fork of the document's file. This has a number of advantages, including (but not necessarily limited to): no longer creating resource forks to save document state, better compatibility with source-control systems, and easier personalization (your changes don't affect other users of shared files).
Note that no distinction is made between saved-state formats; the old "MPW" and "BBEdit" state settings are gone. You can control whether TextWrangler saves document states by means of the "Save Document State" switch in the Text Files: Saving preferences.
The "State" preferences have been consigned to the dustbin of history. Settings which control how (or if) TextWrangler honors saved state are now in the "Text Files: Opening" preferences.
The Font menu has been removed. (The font panel, which you can access by choosing Show Fonts in the Text menu, is its replacement.)
The product serial number is now stored using system preferences services. The "TextWrangler Serial Number" file is no longer used and can be deleted.
The handling of built-in encodings has been changed. They're no longer listed separately, but instead are now in alphabetical ordering in the encoding menus and in the "Text Encodings" preferences pane. (By dint of their names, the Unicode encodings are all grouped together.)
The "Allow Script File Guessing" switch has been removed from the "Text Search" preferences. (It is no longer necessary.)
Unicode input is now always on; the "Enable Unicode Input" preference is thus meaningless and consigned to the dustbin of history.
The Mac OS X print dialogs provide their own settings management, so there's no more need for TextWrangler to have its own. Consequently the "Page Setup" and "Print" buttons (which were used for setting defaults) have been removed from the "Text Printing" preferences.
The "Print Backwards" and "Print Two-Up" settings have been removed from the Text Printing preferences and the Print Options dialog, since those settings are handled by the OS printing subsystem.
Process Lines Containing and Process Duplicate Lines are now presented as document-modal dialog boxes ("sheets").
The "Batch Find" option has been removed from the Find dialog.
Since non-batch finds are no longer possible, the "Find in Next File", "Open All Matches", and "Find & Replace All Matches" commands have been removed from the Search menu.
The "Show Page Guide" and "Show Tab Stops" settings no longer require that the status bar turned on, so they're no longer visually subordinate to the "Show Status Bar" setting in the Status Bar preferences and in the Text Options dialog.
The "Status Bar" prefs pane has been renamed to "Text Status Display", which more accurately reflects the purpose of the settings it contains. The layout has been reorganized to reflect the behavior of the settings (viz. separating those which take effect immediately from all windows versus those which simply establish the defaults for new windows).
-
The following settings are now applied globally to all windows, and are no longer fetched (or stored) from saved state. Changes to the listed settings take effect immediately on all open windows:
Editor Defaults -> Auto Indent
Editor Defaults -> Balance While Typing
Editor Defaults -> Syntax Coloring
Text Status Display -> Show Status Bar
Text Status Display -> Show Cursor Position
Text Status Display -> Show Current FunctionNote that the eponymous settings have been removed from the Text Options dialog, from the Window Options popup that appears in the status bar, and from the scripting dictionary.
Support for the dead languages 68K Assembler, ScriptX, and GuideScript is no longer built in.
If the Mac OS X developer tools are not installed, the "Find in Reference" command is removed from the Search menu.
Clipboard contents are no longer saved when the application quits, nor restored when the application starts up.
Grep patterns are no longer stored in the "Grep Patterns" file in the "TextWrangler Preferences" folder. Instead, they're stored as XML in "Grep Patterns.xml". Existing patterns are migrated if an old-format "Grep Patterns" file is found; if not, factory defaults will be loaded.
"Open URL" has been removed from the Text menu. (You can still use the standard Command-click gesture to open a URL if so desired.)
"Filter Line Feeds" is no longer an option for Zap Gremlins.
The checkbox titles in the Process Duplicates dialog have been changed to more clearly reflect their function: "Matches" are really Duplicates, and "Remainder" is really Unique Lines.
The name of the application prefs folder has changed; it is now "com.barebones.whatever.PreferenceData", so that when you're sorting your Preferences folder by name, it'll be right next to "com.barebones.whatever.plist".
-
Plug-Ins are loaded (and only loaded) from the following locations:
~/Library/Application Support/TextWrangler/Plug-Ins
/Library/Application Support/TextWrangler/Plug-Ins <Application Bundle> -
Startup/Shutdown items are only loaded/executed from:
~/Library/Application Support/TextWrangler/(Startup|Shutdown) Items/
-
Language Modules are loaded (and only loaded) from the following locations:
~/Library/Application Support/TextWrangler/Language Modules/
/Library/Application Support/TextWrangler/Language Modules/
<Application Bundle> -
Menu Scripts are loaded from, and only from:
~/Library/Application Support/TextWrangler/Menu Scripts/
Since TextWrangler no longer requires you to choose different fonts for different writing systems, the "Fonts" preference panel is gone. The old default font setting in the Editor Defaults preferences has returned.
Shutdown items are now run after all windows have been closed, and now only if the application is actually quitting. Previously, shutdown items were run before all windows were closed, and were run when the application was told to quit (either by the Quit menu command or via the scripting interface), regardless of whether the application quit or not. Thus, if you have items that you want to run as the immediate result of a Quit command, you should write a menu script attached to TextWrangler.
Save a Copy adds the saved copy to the recent menu.
The busy grep pattern warning is now presented as a sheet
The feedback presented for Balance While Typing mismatches is now completely different. The screen no longer flashes, since too many people didn't read the manual to find out why their screen flashed when typing a right-paren.
-
The following changes have been made to modified-click behavior:
Command + Option + double-click no longer does a Find Selection on the double-clicked thing. (It was too obscure and nobody knew to use it.)
Command-double-click now does a Find Definition on the selected word.
Revert/Revert... has been collapsed into one menu item. Revert for text documents no longer prompts for confirmation since the operation is undoable.
The "Follow Folder Aliases" and "Follow to Remote Volumes" switches (in the File Search preferences) have been consigned to the dustbin of history.
Moved the "Exclude Matches" checkbox to reduce confusion
The behavior of the Windows palette has been changed so that single-clicking on a window's name in the palette will now select it (rather than the previous requirement of double-clicking).
"Philip Bar" has been changed to "Page Guide" where it appears in the UI.
The factory default keystroke for Show Fonts Panel is now Command-T. This has been removed from "Replace & Find Again" but there is an autoconfigure dialog for it.
Single-file Replace All results are now presented in a sheet attached to the window in which the operation was done, rather than in an app-modal dialog.
-
The "Text Editing" prefs pane has been split in two, and renamed:
"Editing: General" contains settings which control overall text editing behavior.
"Editing: Keyboard" contains settings which control keyboard navigation and editing gestures.
-
The following changes have been made to Compare Front Two Documents to support multi-document windows:
If there are at least two text windows open, the command will be available and the active documents in each of those text windows will be compared.
If there is only one text window open, and it contains exactly two documents, the command will be available and those two documents will be compared.
You can always select two documents in the documents drawer list and compare them using the action menu or the contextual menu.
And you can always compare arbitrary documents with the "Find Differences..." command.
TextWrangler no longer needs to pin the maximum string length of a stored search match, so it doesn't. This makes it possible to get back the entire contents of a match via the scripting interface.
If TextWrangler encounters a language module that is not Unicode-aware, it will not load the module and log a message to the system console.
If TextWrangler encounters a plug-in that is not Unicode-aware or cannot run on Mac OS X, it will not load the plug-in and log a message to the system console.
TextWrangler now checks the entered Grep pattern when you click "Find", "Find All", "Replace", "Replace All", or "Don't Find" in the Find dialog and you have "Use Grep" turned on. If there is an error in the Grep pattern you will need to correct it before dismissing the dialog with one of these options.
References to "New Window" in sort lines, process duplicates and process lines containing have been changed to "New Document" (since depending on your multi-doc prefs you may not get a new window.)
The concept of "fractional widths" no longer applies in this brave new world of ATSUI text rendering, so the eponymous option has been removed from the printing preferences and dialogs.
The buttons at the top of the Windows palette have been replaced with the same widget used in the Documents Drawer.
There's no particular reason that we need to suppress the Script menu when the application is started with the Shift key down, so we don't.
If the sound is muted or the volume all the way down, instead of beeping when there isn't a match, TextWrangler will display "No Match" as iCandy. There is no way to get this behavior if the sound is on.
Adjusted the wording for to "Always Show Full Paths" for the open recent menu and windows menu. If the option is off full paths may still be shown if the name is ambiguous.
Items on the File Options status bar menu are now enabled for documents that are read-only; if you choose an option, you will get the same confirmation as when attempting to edit a read-only file.
Recorded scripts for text operations now specify the affected text as an element of its containing document, rather than the window, which ensures correctness when reusing the recorded script in windows containing multiple documents.
The switch to honor printing options in the saved state (Text Files: Opening prefs) is gone; the application will always use the default settings as specified in the "Text Printing" preferences. You can still change printing options on a per-document basis, but those changes will not persist after the document has been closed.
The application now presents a Tools menu as long as the "BBEdit Plug-Ins" option is enabled in the Application preferences and the application is not launched with the Shift key down (which disables plug-in loading, among other things). If no plug-ins were loaded (either because none were installed, or because none were compatible), the Tools menu contains a single command, "No Plug-Ins Installed", which when chosen presents a dialog explaining why no plug-ins are listed on the menu.
The various subordinate dialogs used by the FTP/SFTP interface (Open from FTP/SFTP, Save to FTP/SFTP, and the FTP/SFTP browser) are now window-modal (sheets). This includes the "Go To", "New Dir", and "Get Info" dialog boxes, as well as the alert confirming file deletions.
The window list now has close widgets on its list items.
When printing the selection range of a document with Print Line Numbers turned on, the first printed line number now corresponds to the line number of the start of the selection range.
Fixes
The following problems have been corrected in TextWrangler 2.0:
Numbers displayed in the "Get Info" dialog for text windows are now formatted using the appropriate separators for the language system in use.
Corrected a bug where command clicking in the titlebar of the frontmost window when the application wasn't frontmost incorrectly resulted in a path popup.
Fixed long-standing but obscure bug that, due to over-zealous lookbehind, would sometimes fail to recognize a '/'-delimited regex if it was preceded by a comment.
The offset property of text objects has been renamed to characterOffset to avoid a terminology conflict with the standard additions. Existing compiled scripts should be unaffected - new scripts will have to use the new terminology.
Text drawing would crash when using "Show Invisibles" with some non-Roman fonts. This should no longer happen.
Fixed a bug in which trying to Command-drag a window behind a moveable modal dialog would result in the dragged window moving to France.
Internet location clippings (.inetloc) are now handled like their more specific brethren (.mailloc, .ftploc, .webloc). In particular, sftp URLs in .inetloc files are now handled directly in TextWrangler when opened.
If the selection range contains two colons in a row, it's probably not a file name, so we don't try to open it.
If the selection range begins or ends with white space, it's not considered eligible for Open Selection and the "Open File by Name" dialog will be presented instead.
Dragging, copying or saving a results list now results in POSIX paths.
Improved the performance of reading from and, especially, writing to large MacRoman files. This does not carry over to other encodings, as it is accomplished by bypassing the TEC.
Corrected a mistake in the Perl syntax coloring scanner that would cause it to almost always break runs at the end of a line. A side-effect of correcting this is that the '/' operator is no longer treated differently if it appears on the second or subsequent line of an expression, i.e., it will not mistakenly be treated as a string delimiter if it would not have been had the entire expression been on a single line (pardon the legalese :-).
Fixed a bug where open by name would open ~/... as /...
TextWrangler no longer triggers its own rotate windows code, but instead lets the system rotate our windows for us. We'll now track system features and bugs :-).
Fixed a bug where sometimes the submenu head action would be triggered (File->New, File->Open Recent) when it shouldn't have been.
Changed the way that text encoding preferences are stored, so that if the system-defined list changes, things don't get crossed up.
Fixed a bug where scripted results of process lines containing were incorrect if the input data was unicode. (A non-unicode string was returned in which every other byte was a NULL.)
Fixed command keys from leaking through as input text in the quick find window.
Fixed a bug where if you renamed a file outside of TextWrangler and had verify documents turned on you'd get a -43 file not found error on resume (but then the document would work normally.)
Dragging the status bar or proxy icon to the trash once again moves the file to the trash and closes the edit window as appropriate.
Styled-text files are no longer recognized, nor are 'styl' resources added to output files any more.
Fixed a bug where if a rectangular selection extended outside of the view rectangle and "underneath" the scrollbar, clicking on the scrollbar would incorrectly start a drag.
Fixed a bug where byte swapped utf16 files without a bom were incorrectly filtered out when "All Readable" was chosen in the open dialog.
Corrected a bug where open documents whose name begins with a hyphen would appear as a separator in the popup menus in the find differences dialog.
When selecting line based errors (as opposed to range based errors - for example output from a perl syntax check) in an error browser the hard line range is always selected so the proper content will be selected even if soft wrap is turned on.
When accessing the properties of an object (i.e. properties of document 1) values which cannot be currently obtained (for example the disk file of an untitled document) are now returned as "missing value" in the record rather than being omitted from the record entirely.
Fixed crash which would occur when a negative "length" argument was passed to the bblmAddTokenToBuffer() callback.
Corrected the Java function scanner's handling of catch blocks.
Refined the way backwards grep searching is handled.
FNNotify() after creating a backup file so it appears in the Finder right away.
Fixed a bug where if you were showing keys in a dialog by holding down the command key, then switched apps with command-tab, they keys got "stuck" in the background dialog.
If the user cancels while installing a command line tool, we no longer report that the installed version is up to date.
The dialog telling you that two files were identical was missing the application icon. Not any more.
Fixed a bug where if you issued edit --print *.h some of the print events sent to TextWrangler might have been dropped without being handled.
Fixed a botched redraw following a change in wrapping mode (most noticable when turning soft-wrapping ON while scrolled to the middle of the text).
Fixed a bug where the app might crash when saving an empty document if the "Force New Line at End" preference was turned on.
The Quit menu item is once again attachable.
Improved performance of extended rectangular selections (shift-option-click)
Fixed a bug where using the close command on a minimized dock window didn't work correctly.
Fixed a minor C function scanner glitch.
The edit menu now reads "Undo Replace" after a replace and find again operation.
Fixed up some lingering cursor-arrow issues.
When there is no selection, return an empty string to the service code so that we work with "Insert" type services.
Fixed a bug where the TSM document in some dialogs wasn't properly deactivated when you popped up a Nav Services dialog on top of it. This resulted in keystrokes inappropriately going to the dialog, and type ahead not working in the nav dialog if you were using an input method such as Spell Catcher.
Password fields should now work better with input methods such as Spell Catcher.
Fixed a bug in the window floater where non-draggable items were added to the drag.
Fixed bug in which the current-function display wouldn't display the current function in C/C++/Objective-C files if the last character in the function was at the very end of the file.
Tweaked Perl syntax coloring scanner to make it *not* see << followed by a number as a HEREDOC.
Shuffled string constants around as a partial workaround for the QuickTime internet plugin leaving its resource file at the top of the map and screwing things up. (This has also been reported to Apple.)
Fixed two bugs which conspired to make Open File By Name fail to take the appropriate shortcut if the window was already open.
When attempting to "Lock" an unlocked file, TextWrangler is more discriminating about what work it chooses to do.
Fixed an edge case where counting the selected lines was OB1 if the selection was at the end of the file, and the file did not end in a line break.
Added "external" and "return" to the built-in Pascal keyword list.
Modified the "Select Line" menu command handler so that subsequent shift-up or -down arrow gestures work on whole lines as well.
Fiddled with the way "unicode not from input method" text is handled so that smart quotes now "live balance" again.
Fixed bug which prevented some menu scripts from being invoked correctly.
When doing a Replace All, TextWrangler now treats "Wrap Around" as a synonym for "Start at Top". Apart from providing the desired results, this provides much greater performance than the old "Wrap Around" behavior.
The command-line tool now reports a more specific (and helpful) error message when the OS refuses to launch a copy of the application out of the Trash, or a version of the application that cannot be run on the OS in use.
Clarified error message for -54 error
The Recent Search Strings remember the grep setting for the last time the string/pattern was searched for.
We restore the grep setting to the find manager _after_ importing the find scrap. This allows a pattern to be imported from the find scrap without escaping.
Enabled individual spaces to be treated as "words" while dragging after a double-click. Previously, multiple spaces would be treated as "words" but a single space would be treated as part of the word just beyond it.
Corrected display of non-Roman font names at various points in the Prefs window.
Fixed bug in which type-matching in the disk browser tended to not work immediately after diving into or coming out of a folder.
Fixed bug in the FTP dialog and browser in which failed listing attempts (such as double-clicking on a directory to which you didn't have access) would end up hosing the item list.
Fixed bug in which saving a file opened from an FTP/SFTP browser incorrectly changed the working directory of the login session; this would in turn confuse the browser.
The Color Math Strings option is part of the TeX Options dialog.
If you choose an untitled document for comparison, the Find Differences dialog will remember it until you choose something else or until you quit, whichever comes first.
Fixed a bug in the 'edit' command line tool where when installing, it would ignore the passed in man page name, and always overwrite its own manpage.
Made a slight refinement to the conditions under which individual spaces are treated as "words" while dragging after a double-click. It now won't happen if the character to the right (while dragging left) or the character to the left (while dragging right) of the space isn't a "word" character. This allows leading or trailing punctuation to be added to the selection without gobbling up the spaces, too.
The Python language module now recognizes Python shebang lines which include the version number (e.g. "#!/usr/bin/python2.2")
Extremely long lines of text are much less likely to wrap over on themselves now (can still happen at larger font sizes, e.g., Monaco more than 26 pt).
Modernized cosmetics of the "No Differences" alert and a couple of its relatives.
Had to allow the Perl syntax-coloring scanner do some extra look-behind while typing (so as to distinguish '/' as an arithmetic operator from '/' as a string delimiter). A previous bug-fix prevented it from seeing anything before the insertion point while typing, but this was relaxed to let it go back as far as the beginning of the line (any further an it might back into a comment, the source of the original bug).
Modernized the error reporting dialog.
Fixed clipped text in keyboard preference pane.
Added additional PHP5 keywords
Verify and Revert use the same encoding to interpret the file which was used initially. This ensures that the file is read identically the second time as it was the first if you used an override encoding (or had reopened using encoding since the initial open) instead of using your default or allowing the app to sniff the meta-data.
Dialog boxes for which the custom options are not meaningful no longer display those custom options. This includes the "Save a Copy" dialog, in which you could specify options for text encoding and line endings which didn't take effect. (If you want to save an alternate version of the document with different options, use "Save As" and then reopen the original.)
Files whose names end in ".txt" or ".text" are now implicitly mapped as text files when "Map the File Name" is turned on (Preferences -> Text Files: Opening) and no explicit suffix mapping exists.
When "Search Invisible Folders" is turned off for multi-file searching, folders whose names begin with a period (.) are now skipped.
Fixed a bug that could cause live-balancing to fail in the presence of embedded (*...*) and {...} comments and possibly even strings.
Fixed crash which would occur when the application was asked to load the scripting terminology (either implicitly, as when saving, or explicitly by a script editor) after it had been started up with the Shift key held down (which disables loading of plug-ins and other services).
Fixed an ancient bug: case-insensitive, non-grep searching never worked for non-ASCII chars - ever. Go figure...
Fixed bug in which removing a suffix caused the contents to grow an extra line break, either at the end of the selection range or at the end of the document (if there was no selection range).
Fixed a bug where "Open Scripts Folder" in the scripts menu didn't auto-create the scripts folder if it was missing.
Fixed a regression where Entab, Detab, Zap Gremlins, and Change case didn't work correctly on rectangular selections.
Fixed bug in which using the Return key to open a connection in an FTP/SFTP browser (see File -> New -> FTP/SFTP Browser) left the keyboard focus on the server name, rather than on the file list.
-
In "modern" Fortran dialects (Fortran90, Fortran95, Fortran2000), the function scanner now recognizes qualified subroutine and function endings:
END SUBROUTINE MUMBLE
This corrects the Show Current Function display in such files. (Check the Suffix Mappings in the Languages prefs to make sure that your Fortran suffix mappings are correct for your desired use.)
-
Some of the system frameworks have subdirectories in their Headers directories, so you'd use an include statement like this:
#include <IOKit/usb/USB.h>
If you select the stuff between the angle brackets and choose Open Selection, BBEdit now finds the indicated file.
-
The JavaScript/ActionScript function scanner now correctly handles functions with a declared return type:
function myFunction() : mumble { /*...*/ } Allowed for \x0, \x00, \x{0}, etc. to be recognized and applied in grep replace strings.
TextWrangler will provide non-Unicode service data if possible so that it interoperates with services that don't consume Unicode natively.
-
Fixed bug in which "count" events targeted to an editing window would return zero for any element other than "document" or "text document":
count lines of window 1 -- "lazy" targeting, subject to failure
Note that the construction above is not strictly correct, and you should not depend on it working forever. The correct and future-proof technique is to target the text of the window, rather than the window itself:
count lines of text of window 1 -- correctly targets text
You should review your scripts and ensure that nothing targets the window on the assumption that the event will be delegated to the text, because this will not always be the case.
Fixed a bug where the Python, TeX and Setext language modules were missing the leading period in their default suffix mappings.
Fixed a bug in the Hex Dump dialog in which changing the "Resource Fork" or "Data Fork" setting didn't take effect for the current invocation of the dialog, but did for the next one.
Fixed a bug where if your default encoding was a Unicode-based encoding the reading as value in the open event or open dialog was ignored.
Modified the text drawing code so that, if the system-level anti-aliasing threshold is set higher than the threshold set in TextWrangler's prefs, text drawn in font sizes between the two thresholds (where the TextWrangler pref says to anti-alias but the system threshold overrides us) has working tabs again.
Modified the tab-drawing handler to check to see if the pen is less than half a non-breaking space's width short of the next tab stop. If so, it treats it as if it *is* at that tab stop and tabs to the next tab stop beyond that.
Modified the "Unicode not from input method" handler to accomodate certain option-key options using some foreign keyboards (such as option-1 for entering the digit 1 on a Vietnamese keyboard).
Fixed a bug where if you cleared a core menu keybinding due to a conflict that keystroke was only cleared for the current run of the application and not persistently.
Fixed a bug where setting the selection property of the application through applescript may fail if the app is in the background.
Introduced the concept of selection anchors to option-shift-up/down.
Added "as" to the list of colored keywords for Python.
The AppleScript "source language" property of text windows is now also available as a direct property of text documents.
-
Fixed a performance problem when:
a) typing in any document when a search results browser contained results in documents on a high latency network server
b) typing in remote documents (from a high latency network server) when a search results window existed. Fixed a bug where the file well didn't update correctly after using the "Choose..." button in the Hex Dump dialog.
The various options for reloading documents changed outside of TextWrangler (see Preferences -> Application -> Verify Open Files After...) didn't work too well when the files in question were stored on non-HFS file systems (such as NFS of SMB mounts), because of nondeterministic behavior of such volumes' modification dates. TextWrangler now ignores the volume modification date altogether, which will improve the reliability of this feature with such volumes.
Piping to the edit tool from a root shell now works correctly.
Subroutine attributes no longer trip up the Perl function scanner.
Added suffix mappings for ".txt", ".text", ".log", and ".conf" as factory defaults for "(none)". (These can be modified or overridden by installed modules as desired.)
Fixed bug in which a -110 error would be reported when processing a multi-file "find" or "replace" scripting command that specified one or more sources using "alias <reference>" and reference was already an object of type "alias".
Cleaned up file filtering in the Find Differences choose-file dialogs. (Along the way, made the file dialogs into sheets.)
"Exchange Characters" now sets up the Undo information properly.
The application now correctly specifies the document's name to the printing subsystem, which ensures that the full path (or, if a palette is open, the front palette's title) isn't inappropriately used as the print job name.
Fixed bug in which arrow keys didn't work in numeric fields in the Preferences window.
When printing a file opened from FTP/SFTP, TextWrangler now uses the URL to the file on the server in the page header, rather than the path to the local temporary file.
Fixed bug in which saving a file using "Save a Copy to FTP/SFTP Server" would cause the local temp file to be added to the Open Recent submenu, not the URL to the file saved on the server.
-
The URL parser now deals with a missing password in the userinfo component of a URL. For example:
ftp://user@host.example.com/
The context string for search results is now pinned to 128 characters for display, which fixes performance and display glitches when the match occurs on a very long line.
It is now possible to omit start_offset and end_offset from the results record when creating a result browser from AppleScript if you only have line-based offsets available. In this situtation, you must supply result_line.
Fixed a bug where Control-[ was sometimes treated as a dialog button accelerator in situations where it shouldn't have been.
The AppleScript word accessor now (once again) uses the same word-break rules as the rest of the application, so that diacriticals aren't incorrectly treated as word breaks.
If the line number you supply to "Go To Line" is out of range it will go to the beginning or end of the document as appropriate then beep to let you know the desired line was out of range (instead of failing silently).
Added progress indicators for Add/Remove Line Numbers and Prefix/Suffix Lines.
Fixed crash in Unicode input.
Fixed a bug in the "Kill Duplicates & Sort.pl" example fiter which caused it to generate incorrect selection didn't include a trailing return on the last line.
GREP case transforms now work properly with the upper-128 MacRoman characters (only).
Changed the rules on how TextWrangler examines file types and file name extensions to determine whether a file is a text file. Previously, if a file had HFS type information, the file name suffix was ignored, even if "Map the File Name" was set in the Text Files: Opening preferences. Now, the file name extension will be examined if the HFS file type is not explicitly a text-file type, and "Map the File Name" is turned on.
When "QuickTime Playback" is turned on (Application preferences), QuickTime will often tell us it can open a file, but then when we actually go to do it, it says "oops, can't find a movie in this file" and returns an error -2048. (For some reason this tends to happen most frequently with typeless files whose names end in ".dat".) Now, if we get the "oops", TextWrangler will just fall back and open the thing as a text file.
The Unicode input handler should no longer crash when typing cmd-. to a dialog on top of an edit window.
Fixed selection drift when doing a Replace All.
Fixed bug in which applying an "Extra lines in Old" (at the end of the New file) difference to the new file would fail if other differences had previously been applied from the old file to the new file.
Updated the scripting dictionary to indicate that the "text document" class has accessible "text" and "contents" properties and accessible elements of the "text" class.
Tab stops can now fall on fractional-pixel offsets and therefore stay in sync with monospaced characters that are not an integral number of pixels wide due to anti-aliasing.
Fixed a bug where the ODB editor was notified twice of a document close in certain situations.
Changed the terminology for combined add/remove prefix/suffix so that recorded scripts work.
Fixed bug in Prefix/Suffix Lines in which certain choices of prefix and/or suffix characters would generate undesired results.
Fixed a bug where "Auto-Expand Tabs" wasn't honored when shifting a rectangular selection left or right.
Once upon a time, files which were identified as SimpleText documents based on HFS type information (file type 'ttro' or file creator 'ttxt') were unconditionally soft-wrapped when opening. Such files no longer receive special treatment and soft wrapping for them is subject to the appropriate preference and/or saved state.
When loading up the default editing font setting, TextWrangler will now make sure that the font actually exists, and if it doesn't a reasonable default will be used. This guards against display and clipboard problems that would occur when the previously set default font became unavailable.
Stuck on a bunch of band-aids for the benefit of the VT100 font.
The view of the selection is maintained when toggling the linebar on and off.
Fixed bug in which a preprocessor directive (such as a "#pragma mark") that occurred immediately after an Objective-C "@implementation" or "@interface" directive was ignored.
Rationalized the order in which lock reasons are checked when unlocking a document.
Fixed a bug where if a document was opened read only by the user (via the read only parameter to the open apple event) the read only status was lost the first time the document was verified against the disk file.
Form feeds are once again honored as page-breaks while printing soft-wrapped files.
The TeX language module no longer breaks off keyword scanning as soon as it encounters a '\'. It now accumulates all chars in the set [A-Za-z0-9_\\] and leaves it to the match_keyword() function to detect whether or not the first char in the candidate is a '\'. This allows strings like 'Account\_ID' not to have the trailing '\_ID' keyword colored.
Scripting terminology for "hard wrap" and "rewrap" commands now describes default values for omitted parameters.
Restored the warning when unlocking a file which will require an authenticated save.
Clicking on the pencil in a file that was unlocked because it will require an authenticated save puts it back into the same state it was when it was opened (provided file document isn't modified.)
Fixed inadvertent "Increase/Decrease Quote Level" bug.
Improved responsiveness in certain operations (for example, opening) large files soft-wrapped to window width.
Improved number field input validate in Hard Wrap, Rewrap and Go To Line dialogs.
If you enter a home-relative path (e.g. "~/Library/Logs/mumble.txt"), TextWrangler will now report the appropriate error if the referenced file or folder doesn't exist, rather than undertaking to search for a file named "Library/Logs/mumble.txt".
The definition of a "word" character (for cursor motion and double-click word selection) has been expanded to include all Unicode "letter" characters.