TextMate Changelog

What's new in TextMate 2.0.22

Oct 13, 2021
  • A few more tweaks to improve things on macOS 11 including dropping use of floating header rows in file browser (SCM Status) and search results, as these appear to cause problems on Big Sur.

New in TextMate 2.0.21 (Oct 13, 2021)

  • When selecting an item in the file browser for which TextMate is not the default application configured to open this item, the “Open With” submenu item (in the context menu) now show the default application and can be selected directly (without having to go into the submenu).
  • Ensure ⌘⌫ / [⌥]⌘V are not sent to the file browser when it does not have focus (same issue as with ⌘Z / ⇧⌘Z fixed in v2.0.19).

New in TextMate 2.0.20 (Oct 13, 2021)

  • The TextMate::UI ruby bundle support library should now work with ruby 2.x.
  • Improve aesthetics of bundle editor slightly and make properties a resizable split view.
  • Find dialog would not work properly with HTML output window (pressing return would not trigger a “Find Next”).

New in TextMate 2.0.19 (Mar 1, 2021)

  • Ensure ⌘Z / ⇧⌘Z are not sent to file browser when it does not have focus.
  • Increase maximum number of open files if the current limit is below 2048.

New in TextMate 2.0.17 (Feb 9, 2021)

  • Previous build would not launch on macOS 10.14 and earlier due to missing linker option.

New in TextMate 2.0.16 (Feb 9, 2021)

  • TextMate is now a universal build.
  • A few tweaks to improve appearance on Big Sur.
  • With focus in the file browser: ⌥⌘C will copy selection as path name.
  • File browser’s context menu now show shortcut keys for most items, though most only work with focus in the file browser. Hint: ⌥⌘⇥ switches focus between file browser and text editor.
  • With a file copied to the clipboard, it is now possible to “Create Link” in the file browser (via context menu): This creates a symbolic link to the file.
  • Atomic saving is now disabled by default (except for remote volumes). This is because APFS is prevalent, and it does not provide a way to do atomic save without creating a new inode and thereby updating the date of the file’s directory (which I consider bad). You can change the default by setting atomicSave in ~/.tm_properties, see further down in these release notes for potential values.

New in TextMate 2.0.15 (Feb 9, 2021)

  • Fix another potential crash in 2.0.13 related to transparent themes: We no longer support themes with a transparent background. This is due to technical challenges achieving this on macOS 10.14 and later, where each view is rendered into its own layer. The feature may come back, but probably not until we require macOS 10.14, because we may need different code paths (and testing) for different versions of macOS.

New in TextMate 2.0.14 (Feb 9, 2021)

  • Fix crash in 2.0.13 when no license key was found.

New in TextMate 2.0.13 (Feb 9, 2021)

  • The View → Theme submenu now allows to set appearance to “auto” (follow system settings) and to configure light/dark themes separately. Note that prior to macOS 10.14 setting appearance to “auto” is the same as setting it to “light”.
  • Improve the folder pop-up submenu in the Find in Folder: We now show direct descendents in the first submenu and ancestors below these, with the first ancestor showing ⌘↑ as shortcut key (improved discoverability of this shortcut).
  • It’s now possible to see when bundle index was last updated in Preferences → Bundles.

New in TextMate 2.0.12 (Feb 9, 2021)

  • In the Find History window it is now possible to hold down option (⌥) to change the “Find Next” button to “Find in Project”.

New in TextMate 2.0.11 (Feb 9, 2021)

  • It is now possible to use ⌘[ in the Find dialog to go back to previously searched folders. The pop-up menu will show ⌘[ and ⌘] shortcuts next to the folders that the respective keys will select.
  • A sound is now played when starting/stopping macro recording (⌥⌘M).
  • Commands with output shown in the HTML output window (such as ⌘R for scripts) would timeout (and kill the script) after 1 hour and 40 minutes. This timeout has now been set to aeons (FLT_MAX).
  • Next/previous bookmark actions in the touch bar now work again. [Ronald Wampler]
  • Improved performance for showing clipboard history (only an issue since v2.0.8).

New in TextMate 2.0.10 (Feb 9, 2021)

  • Clipboard and Clipboard History:
  • The Clipboard History dialogs (Edit → Paste → Show History and Edit → Find → Show Find History) now allow you to flag entries. This can be done either by clicking the flag button or using ⌘F2 (the shortcut normally used to toggle bookmarks).
  • Flagged entries will not be removed from history neither automatically nor when using “Clear History”. All flagged entries can be seen by selecting the Flagged source (note: dialogs with a “source selector” support normal tab navigation keys such as ⌘{ / ⌘} for previous/next and ⌘1-⌘n to select the nth source).
  • It is now possible to select multiple entires in the clipboard history dialogs. If you paste with multiple entries selected then it will insert the items with newlines in between. If you search, it will construct a regular expression matching any of the selected items.
  • Note that the latter can also be achieved by using ⌘E (Edit → Find → Use Selection for Find) when there are multiple selections. It may sound like a novelty, but I use this feature close to daily.
  • Multiple selections are now stored on the clipboard as multiple strings, this may improve compatibility with other applications that also support multiple selections. Previously they were stored as a single newline-delimited string. This also means that copy/paste of multiple selections work even when the selections include newlines (this would previously lead to newlines being lost due to how we stored a single combined string on the clipboard).
  • Clipboard history is now stored in a sqlite database (~/Library/Application Support/TextMate/PasteboardHistory.db) instead of using CoreData. This means old history has been lost (no good way to migrate this data).
  • If you have disabled persistent history (via the disablePersistentClipboardHistory defaults key) then the sqlite database is memory backed, and history (including flagged items) will be lost if you quit TextMate.
  • TextMate should now always pick up clipboard changes: Previously it could miss updates that happened while TextMate was active, as the system occasionally will forget to bump the change count of the clipboard in this situation, so we no longer rely on the clipboard’s change count.
  • Other Changes:
  • If you copy items from the file browser (⌘C) and paste in Apple’s Terminal.app then proper (full) paths should now be inserted. Previously this only worked for iTerm2.app (as Terminal.app is peculiar in how it interprets the clipboard).
  • If you rename an ancestor folder of an open document, TextMate should now notice this and will update the path accordingly. It will also treat moving a file to trash as that file being deleted (instead of simply renamed).
  • The filter bar in Bundles preferences now support dark mode and acts like a set of radio buttons (so clicking one category will unselect other categories).

New in TextMate 2.0.6 (Feb 9, 2021)

  • Rebuild using older SDK as possible workaround for newly introduced crash on macOS 10.13.

New in TextMate 2.0.5 (Feb 9, 2021)

  • Fixed: Double height of menu items with custom shortcuts on macOS 10.15.
  • Fixed: Crashes when using accessibility features on macOS 10.15.
  • Fixed: Context menu items for tabs would be disabled in full screen mode.
  • Fixed: Changes made to bundles on disk could go undetected on macOS 10.15.
  • Fixed: Delay when re-executing (bundle) commands on macOS 10.15. Starting with macOS 10.15 Apple will “call home” each time a new script/binary is executed, this can have a delay of more than a second, depending on internet connectivity/location. The result seems to be cached per inode, previously TextMate would use temporary files when executing scripts or shell commands (giving them a new inode on each run), it now re-uses these files to avoid the delay on repeated executions.
  • Fixed: In rare circumstances the tab bar (after launch) would have one tab missing even though space was allocated for this tab.
  • Fixed: File permission flags were lost when saving using the default atomic save algorithm.
  • Fixed: Disposing a nib using "$DIALOG" nib --dispose «token» would not close the nib’s window.
  • Fixed: Plug-ins not signed by Apple nor MacroMates would not be loaded.

New in TextMate 2.0.4 (Dec 31, 2019)

  • Possible fix for accessibility features causing crashes on macOS 10.15.

New in TextMate 2.0.3 (Dec 31, 2019)

  • Fixed: Context menu items for tabs would be disabled in full screen mode.
  • Fixed: Changes made to bundles on disk could go undetected on macOS 10.15.
  • Fixed: Performance for executing bundle commands on macOS 10.15 would depend on network connectivity as Apple seems to call home each time a new script is executed (so now we re-use the temporary files to only have them call home for first launch).
  • Fixed: In rare circumstances the tab bar (after launch) would have one tab missing even though space was allocated for this tab.

New in TextMate 2.0.1 (Dec 31, 2019)

  • Allow loading plug-ins not signed by Apple nor MacroMates.
  • Fixed: File permission flags were lost when saving using the default atomic save algorithm.
  • Fixed: Disposing a nib using "$DIALOG" nib --dispose «token» would not close the nib’s window.

New in TextMate 2.0 (Oct 16, 2019)

  • After far too long, there is no longer any qualifier suffix in the version string, so it is now finally just “TextMate 2.0”.
  • I am grateful to everybody who has submitted a pull request, but the following people deserve a special mention:
  • Boris Dušek who is responsible for TextMate’s much improved accessibility support.
  • Jacob Bandes-Storch was a tremendous help replacing use of 32 bit APIs.
  • Ronald Wampler is just an all around great contributor.

New in TextMate 2.0 RC 31 (Aug 27, 2019)

  • Attempt at workaround for system stall when calling TextMate via mate.
  • Fix two buffer overflow bugs.

New in TextMate 2.0 RC 30 (Aug 27, 2019)

  • Add even more debug output for when TextMate is activated via mate.
  • Look for numeric prefix when duplicating a file and increase it if found. This means 001_file.txt will become 002_file.txt when duplicated in the file browser, instead of 001_file copy.txt.

New in TextMate 2.0 RC 29 (Jul 16, 2019)

  • Add more debug output for when TextMate is activated via mate.
  • Miscellaneous minor fixes and tweaks.

New in TextMate 2.0 RC 28 (Jul 14, 2019)

  • Add debug output when TextMate is activated via mate.

New in TextMate 2.0 RC 27 (Jul 9, 2019)

  • Saving a file would lose the existing file’s permission flags.
  • See all changes since v2.0-rc.26

New in TextMate 2.0 RC 26 (Jul 9, 2019)

  • Fix ability to (atomically) save files opened via their symbolic link.

New in TextMate 2.0 RC 25 (Jul 9, 2019)

  • Atomic Saving:
  • TextMate has been using exchangedata for atomic saving. This API allows writing an updated file to a new location and then swap the data part atomically with the old file’s. This ensures that the saved file is never in a partially written state, it preserves all file metadata (of which there is a lot), it preserves the file’s inode, so any potential hardlinks are not broken, etc.
  • Unfortunately APFS, the new default file system for macOS, does not support exchangedata.
  • TextMate falls back on rename when exchangedata is unavailable.
  • This require that all metadata of the old file be copied to the new one, but there is no way to preserve the inode, so hardlinks will break, furthermore, as this is effectively a completely new file, the date of its parent diretory will be updated. Some software will monitor directories for new files and do a rescan each time the directory is updated, which previously would only be when files were created or deleted, but now each save may also trigger such rescan.
  • For this reason, there is a new setting to control when and how TextMate should use atomic saving. It can be controlled by setting atomicSave in .tm_properties to one of the following values:
  • always: This is the default, it uses NSFileManager API (so no inode preservation even on HFS+).
  • externalVolumes: Disable atomic saving only for internal disks.
  • remoteVolumes: Use atomic saving only for remote drives (e.g. network mounts).
  • never: Never use atomic saving.
  • legacy: This will use exchangedata when available and fallback on rename. This option will be removed in the future.
  • Other Changes:
  • Miscellaneous touch bar improvements. [Ronald Wampler]
  • There has been a few reports of missing content when expanding folders in the file browser. This build contains a workaround, so if you continue to experience this, please let us know.
  • When searching for a regular expression with captures, we have $1-n available in the replacement (format) string. If this format string does further replacements with optional captures (e.g. ${1/(foo)?|(bar)?/…/g}) then $1-n would be inherited from the parent search for the non-matching optional captures.
  • TextMate is now using the hardened runtime, is notarized, and built with a deployment target of macOS 10.12.
  • Fix typo in character set name: ‘Korean – {ISO-2022-JP → ISO-2022-KR}’. [DaeHyun Sung]

New in TextMate 2.0 RC 23 (May 12, 2019)

  • Some UI fixes for 10.13 and earlier (introduced in previous build(s)).
  • Implement accessibility rotor for document symbols. Explanation here. [Boris Dušek]

New in TextMate 2.0 RC 22 (Dec 7, 2018)

  • Improve UI for tagging files (file browser action menu). [Ronald Wampler]

New in TextMate 2.0 RC 20 (Dec 2, 2018)

  • Document tabs now use “titlebar material” to be a better fit for macOS 10.14.
  • Status bar font size has been increased to 12 pt and can be changed by using defaults write com.macromates.TextMate statusBarFontSize 13.

New in TextMate 2.0 RC 18 (Nov 15, 2018)

  • If you run defaults write com.macromates.TextMate changeThemeBasedOnAppearance -bool YES then TextMate will switch theme based on appearance (light/dark). The themes used can be controlled using the darkModeThemeUUID and universalThemeUUID defaults keys. [Ronald Wampler]
  • The document tabs have been moved to the titlebar, this means that file browser header can no longer be merged with the tab bar, automatically hiding the tab bar (when there is only one tab) is only possible when running macOS 10.12 or later, and currently the light tabs do not match the title bar background color on 10.14. The last one will be fixed in an upcoming build (to have active tab use “titlebar material”). The first one is probably not coming back anytime soon.

New in TextMate 2.0 RC 15 (Nov 2, 2018)

  • Blurred backgrounds and other visual tweaks, but more to come…

New in TextMate 2.0 RC 14 (Nov 1, 2018)

  • Holding down option (⌥) when opening a file will ensure it opens in a new window (instead of existing project).
  • File browser now supports setting multiple tags on items instead of the previous single label system. [Ronald Wampler]
  • It is possible to set excludeSCMDeleted = true in a .tm_properties file to hide the “ghost” items that appear after deleting a file on disk which is still tracked by your version control system. [Ian Gregory]
  • To have file packages expandable in the file browser (like directories) run: defaults write com.macromates.TextMate allowExpandingPackages -bool YES. If you do work with a lot of file packages be aware that it is also possible to hold option (⌥) when you either double-click the item’s label or single click the icon, to descend into the file package.
  • The list of default file globs used when searching folders can be set, for example defaults write com.macromates.TextMate defaultFindInFolderGlobs '( "{*,.tm_properties}", "*" )'. Be aware that unique history is kept per folder, to clear your existing history run: defaults delete com.macromates.TextMate 'Find in Folder Globs'.
  • The behavior of control up/down has changed slightly: Previously these keys would (also) “skip” the current paired sequence when next to an opening/closing character, for example pressing control down with foo‸(bar); would move the insertion point past the braces, i.e.: foo(bar)‸;. This is no longer the case, and the keys will always move to the opening/closing character of the current pair that the insertion point is inside.
  • File browser has seen major overhaul: Little difference from the user’s POV but the performance characteristics may have changed slightly, please report any issues to the mailing list or support. Furthermore, we no longer support saved searches, alias files, inline-expansion of recursive symbolic link (beyond the first), and setting the file browser to render as a “source list” has also been dropped. If you miss any of these things, please let us know.
  • Dark mode support: Some minor issues still to be addressed, most noticeable is probably main window’s title bar, find dialog’s search/replace strings when enabling regular expression searching, and of course this window :)

New in TextMate 2.0 RC 11 (Oct 30, 2018)

  • File browser now supports setting multiple tags on items instead of the previous single label system. [Ronald Wampler]
  • It is possible to set excludeSCMDeleted = true in a .tm_properties file to suppress the “ghost” items that appear after deleting a file on disk which is still tracked by your version control system. [Ian Gregory]
  • You can now run defaults write com.macromates.TextMate allowExpandingPackages -bool YES to have file packages be expandable in the file browser (like directories). If you do work with a lot of file packages and need to descend into these, be aware that it is also possible to hold option (⌥) when you either double-click the item’s label or single click the icon, to descend into the file package.
  • The list of default file globs used when searching folders can be set, e.g. defaults write com.macromates.TextMate defaultFindInFolderGlobs '( "{*,.tm_properties}", "*" )'. Be aware though that unique history is kept per folder, to clear your history run: defaults delete com.macromates.TextMate 'Find in Folder Globs'.
  • The behavior of control up/down has changed slightly: Previously these keys would (also) “skip” the current paired sequence when next to an opening/closing character, for example pressing control down with foo‸(bar); would move the insertion point past the braces, i.e.: foo(bar)‸;. This is no longer the case, and the keys will always move to the opening/closing character of the current pair that the insertion point is inside.
  • Completely overhauled the file browser: Little difference from the user’s POV but the performance characteristics may have changed slightly, please report any issues to the mailing list or support. Furthermore, we no longer support saved searches or alias files. If you use any of these things, please let us know.

New in TextMate 2.0 RC 10 (Jun 12, 2018)

  • It is now possible to scroll project/folder search results horizontally.
  • Fixed misclassification of file encoding for documents saved with TextEdit.
  • Fixed potential deadlock when using ⇧⌘T just after loading a new document.
  • Fixed an issue where setting a mark (in the gutter) via `mate` could cause TextMate to crash.

New in TextMate 2.0 RC 5 (Dec 7, 2016)

  • Fix slowdown when editing files on high-latency file systems.
  • Don’t add non-existing files to Open Recent menu, as they will result in duplicates.

New in TextMate 2.0 RC 4 (Dec 5, 2016)

  • Fixes/improvements.

New in TextMate 2.0 RC 1 (Nov 14, 2016)

  • Removed beta from version string (and miscellaneous fixes/improvements).

New in TextMate 2.0 Beta 12.26 (Oct 24, 2016)

  • TextMate’s bundle identifier has been changed to `com.macromates.TextMate` (previously it had a `preview` suffix). This is the same bundle identifier as TextMate 1.x so if you still have TextMate 1.x installed then we recommend to simply delete it.
  • The changed bundle identifier may cause a compatibility issue with third party software, particularly software that offers an “Open in TextMate 2”, there is unfortunately no nice solution to this problem other than request that the software is updated to use the new (old) bundle identifier.
  • The `mate` command line tool is among such software, but it should automatically update to version 2.11, if not, go to _Preferences → Terminal_ and select to Uninstall and then Install `mate` (the automatic updating of `mate` only works if TextMate can figure out where it was previously installed).

New in TextMate 2.0 Beta 12.23 (Oct 11, 2016)

  • Bundles are no longer read from the Avian folder. You should have been prompted about moving them, if you had any. The reason we initially used the Avian folder was so that people could still use TextMate 1.x with bundles that did not rely on 2.0 features, so this move signals that we no longer think there is a reason to keep TextMate 1.x around. If you have a reason, please let us know (so that we can hopefully address it).
  • The volumeSettings user defaults key has been replaced with disableExtendedAttributes that can be set in ~/.tm_properties. If you had disabled extended attributes for specific volumes, your settings should automatically appear in ~/Library/Application Support/TextMate/Global.tmProperties.

New in TextMate 2.0 Beta 12.21 (Oct 7, 2016)

  • Commands can be set to run again for certain events, for example both HTML → Show Preview and Markdown → Show Preview now update the preview on document changes.
  • More details at https://github.com/textmate/textmate/blob/master/Applications/TextMate/about/Changes.md.
  • Format strings now support ${«var»:/titlecase} as alias for ${«var»:/capitalize}.
  • The find and replace text fields in the search dialog now have syntax highlight. By default they are using the Mac Classic theme but this can be changed using the UIThemeUUID defaults key. The grammars used for the fields are the Regular Expressions (Oniguruma) and Format String grammars from the TextMate bundle.
  • CoreText CTLine objects are now limited to about 2048 bytes of text which improve performance significantly for documents with extremely long lines but it may cause minor unicode incorrectness, mainly right-to-left text rendering would be affected, though officially right-to-left is still not fully supported by TextMate.

New in TextMate 2.0 Beta 12.13 (Sep 22, 2016)

  • The search dialog now has a “File Browser Items” in its pop-up. This refers to the selected items in the file browser, which can be files and folders (everything selected will be searched). If there is no selection, it will use the file browser’s location.
  • Speaking of file browser, searching “Open Files” now also work after session restore (where previously non-loaded tabs would be skipped).
  • New callback.document.did-change-scm-status which is used by the SCM Gutter command to trigger after a commit/revert.

New in TextMate 2.0 Beta 12.11 (Sep 21, 2016)

  • Minor tweaks and fixes incl. two recently introduced crash bugs.

New in TextMate 2.0 Beta 12.8 (Aug 31, 2016)

  • The callback.mouse-click “semantic class” has been changed to callback.single-click and there is now also callback.double-click and callback.triple-click.
  • Add callback.document.will/did-reload which is triggered when the document is reloaded due to external changes. This is relevant for commands that update the gutter based on document content.
  • Add Copy Replacements to the Find dialog’s action menu. After a regular expression search this can be used to copy all matches, but transformed by the replacement (format) string. For example search for obj->(w+)( and put $1 in the Replace field before selecting Copy Replacements and you’ll get a list of just the member function name itself copied to the clipboard.

New in TextMate 2.0 Beta 12.6 (Aug 30, 2016)

  • Add `callback.document.will/did-reload` which is triggered when the document is reloaded due to external changes. This is relevant for commands that update the gutter based on document content.
  • Add _Copy Replacements_ to the Find dialog’s action menu. After a regular expression search this can be used to copy all matches, but transformed by the replacement (format) string. For example search for `obj->(w+)(` and put `$1` in the _Replace_ field before selecting _Copy Replacements_ and you’ll get a list of just the member function name itself copied to the clipboard.

New in TextMate 2.0 Beta 12.5 (Aug 26, 2016)

  • When duplicating files in the file browser, we now open the new file if the duplicated file was the selected tab.
  • Introduce exit_insert_snippet_no_indent to change a command’s output to a snippet but without adding indent.
  • It is now possible to use protocol-relative URLs (like //apple.com) in HTML output. By default we redirect these to https (even though they are technically loaded via the file: protocol). The default protocol can be changed via the defaultURLProtocol defaults key.
  • When setting fontStyle in a theme it is now possible to use plain with the other styles to reset all but the listed styles. E.g. plain bold to disable potential italic and underline.
  • A theme can now set strikethrough in fontStyle to get strikethrough text.
  • The fontName and fontSize settings in .tm_properties can now be set in a file type section to use different fonts for different file types or locations.
  • The search results font can be changed using the searchResultsFontName and searchResultsFontSize keys, e.g.:
  • defaults write com.macromates.TextMate.preview searchResultsFontName Menlo
  • defaults write com.macromates.TextMate.preview searchResultsFontSize -float 12

New in TextMate 2.0 Beta 12.4 (Aug 19, 2016)

  • New: Projects with a Package.swift file now get the attr.project.swift scope. [Ronald Wampler]
  • Fixed: Use en-space instead of em-space for estimating how many columns fits the screen (relevant when soft wrapping text using a proportional width font).
  • Fixed: Specifying the same file multiple times via mate would cause an issue with the tab bar.
  • Fixed: If a font was specified in .tm_properties and wasn’t using the canonical name (e.g. spaces were inserted), TextMate would ignore it.
  • Fixed: Doing a folder search for a CR character would throw an exception if any file was CRLF delimited.
  • Fixed: Doing a folder search followed by Replace All would not do any replacements in inactive tabs.
  • Fixed: Using the indented line movement actions when there was a column selection would not split the column selection into multiple carets (one per line).
  • Fixed: Documents that caused the encoding dialog to show could cause TextMate to freeze.
  • Fixed: Commands with tool tip output would sometimes cause the insertion point to temporarily stop blinking.

New in TextMate 2.0 Beta 12.3 (Aug 18, 2016)

  • Deployment build
  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • Target: x86_64-apple-darwin15.6.0
  • Thread model: posix
  • InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • SDK: 10.11 (requires 10.8)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 12.2 (Aug 17, 2016)

  • Deployment build
  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • Target: x86_64-apple-darwin15.6.0
  • Thread model: posix
  • InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • SDK: 10.11 (requires 10.8)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 12.1 (Aug 15, 2016)

  • Deployment build
  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • Target: x86_64-apple-darwin15.6.0
  • Thread model: posix
  • InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • SDK: 10.11 (requires 10.8)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 12 (Aug 8, 2016)

  • Inserting type identifiable information on first line of a document will now change the document’s type to match. For example in a new plain text document you can use py⇥, rb⇥, pl⇥, php⇥ or similar (at the top) to insert a “shebang” line, and now TextMate will update the document’s type to reflect it.
  • Copying multiple selections to the find clipboard (⌘E) will construct a regular expression that matches any of the items copied. For example if you select both “foo” and “bar” then using ⌘E will put foo|bar on the find clipboard.
  • Bundle items can now use callback.document.did-open as semantic class to run when a document is loaded (e.g. to set initial gutter marks).
  • Theme can now be changed per document type or folder by setting theme to the desired theme’s UUID in .tm_properties in the appropriate section, e.g. [ *.md ] or [ build/** ].
  • You can change the font used for line numbers by setting lineNumberFontName via the defaults command. [Mike Meyer]
  • Only bundle items with ⌘ in their key equivalent will be executed when the window’s text view is not active.
  • When opening a file with unknown type we no longer present a sheet forcing you to select what type to use. Instead, if the type of the document can be handled by a remote bundle, we suggest installing this bundle using a non-modal dialog above your document. Here you can hold down option (⌥) to change the “Not Now” button to “Never”.
  • The “Add byte order mark” checkbox has been removed from the save panel and so has the useBOM setting. Instead byte order mark (BOM) is now part of the encoding name, so via the save panel you need to select “Unicode — UTF-8 (BOM)” to include a BOM or set encoding = "UTF-8//BOM" in .tm_properties. For UTF-16/32 you also need to append //BOM to the encoding name (if you set this via .tm_properties).
  • Monochrome gutter images should be suffixed with “Template” to be drawn as using the color of the current theme. Without this prefix, they are drawn as regular images.
  • mate: If the «mark» argument given to --clear-mark has a trailing slash then all marks with this prefix will be removed.
  • Normally paragraph selection, as implicitly used by actions like Reformat Paragraph, will select lines up/down until there is an empty line. You can now indicate that a line should be a paragraph break by setting the excludeFromParagraphSelection scoped setting to true. The Source bundle sets it to true for the comment.line scope so that one can run “paragraph actions” on text with comments above/below and no separating empty line. [Adam Strzelecki]
  • Folding indented blocks no longer include trailing empty lines.
  • When we lookup settings for untitled documents we compare the file pattern of targeted settings to the project (or target) folder including a trailing slash, that way, a file created in folder will be targeted by a folder/** file pattern.
  • The precedence of targeted settings (.tm_properties) has been changed, probably easiest to explain with an example, as there are 3 different “types” of ways to target a document. After the change, settings in the most local .tm_properties file will always take precedence over anything in a parent folder. So if you put: tabSize = 4 in /path/to/project then all your project files will use a tab size of four (regardless of their type and more global settings). Within a .tm_properties file the settings are ranked in the order shown in the example above, i.e. a file type specific match will win over a scope selector match, and if there are multiple scope selectors, the one which is most specific will win, finally the untargeted settings will apply.
  • Improve folder search performance for large documents with few newlines and lots of matches.
  • You can change the min/max width of tab items by using the tabItemMinWidth and tabItemMaxWidth user defaults keys. Default minimum width is 120 and maximum width is 250.
  • The release version of the Emmet TextMate plug-in crashes on launch and has done so for years, so it is now blacklisted by default. There is a new version linked to from this GitHub issue which does work. If you are using that version, you can clear TextMate’s blacklist by setting it to an empty array done by running this in a terminal: defaults write com.macromates.TextMate.preview disabledPlugIns -array
  • If git or svn is found in /usr/bin then we check if Xcode is installed (by calling /usr/bin/xcode-select -p) and if not, we ignore the executable. This is because it is a shim that prompts the user to install Xcode, which has lead to some user confusion. Note though that we do not call git or svn unless we actually find a .git or .svn folder in your project.

New in TextMate 2.0 Beta 11.12 (Jul 21, 2016)

  • Deployment build
  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • Target: x86_64-apple-darwin15.5.0
  • Thread model: posix
  • InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • SDK: 10.11 (requires 10.8)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 11.10 (Jul 17, 2016)

  • When we lookup settings for untitled documents we compare the file pattern of targeted settings to the project (or target) folder including a trailing slash, that way, a file created in folder will be targeted by a folder/** file pattern.
  • The release version of the Emmet TextMate plug-in crashes on launch and has done so for years, so it is now blacklisted by default. There is a new version linked to from this GitHub issue which does work. If you are using that version, you can clear TextMate’s blacklist by running this in a terminal: defaults write com.macromates.TextMate.preview disabledPlugIns -array
  • TextMate no longer uses FSRef types for the ODBEditor protocol. This protocol is used by sftp browsers and similar to offer an “Open in TextMate”. If you see any issues with third party software using “Open in TextMate” then please let us know, preferably by using the mailing list. [Ronald Wampler]

New in TextMate 2.0 Beta 11.5 (Jul 7, 2016)

  • The precedence of targeted settings (.tm_properties) has been changed. Hint: To see the value of all settings for your current document you can either press ⌃R on a line containing "$TM_QUERY" or you can use Bundles → Select Bundle Item… (⌃⌘T) and switch to Settings (⌘}). The latter will show how the settings are ordered.
  • Fixed: Document settings targeted at file types (e.g. [ *.md ]) would not work (since 2.0-beta.11).

New in TextMate 2.0 Beta 11.4 (Jul 7, 2016)

  • Theme can now be changed per document type or folder by setting theme to the desired theme’s UUID in .tm_properties in the appropriate section, e.g. [ *.md ] or [ build/** ].
  • Only bundle items with ⌘ in their key equivalent will be executed when the window’s text view is not active.

New in TextMate 2.0 Beta 11 (Jun 30, 2016)

  • Inserting type identifiable information on first line of a document will now change the document’s type to match. For example in a new plain text document you can use `py⇥`, `rb⇥`, `pl⇥` or similar (at the top) to insert a “shebang” line, and now TextMate will update the document’s type to reflect it.
  • Copying multiple selections to the find clipboard (⌘E) will construct a regular expression that matches any of the items copied. For example if you select both “foo” and “bar” then using ⌘E will put `foo|bar` on the find clipboard.
  • When opening a file with unknown type we no longer present a sheet forcing you to select what type to use. Instead, if the type of the document can be handled by a remote bundle, we suggest installing this bundle using a non-modal dialog above your document. Here you can hold down option (⌥) to change the “Not Now” button to “Never”.

New in TextMate 2.0 Beta 10 (Jun 22, 2016)

  • The “Add byte order mark” checkbox has been removed from the save panel and so has the useBOM setting. Instead byte order mark (BOM) is now part of the encoding name, so via the save panel you need to select “Unicode — UTF-8 (BOM)” to include a BOM or set encoding = "UTF-8//BOM" in .tm_properties. For UTF-16/32 you also need to append //BOM to the encoding name (if you set this via .tm_properties).
  • You can change the font used for line numbers by setting lineNumberFontName via the defaults command. [Mike Meyer]
  • More menu changes, most notable the “Go” menu is now “File Browser” and its contents has been revised. The “Go to File…” item (often referred to as ⌘T) is now “File → Quick Open…”. [Ronald Wampler]

New in TextMate 2.0 Beta 9.5 (Jun 16, 2016)

  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • Target: x86_64-apple-darwin15.5.0
  • Thread model: posix
  • InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
  • SDK: 10.11 (requires 10.7)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 9.3 (May 30, 2016)

  • Folding indented blocks no longer include trailing empty lines.
  • Bundle items can now use callback.document.did-open as semantic class to run when a document is loaded (e.g. to set initial gutter marks).
  • Monochrome gutter images should be suffixed with “Template” to be drawn as using the color of the current theme. Without this prefix, they are drawn as regular images.

New in TextMate 2.0 Beta 9.2 (May 25, 2016)

  • You can now double click parentheses, braces etc. to select the contents. [Brian T. Kelley]
  • Optionally draw a horizontal line for every tab stop (View → Show Indent Guides). [Josh Bernitt]
  • Font size can now be selected in the print dialog. [Per Persson]
  • It was previously possible to open a document in a new project by supplying a project UUID not in use, e.g.: mate --project $(uuidgen) file.txt. Now only a zero-UUID will trigger this behavior, e.g.: mate --project $(uuidgen|tr -C $'\n-' 0) file.txt.
  • Heuristic to detect line terminators has been changed: If a file contains any LF character (not part of a CRLF sequence) then the file is treated as LF delimited. This only affect files with mixed line terminators.
  • Searching files on disk (Find in Folder) and selecting results from files with mixed line terminators could in rare situations bring you to the wrong line in the document. This should now be fixed.
  • The Jump to Next/Previous Mark shortcuts have been changed to F3/⇧F3 so as to not conflict with some keyboard layouts.

New in TextMate 2.0 Beta 9.1 (Apr 19, 2016)

  • You can now double click parentheses, braces etc. to select the contents. [Brian T. Kelley]
  • The Jump to Next/Previous Mark shortcuts have been changed to F3/⇧F3 so as to not conflict with some keyboard layouts.

New in TextMate 2.0 Beta 9 (Apr 19, 2016)

  • The Themes sub-menu will group themes based on second element in their semantic class, if the first element is theme. The managed themes all indicate light and dark in their semantic class.
  • Added Jump to Next/Previous Mark menu items to the Navigate menu. This includes marks such as warnings and errors shown in the gutter (unlike next/previous bookmark which would not visit these marks) [Ronald Wampler]
  • The Spelling sub-menu now has an option to follow the spelling panel’s language selection (and will show the current value of the spelling panel). Using “Automatic by Language” currently require setting TextMate to follow the spelling panel’s value and then selecting this option in the spelling panel. [Adam Strzelecki]
  • Dictionary lookup could crash when used on an empty string. [Vincent Bénony]

New in TextMate 2.0 Beta 8.6 (Feb 8, 2016)

  • Apple LLVM version 7.0.2 (clang-700.1.81)
  • Target: x86_64-apple-darwin15.3.0
  • Thread model: posix
  • SDK: 10.11 (requires 10.7)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 8.4 (Dec 7, 2015)

  • TextMate now supports Force Click to look up words. This requires setting “Look up & data detectors” to “Force Click with one finger” in System Preferences → Trackpad.
  • Clicking the file browser with the mouse now always moves focus to the file browser. See commit message for further explanation.

New in TextMate 2.0 Beta 8.3 (Nov 13, 2015)

  • Apple LLVM version 7.0.0 (clang-700.1.76)
  • Target: x86_64-apple-darwin14.5.0
  • Thread model: posix
  • SDK: 10.11 (requires 10.7)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 8.2 (Nov 12, 2015)

  • Apple LLVM version 7.0.0 (clang-700.1.76)
  • Target: x86_64-apple-darwin14.5.0
  • Thread model: posix
  • SDK: 10.11 (requires 10.7)
  • Cap'n Proto version 0.4.1

New in TextMate 2.0 Beta 8.1 (Oct 28, 2015)

  • Add _View → Font → Default Size_ menu action bound to ⌘0 which works for both text and HTML output.. The _Last Tab_ action has been moved to ⌘9.
  • TextMate’s QuickLook plug-in can now show compiled AppleScript files.
  • New project scope for Cargo (Rust) projects (`attr.project.cargo`).
  • Miscellaneous fixes.

New in TextMate 2.0 Beta 8 (Sep 16, 2015)

  • You can now export a bundle (merging potential delta files) by right-clicking the bundle in the bundle editor and selecting Export Bundle….
  • Improved support for multiple carets/selections and commands, for example fallback units are now respected when there are multiple carets (and none have a selection).
  • The file browser is now view-based (instead of cell-based). The main “feature” is that renaming an item should no longer be involuntarily aborted (when there are disk changes), though there are also some minor interaction changes and more animations plus labels are rendered closer to how Finder has shown them since 10.9.
  • You can now use ⌥⌘V in the file browser to “move” the item on the clipboard to the current folder. This makes it possibly to copy files from Finder and “move” to the location in TextMate’s file browser and thus the old way of moving files via keyboard (⌘X + ⌘V) is deprecated and will be removed.
  • Double-tapping shift will now also leave “freehanded mode”.
  • Support spell checking being “automatic by language”. This is set via the spelling panel.
  • The line number scale factor can be set via the lineNumberScaleFactor user defaults key. It defaults to 0.8. If you want line numbers to be same size as main text, run the following in a terminal: defaults write com.macromates.TextMate.preview lineNumberScaleFactor -float 1.

New in TextMate 2.0 Beta 7.7 (Jul 31, 2015)

  • You can now use ⌥⌘V in the file browser to “move” the item on the clipboard to the current folder. This makes it possibly to copy files from Finder and “move” to the location in TextMate’s file browser and thus the old way of moving files via keyboard (⌘X + ⌘V) is deprecated and will be removed.
  • Improved support for multiple carets/selections and commands, for example fallback units are now respected when there are multiple carets (and none have a selection).
  • The file browser is now view-based (instead of cell-based). The main “feature” is that renaming an item should no longer be involuntarily aborted (when there are disk changes), though there are also some minor interaction changes and more animations plus labels are rendered closer to how Finder has shown them since 10.9.

New in TextMate 2.0 Beta 7.6 (Jul 18, 2015)

  • Double-tapping shift will now also leave “freehanded mode”.
  • Fix a bunch of file browser issues. There is still more work to be done here, for example renaming an item can still be aborted, but should be much rarer, and all other known issues should have been fixed (so pending work falls into the improvements category). If you have feedback about the file browser (issues, suggestions), now is the time to bring it up!

New in TextMate 2.0 Beta 7.2 (Jun 15, 2015)

  • If you do not want to be told that TextMate is outdated then go to About TextMate → Registration and add your license key.
  • It is now possible to double-tap the shift key (⇧) to either deselect the last discontinuous selection made, e.g. if you use ⌃W to “find and select next” and hit it once too many. Additionally, when there are multiple carets, double-tapping shift will remove all but the first caret.
  • When playing a macro that uses the findWithOptions: command and there are no find or replace string (among its arguments), TextMate will now use values from the find/replace clipboards (i.e. current string). This is useful if your macro copies content to the find or replace clipboard.
  • Using Check Spelling (⌘;) would previously find the next misspelled word (to the right of the caret). Now it will start with the word touched by the caret. This way, it is possible to type a word and immediately check it, without first moving to the beginning of the word. Alternatively one can press ⌥F2 to show the context menu for the word at the caret, which includes spelling suggestions, incase the word is misspelled.

New in TextMate 2.0 Beta 7 (Mar 26, 2015)

  • Running a command that takes “selection” as input when there are discontinuous selections will now join the selections with LF and provide it all to the command. Furthermore, the result from the command will be split on LF and replace the respective selections. Most commands are not suited for this, but a useful scenario is enumerating items, for example use _Find All_ or similar to obtain multiple carets/selections, then use _Filter Through Command…_ (⌘|) and run `seq 100` (assuming there are less than 100 carets/selections). Feature prompted by this [mailing list post](http://lists.macromates.com/textmate/2015-February/038465.html).
  • When duplicating an item in the file browser (⌘D) we check if it contains a date string (`YYYY-MM-DD`), and if so, update that to today’s date instead of adding “copy” to the name.
  • When holding down command (⌘) and clicking an existing selection, we now undo that selection. This is useful when creating discontinuous selections with the mouse.
  • Clicking middle mouse button on a tab is now shorthand for closing the tab. *[Koen Punt]*
  • Visual improvements for tabs and file browser on Yosemite. *[Adam Strzelecki]*
  • Increasing and decreasing font size (⌘+ / ⌘-) now shows the current scale factor to make it easy to get back to 100%.

New in TextMate 2.0 Beta 6.7 (Jan 19, 2015)

  • You can have the recent projects / favorites list shown on startup and re-activation (instead of having an untitled window created). To enable this behavior run: `defaults write com.macromates.TextMate.preview showFavoritesInsteadOfUntitled -bool YES`
  • Improve heuristic that looks up actions based on key events.

New in TextMate 2.0 Beta 6.1 (Nov 24, 2014)

  • The bundle item chooser (⌃⌘T) now show the value of settings and variables (inline) and includes actions from key binding dictionaries (like ~/Library/KeyBindings/DefaultKeyBinding.dict).
  • Update SCM icons for 32×32 sizes
  • Save with Xcode 6.1 (6A1052d)
  • Enable truncation of status text in download window
  • Support passing an array of array of views to OakSetupKeyViewLoop
  • Set initial first responder when setting up key view loop
  • Manually set key view loop for the chooser windows
  • Tweak look of rows in file and favorites chooser
  • Include name of symbolic link in favorites chooser
  • Loosen our expiration policy
  • Prefer CFBundleShortVersionString over CFBundleVersion
  • Don’t include framework umbrella header
  • Our print dialog preview was eclipsing auto layout methods
  • Introduce bundles::item_t::menu_path
  • Use our wrapper for adding views with auto layout enabled
  • Refactor bundle item chooser
  • Introduce plist::kSingleLine formatting flag
  • Eliminate redundant parameter (refactoring)
  • Store doubles without decimals as integers (Global.tmProperties)
  • Include value and line number when asking for settings info
  • Prevent image view used in OakChooser to shrink horizontally
  • Let CreateAttributedStringWithMarkedUpRanges take NSLineBreakMode
  • Ensure line break mode is set for display string in item choosers
  • Skip theme and bundle item menu items in bundle item chooser
  • Use ‘self.window’ instead of ‘_window’ for consistency
  • Workaround for crash when option-clicking window close button
  • Add missing call to super
  • Do single line pretty printing of settings (plist) values
  • Use ‘TextMate.app’ as path for settings in the application bundle
  • Support line argument when opening files from bundle item chooser
  • Ensure valid match/excerpt ranges for CRLF delimited files
  • Replace newline and tabs in find dialog’s status text
  • Improve bundle item chooser
  • Change `--bool` to `-bool` in `defaults` command examples
  • Avoid use of the NSString `existsAtPath` category method
  • Remove NSString `isDirectory` category method
  • Remove NSString `existAtPath` category method
  • Code style fixes
  • Remove unused includes
  • Remove unnecessary instance variable
  • Combine std::set’s find and insert into a single operation
  • Normalize newline and backspace characters in key event strings
  • Allow path string in bundle item chooser to extend below shortcut
  • Show items from key bindings dictionaries in bundle item chooser
  • fixup! Remove NSString `existAtPath` category method
  • Add variables from Preferences → Variables to bundle item chooser
  • Accept titlecased Info.plist when loading bundles
  • Add a “document will delete” callback function
  • Opening a document via ‘mate -w’ and canceling would hang mate
  • Update template project for a new application

New in TextMate 2.0 Beta 5.4 (Nov 6, 2014)

  • Improve stability on Yosemite.
  • The chooser windows (⌘T, ⇧⌘O, etc.) are now view-based and thus a bit more fancy. Consider it work-in-progress.

New in TextMate 2.0 Beta 5 (Oct 30, 2014)

  • Items in the bundle editor now have a context menu with “Show in Finder”. For items with local changes, this item turns into a submenu, showing all the location of the item.
  • Closing stale tabs when the tab bar overflows can be disabled using defaults write com.macromates.TextMate.preview disableTabAutoClose --bool YES.
  • Swapped key equivalents of “New File” and “New Folder” actions to make it somewhat consistent with Finder.

New in TextMate 2.0 Beta 3 (Oct 21, 2014)

  • It’s now possible to associate a string value with marks using: "$TM_MATE" --set-mark «mark»:«value». The value is shown if you click the gutter image. You can also use --clear-mark together with --set-mark. This avoids the potential flash that would show if having to call mate twice to update marks.
  • New default gutter image: note.

New in TextMate 2.0 Beta 1 (Oct 20, 2014)

  • Bump version number from alpha to beta.

New in TextMate 2.0 R9573 Alpha (Oct 11, 2014)

  • When replacing after a folder search, files that are not open will have the replacements done “on disk”. There is currently no undo for this action so think twice before making massive replacements to files not under version control.
  • You can now set default options for `mate` via the `MATEFLAGS` environment variable. I didn’t bump the version of `mate` so you need to manually go to Preferences → Terminal and click uninstall/install to update.
  • Miscellaneous fixes and improvements.

New in TextMate 2.0 R9571 Alpha (Oct 4, 2014)

  • You can now set default options for `mate` via the `MATEFLAGS` environment variable. I didn’t bump the version of `mate` so you need to manually go to Preferences → Terminal and click uninstall/install to update.

New in TextMate 2.0 R9567 Alpha (Sep 29, 2014)

  • Miscellaneous fixes and a new tab bar view that currently resemble Safari’s (from 10.9) but the groundwork has been done for easier styling to support different themes. The “Show tab for single document” setting in preferences now (when disabled) causes the tab bar to be initially hidden, but once shown, it will stay visible (to avoid content from jumping each time switching between one and two tabs), so I recommend disabling this setting (which is the new default).

New in TextMate 2.0 R9565 Alpha (Sep 19, 2014)

  • If you typeset TeX from TextMate (⌘R) and have the resulting PDF show in TextMate’s (HTML) output window (default) you can use ⌘P to bring up the print dialog to print the PDF. This used to work, but presumably broke during the update to 10.9, after which one had to first click the PDF to give it focus, before ⌘P would work.
  • Items from .tm_properties are now shown in the bundle item chooser (under settings). Eclipsed settings/variables are shown with an overstrike, although in practice the effective value may be derived from multiple eclipsed ones, e.g. in the case of updating PATH to $HOME/bin:$PATH. Long-term the expanded and non-expanded values should also be shown in this window.
  • If you hold option (⌥) when using the (new) remove button to prune folder search results then the glob will be extended to exclude the undesired path, so that future searches exclude it by default.
  • Some new folder search options added to the gear menu in the folder search window.
  • The ${«var»:/asciify} format string/snippet transformation now does a better job at stripping diacritics and combining marks.
  • Fixes and improvements.

New in TextMate 2.0 R9563 Alpha (Sep 5, 2014)

  • Folder search results can be pruned using the new remove button shown per file in the list. You can also see how many bytes were searched by clicking the status bar (after a folder search).
  • The bundle item chooser now use a scope bar for the 3 item types it can show. You can move between sources via ⌘{ and ⌘}. The Settings source currently shows settings from bundle items but long-term it should also show settings set via .tm_properties or from the settings window. The Other source is currently language grammars and themes but might become Styles with a more fine-grained view of what rules/themes are responsible for the current context.
  • The commit window is now a document modal sheet with the list of items to commit hidden by default. The intent is that one should select the items to commit in the file browser, here the Go → SCM Status (⇧⌘Y) is highly recommended. [Ronald Wampler]
  • Files opened via mate are now added to the recent menu by default unless the file is a dot-file (hidden), --wait or --no-recent is specified, or the file is in the system’s temporary folder. Also cleaned up the command options a bit, e.g. --async is now --no-wait, run mate -h for more info.
  • Improved Text → Titlecase Line / Selection: Words with mixed case will not be changed and any prefix/suffix that is not a word, will be ignored so that the actual first/last word gets titlecased.
  • When a key equivalent field has focus (and is not recording), escape will now clear the field.

New in TextMate 2.0 R9559 Alpha (Sep 1, 2014)

  • The bundle item chooser (⌃⌘T) now include menu items. This also works with key equivalent searching.
  • In the chooser lists (fuzzy file finder, bundle item chooser, and symbol list) it is now possible to make the selection loop around, that is, move from first to last item with arrow up, etc. This is enabled by running: `defaults write com.macromates.TextMate.preview enableLoopFilterList --bool YES`

New in TextMate 2.0 R9555 Alpha (Aug 1, 2014)

  • Showing invisible characters will (again) show spaces. As mentioned previously the way to control which glyphs are used are done using the invisiblesMap option in .tm_properties. Add either \n, \t, or a space to the string, followed by the glyph that should be used to render the character, or prefix it with ~ to disable rendering of that character. For example to disable rendering of spaces and render tabs as ┊ add this to .tm_properties: invisiblesMap = "~ \t┊". [Steven Clukey]
  • QuickLook generator will now handle thumbnail generation. [Nyx0uf]
  • The bundle item chooser (⌃⌘T) have some new search capabilities, look in its drop-down menu, though still work in progress.
  • Accessibility improvements for the bundle item chooser and key equivalent recorder. [Boris Dušek]
  • Previously using ⌘F with a multiline selection would set the in pop-up to Document (unless findInSelectionByDefault was set). This is no longer the case, but can be brought back by running: defaults write alwaysFindInDocument -bool YES. [Jeremy Whitlock]
  • Fixed issue where having the find or HTML output window open in another space and switching focus to TextMate, would bring the window to the active space, rather than switch to TextMate’s space. [Etienne Samson]

New in TextMate 2.0 R9551 Alpha (Jul 12, 2014)

  • Reworked the bundle item chooser window. This is work in progress.

New in TextMate 2.0 R9549 Alpha (Jul 7, 2014)

  • TextMate now works with the Haskell Ligature font. If you are using the Mensch font and see fi drawn as fi then update to Mensch version 2.0.
  • You can now use ⌘{ and ⌘} in the file and favorites chooser to cycle between sources. These keys can also be used in Preferences, the About window, and the Find in Folder (to cycle through files with matches). In these windows you can also use ⌘1-⌘n for the n’th “source” (but this is not new).
  • Draw properly rounded corners for tabs on retina displays. [Adam Strzelecki]
  • Improve VoiceOver feedback for file and favorite choosers when running on 10.10. [Boris Dušek]
  • Visual changes/improvements: tab overflow menu has document icons, the icon for it has multiple states (retina), the variables and bundles list in Preferences now use a smaller font and the latter has a search field to filter the list. [Ronald Wampler]

New in TextMate 2.0 R9547 Alpha (May 19, 2014)

  • Fix bug where the PATH variable would contain a trailing zero byte and thus everything appended to it was ignored.

New in TextMate 2.0 R9543 Alpha (Apr 29, 2014)

  • Various fixes and improvements.

New in TextMate 2.0 R9539 Alpha (Apr 22, 2014)

  • In file pattern globs the tilde (~) and bang (!) operators both indicate that what follows must not match the file path. For example: *.{c,h}~vendor/** will match .c and .h files except when under the vendor/ directory. It’s possible to specify multiple exclusion patterns and also to start the pattern with the exclude operator, e.g. !build/*!cache/* will match anything not in build/ or cache/. If the operator is used inside brace expansion (e.g. {Icon\r,*~.nib}) then it’ll be treated as a literal match, similarly when used last in the pattern (e.g. *.txt~).

New in TextMate 2.0 R9533 Alpha (Apr 14, 2014)

  • You can disable the status bar using defaults write com.macromates.TextMate.preview hideStatusBar -bool YES. Be aware that currently not all of the status bar actions have menu equivalents.
  • Text → Filter Through Command… (⌘|) now has a “New Document” (⌘3) output option.
  • View → Wrap Column now remember the last 5 values used.

New in TextMate 2.0 R9531 Alpha (Apr 7, 2014)

  • Rework the commit window (shown e.g. when using ⌘Y and selecting “Commit”) to run as part of TextMate and use it’s text editing features. [Ronald Wampler]
  • Improve accessibility support in find window. Notifications like “no more occurrences” when pressing ⌘G are now broadcast. [Boris Dušek]

New in TextMate 2.0 R9529 Alpha (Apr 1, 2014)

  • With VoiceOver the current item will be announced in the various item choosers: File → Open Favorites… (⇧⌘O), Go → Go to File… (⌘T), and Navigate → Go to Symbol… (⇧⌘T). If you want to hear the first result (which is not automatically spoken), first press arrow up to hear it, then you can use arrows down/up as usual. If you want to browse the results without entering a search string, quickly type any letter and delete it to suppress VoiceOver information about menu command and current window. [Boris Dušek]
  • Commands with HTML output can decide how TextMate should act if the same command was previously run and its output window is still showing. This is done by setting the reuseOutput key in the tmCommand property list.
  • The browser used for clipboard and search history, available using Edit → Paste → Show History (⌃⌥⌘V) and Edit → Find → Show History (⌃⌥⌘F), now support “type to filter”.
  • It is now possible to set the disableIndentCorrections to emptyLines. This will disable the indent corrections only when typing on empty lines, which has been made default for HTML.
  • Various fixes and improvements, click link above for full details.

New in TextMate 2.0 R9527 Alpha (Mar 31, 2014)

  • When a command requires a (shell) command and has that dependency specified via requiredCommands then the value (of the environment variable set by TextMate) will now be shell escaped. This means commands should not double-quote $VARIABLES when using them in a shell context, and if using them in another context (e.g. ruby) the command should ideally call Shellwords.split. The reason for this change is that specifying what to run via TM_«executable» might not be a single executable, e.g. we may want to set TM_CC to /usr/bin/xcrun clang or TM_MARKDOWN to /usr/local/bin/multimarkdown --nosmart.

New in TextMate 2.0 R9523 Alpha (Mar 25, 2014)

  • Fixes and improvements.

New in TextMate 2.0 R9519 Alpha (Mar 12, 2014)

  • With VoiceOver the current item will be announced in the various item choosers: File → Open Favorites… (⇧⌘O), Go → Go to File… (⌘T), and Navigate → Go to Symbol… (⇧⌘T). If you want to hear the first result (which is not automatically spoken), first press arrow up to hear it, then you can use arrows down/up as usual. If you want to browse the results without entering a search string, quickly type any letter and delete it to suppress VoiceOver information about menu command and current window.
  • Commands with HTML output can decide how TextMate should act if the same command was previously run and its output window is still showing. This is done by setting the reuseOutput key in the tmCommand property list.

New in TextMate 2.0 R9515 Alpha (Feb 24, 2014)

  • If you want the file browser to show symbolic links as expandable items then select Preferences → Projects → Show links as expandable.
  • If you want the current document to always be selected in the file browser then select Preferences → Projects → Keep current document selected. [Torsten Trautwein]
  • If you dislike how TextMate moves tabs to be “right of current” when opening an already open document then disable Preferences → Projects → Re-order when opening a file.
  • TextMate will now remember open tabs for “project folders”. This means that if you run mate «folder», open a few tabs and close the window, then if you later open the same folder, TextMate will restore the open tabs (and file browser state).
  • You can see which folders TextMate has stored state for via File → Open Favorites… (⇧⌘O) — probably soon to be renamed “Open Project…”.
  • The feature can be disabled using: defaults write com.macromates.TextMate.preview disableFolderStateRestore -bool YES
  • Commands executed by TextMate can now be interrupted by pressing ⌘. or ⌃C.
  • Added an --uuid option to the mate shell command which allows referencing untitled documents. If mate is called from a TextMate command without any file argument then the UUID defaults to that of the current document, meaning a command can use something like "$TM_MATE" -l10-10:5 to select the first four characters on line 10.

New in TextMate 2.0 R9511 Alpha (Feb 13, 2014)

  • Commands executed by TextMate can now be interrupted by pressing ⌘. or ⌃C.

New in TextMate 2.0 R9509 Alpha (Feb 11, 2014)

  • Added an --uuid option to the mate shell command which allows referencing untitled documents. If mate is called from a TextMate command without any file argument then the UUID defaults to that of the current document, meaning a command can use something like "$TM_MATE" -l10-10:5 to select the first four characters on line 10.
  • The Bundles page in this about window would not show changes for 2014. This is now fixed.
  • It is possible to disable restoring open tabs and file browser state when opening a folder: defaults write com.macromates.TextMate.preview disableFolderStateRestore -bool YES

New in TextMate 2.0 R9507 Alpha (Feb 7, 2014)

  • TextMate will now remember open tabs for “project folders”. This means that if you run mate «folder», open a few tabs and close the window, then if you later open the same folder, TextMate will restore the open tabs (and file browser state).
  • You can see which folders TextMate has stored state for via File → Open Favorites… (⇧⌘O) — probably soon to be renamed “Open Project…”.
  • The feature is work in progress.

New in TextMate 2.0 R9505 Alpha (Feb 4, 2014)

  • Preference to auto-reveal the current file in the project browser:
  • An option called “Auto-reveal open file in project browser” has been added to the Projects preference pane. When checked, the currently open file will be revealed in the project’s file browser. [Torsten Trautwein]
  • Add setting to disable tab re-ordering:
  • When opening a document it will be placed to the right of the current one (in the tab bar) even if the document being opened is already in the tab bar, this is to make ⌘W work to “close and go back” without having to keep a list of previously selected tabs.
  • This feature can now be disabled using: defaults write com.macromates.TextMate.preview disableTabReordering -bool YES
  • Note though that if one selects multiple documents to open then it will potentially re-order the tab bar so that the documents selected are adjacent.

New in TextMate 2.0 R9503 Alpha (Jan 13, 2014)

  • Various changes:
  • Set hugging priority for horizontal dividers
  • Guard against fileSystemRepresentation returning nil
  • Defensive programming …
  • Lines increasing and decreasing indent no longer go below zero …
  • Allow home/end in filter lists …
  • Rescan favorites folder when re-opening favorites chooser …
  • Treat various archive types as binary
  • Embryo of developer documentation
  • Show warning if undo will delete non-empty document …
  • Support text links with VoiceOver …
  • Track softline count in layout
  • Provide conversions between softlines and buffer positions
  • Use softlines instead of hardlines for accessibility …
  • Fix accessibility visual bounds ending at line boundary …
  • Support getting AXVisibleCharacterRange accessibility attribute
  • Updates link to Homebrew, to a functioning link.
  • Remove use of NSPointToCGPoint …
  • Add query component to scm URL …
  • Only enable “file” services for file browser context menu …
  • Handle dropping CR delimited text …
  • Use custom script to simulate “codesign --deep” …
  • Update shebang to explicitly call ruby 1.8
  • Add upload (ninja) target
  • Add -t/--tag option to bin/upload …
  • Use GitHub’s (preliminary) API for uploading releases
  • Add credits email hash for rdwampler
  • Remember window zoom state and regular window frame …
  • Change ruby syntax: [ foo ].shelljoin → foo.shellescape
  • Save with Xcode 5.0.2
  • Use dynamic menu titles for most toggle items …
  • Upload to existing release if it already exists …
  • Ensure text view find operations use values from the UI …
  • Opening a file with unused project UUID will create a new window …
  • Use netrc for GitHub credentials …
  • Allow fractional font sizes. …
  • File path settings now rank higher than scope settings …
  • Replace iterate macro with new for loop (C++11) …
  • Log error when mkdir() fails
  • Saving file with missing parent asks if it should be created
  • Improve “you are recording a macro” dialog …
  • Add API to get folded range for a point …
  • Add API to unfold a range …
  • Clicking a folded range will now unfold it
  • Fix value for AXSelectedText …
  • Change ASSERT_NE → ASSERT …
  • Remove unneccessary #import statements
  • Add safeObjectAtIndex to NSArray …
  • Use new safeObjectAtIndex method …
  • Ensure FSItem name property is not nil when setting menu title …
  • Implement accessibilityIsAttributeSettable: for all attributes …
  • Show git conflicts with priority
  • Note that capnp is now brew installable
  • Fix file browser height for tabs above document …
  • Build instructions: Assume people are using Xcode 5

New in TextMate 2.0 R9495 Alpha (Nov 8, 2013)

  • If the Go to File filter string contains an asterisk (*) it will be considered a file glob. Support for extension matching (by using a period in the filter string) has been removed. It did more harm than good, and the same can now be achieved by using an explicit glob string.
  • The zoom animation shown when opening items can now be disabled by running this in a terminal: defaults write com.macromates.TextMate.preview fileBrowserOpenAnimationDisabled -bool YES
  • You can now define word characters similar to 1.x by creating a new setting in the bundle editor with this content: { wordCharacters = «value»; }. The «value» is a string of which characters should be considered word characters. You can set the scope selector if you wish to limit the scope in which the characters should be considered a word character. Units for word movement/selection, completion, etc. are defined using a different system, see this FAQ item.
  • Opening files in the file browser can be done by single-clicking the icon. If you think the click-target is too small, you can make it open by clicking the text instead, this is activated by running the following in a terminal: defaults write com.macromates.TextMate.preview fileBrowserSingleClickToOpen -bool true. If you wish to select items you either need to click to the left of the text, or hold down command (⌘) when clicking the item’s text.
  • Fix missing transparent backgrounds on 10.9.

New in TextMate 2.0 R9475 Alpha (Sep 30, 2013)

  • Miscellaneous fixes and improvements.

New in TextMate 2.0 R9319 Alpha (Oct 1, 2012)

  • Using “Transpose” (⌃T) with a discontinuous selection will now swap the selected strings. If pressed repeatedly, and more than two strings are selected, it will cycle through all possible permutations.
  • The scope now contains dyn.selection and/or dyn.caret.*
  • When expanding tab triggers the left scope is the scope to the left of the start of the potential tab trigger and the right scope is likewise that to the right of the potential tab trigger.
  • rmate: Overwriting an existing file now preserve the existing file’s group and owner.

New in TextMate 2.0 R9315 Alpha (Sep 25, 2012)

  • Files which use CRLF no longer cause problems for Find in Folder.
  • One can now use ⌃S and ⌃⇧S for Find Next/Previous when incremental search is active. Also improved the look of the incremental search control.
  • It’s now possible to use “replace selected” after Find All for a single document (previously the selection was not respected).
  • Added a `TM_QUERY` command that can be used to query (project specific) settings for bundle commands.

New in TextMate 2.0 R9313 Alpha (Sep 22, 2012)

  • Add indent aware begin/end of line action methods.
  • If you create a set of local key bindings then they no longer eclipse the default set.
  • The gear icon in the Find in Folder status bar (above the results view) now have four flavors of copying the results to the clipboard. These work on the selected items falling back to all matches, if there is no selection (here selection means actual list view selection, not “checked” via the check boxes).
  • Launching commands from TextMate now only inherit a few whitelisted variables from the process that launched TextMate. This should fix inconsistencies between running TextMate from the shell versus Finder, and in the former case, avoid problems if you set `RUBYOPT` or similar.
  • When moving the selection and padding is inserted, we no longer extend the selection to include this padding.
  • Moving selection left/right with an east asian character on left/right side would insert a space rather than move the selection.
  • Creating new files via New Tab no longer have the file show up in the Open Recent menu.
  • Opening files via `mate` no longer have the item show up in the Open Recent menu. Though you can call `mate --recent` to force the file to appear (or make an alias). The rationale is that `mate` is often used to edit temporary files like commit messages and that the shell history serves as an alternative to “Open Recent”.
  • If more than 256 KB of text was selected, running commands would fail, as the `TM_SELECTED_TEXT` variable exceeded `ARG_MAX` which would cause `execve` to fail. If more than 256 KB of text is selected we now set the `TM_SELECTED_TEXT` variable to a placeholder.
  • Add some checks that should prevent a crash when system ask about text metrics (with a bogus text index). Unsure exactly under which circumstance the crash happens, but likely related to the system-wide dictionary service or multi-lingual input.
  • Update `rmate`: Saving would fail if editing `file` and `file~` already existed.
  • If ⌘-clicking a single caret two times, TextMate would crash, as ⌘-clicking an existing caret normally removes that caret, except when there is only a single one, in that case, it would (wrongly) add a caret leaving two carets at the same position, and make the second click remove both of these two carets, leaving the editor with no carets.
  • Fix crash when clicking exactly on the split view dividers.
  • Fix potential crash when quitting TextMate (in `network::launch_tbz`).

New in TextMate 2.0 R9311 Alpha (Sep 19, 2012)

  • Untitled documents now base their scope attributes on the file browser’s location. This mean things like ⌘B or ⌘Y will call the proper build / SCM action(s) when used in untitled documents (e.g. the initial document showing after opening a project folder via ⇧⌘O or `mate .`).
  • Previous build changed the semantics of the include/exclude patterns for the file browser: Now a file **must*be matched by the include pattern in order to be shown. The default patterns have been updated, but if you have edited them, or have your own include pattern in a `.tm_properties` file, then you should add the asterisk to your set of included files, e.g. `{*,.tm_properties,.htaccess,.gitignore}`.
  • I also forgot to mention that previous build is WIP with respect to the main window, presently you can size splits larger than the window, which trigger a resize, and the HTML output view can only go at the bottom. If you wish to “downgrade” an easy way is to hold down shift (⇧) when clicking “Check Now” (with the type set to “Normal Releases”).
  • The start/stop fold marker patterns are still used for a line even if that line is also matched by the fold indented block ignore pattern.
  • Fix crash which would often happen when closing document while a tool tip was showing.
  • Fix wrong document (sometimes) showing after session restore and in theory if quickly cycling through tabs of documents that hasn’t been loaded yet.
  • Previous build introduced a bug that affected bundle items with “empty” strings as values for their property list keys.
  • Column selection cursor (crosshair) should be less likely to stick (e.g. after ⌥F2).
  • Fix `x-insert` dialog command to work even when the text view doesn’t have focus. *[Hans-Jörg Bibiko]*
  • Fix missing curly quotes in a few dialog texts. *[Ryan Maxwell]*

New in TextMate 2.0 R9309 Alpha (Sep 17, 2012)

  • Minimum dimensions are enforced when resizing the file browser or HTML output. The explicit resize buttons have been removed but dragging the dividers should now be easier, as the hot zone has been increased.
  • Setting a file type for a dot file wouldn’t stick.
  • Sections (in .tm_properties files) which use a scope selector now apply according to their rank (when matched against current scope) so e.g. a setting for source.ruby in Global.tmProperties will win over a setting for just source in a more local .tm_properties file.
  • Find in Folder (⇧⌘F) and File Chooser (⌘T) now exclude files matched by the “Non-text files” glob setup in Preferences → Projects.
  • The various include/exclude globs you can set in .tm_properties are now aggregated. So setting exclude and excludeDirectories will exclude directories matched by either of the two globs (rather than the “most specific”).
  • Incase you want to set a custom window title but keep the SCM info you can use the windowTitleSCM variable, e.g.: windowTitle = '$TM_DISPLAYNAME — ${CWD/^.*\///}$windowTitleSCM'.
  • Exploiting the way sections with scope selectors are now evaluated last, it is possible to set a global window title based on a potential projectDirectory variable.
  • Normally we can’t use projectDirectory in a default/global setting, because that variable is set later, and we have no way to specify “late binding”. However, by setting it in a scope selector section we evaluate the variable after a potential projectDirectory has been set in a more local .tm_properties file. The scope selector used here is attr, which means all attr scopes or (the comma operator) the empty scope selector (which matches everything).
  • Removed Chinese translation. Since the translated interface files contain more than just strings, outdated translations affect program behavior. We’ll soon move fully to constraint-based layout which should allow translations to be purely string-based (on 10.8).
  • r9307 accidentally included a “Select Next” macro bound to ⌃W for when there was a selection. This interfered with using ⌃W with multiple carets (as presently multiple carets trigger the dyn.selection.discontinuous scope even if they are all zero-width).
  • Include SCM info in window title by default. This is done by having the following in Default.tmProperties:
  • windowTitleSCM = '${TM_SCM_BRANCH:+ ($TM_SCM_NAME: $TM_SCM_BRANCH)}'
  • windowTitle = '$TM_DISPLAYNAME$windowTitleSCM'
  • Added two new variables:
  • 1. `TM_APP_IDENTIFIER` — bundles which need to read settings from TextMate should use this instead of hardcoding `com.macromates.TextMate.preview`. Normally though bundles should **not** need to read TextMate settings except those they write themselves, for example the Preferences dialogs for various bundles are bound to TextMate’s user defaults.
  • 2. `TM_CURRENT_THEME_PATH` — this is the path of the current theme. Incase the theme is in delta format, it points to the base theme, long-term TextMate may store a non-delta version in a temporary folder and let it point to that, so that bundles can always assume the theme is in non-delta format.
  • Various improvements to glob matching:
  • 1. `**` can now be followed by something other than `/`, e.g.: `src/**.{cc,mm,h}`.
  • 2. `*` and `**` now match leading dot when they are not followed by `/` or at the beginning of the glob, e.g. `main*` will match `main.cc`.
  • 3. Negating a glob (by prefixing with `!`) now also rejects dot files, e.g. `!cache/**` will exclude `cache/.DS_Store` even though `cache/**` (non-negated) would not have matched that path.

New in TextMate 2.0 R9307 Alpha (Sep 11, 2012)

  • If an open file is renamed on disk, TextMate will wait up to one second for a new file to appear before updating the document’s path. This is to work with programs that renames the existing file and saves a new in its place, instead of saving a new file and using [exchangedata(2)](x-man-page:///exchangedata/2).
  • When a file was externally modified, using undo followed by redo would freeze TextMate.
  • The undo/redo menu items are now disabled when the action is unavailable.

New in TextMate 2.0 R9306 Alpha (Sep 11, 2012)

  • Spelling dot was drawn upside down.
  • Gutter and folded text images were drawn using wrong dimensions on retina Macs.

New in TextMate 2.0 R9305 Alpha (Sep 10, 2012)

  • Fix crash introduced in r9303.

New in TextMate 2.0 R9304 Alpha (Sep 10, 2012)

  • Escape PAC URL strings when they are invalid. Using “Choose File” in network settings could lead to a file URL with spaces which would cause a crash when TextMate needed to do network requests (for software update and crash report submissions).
  • Default host for rmate is now ‘auto’ (when using ssh).

New in TextMate 2.0 R9302 Alpha (Sep 8, 2012)

  • A few improvements has been done with respect to how proxy items appear in the interface:
  • Proxy items in the menu now show the items matched by the query. E.g. if you look in _Bundles_ → _SCM_ you will see the SCM actions available. Previously you saw the proxy item. If no items are matched by the query, the proxy item itself is shown but as disabled. The idea is that we can have _Run_, _Documentation for Word_, _Validate Syntax_, and similar common actions appear in e.g. the Source bundle or (in the future) a toolbar/palette, and the user can go via these actions to run the action relevant for the current context.
  • In the bundle item chooser (⌃⌘T) duplicates no longer appear (items matched would appear as a duplicate for each proxy item matching that item).
  • Items without a key equivalent but matched by a proxy item will now show the key equivalent of the proxy item. E.g. looking in the Git menu you will now see that (most of) the actions can be triggered with ⌘Y.
  • The query string in proxy items now support the `||` operator for “fallback”, e.g. we can make a proxy item with a query like: `action.build || format.strong` which will find a build action for the current context (scope) and if none is found, it will instead search for a `format.strong` (bold) action.
  • Other Changes:
  • Add two new action methods: findNextAndModifySelection, findPreviousAndModifySelection.
  • During save, the potential dialogs asking to unlock files or change encoding would not accept the user’s choice (bug recently introduced).
  • Fix out of range assertion in some cases when switching files (gutter was querying the new document using the selection used in the old one).
  • When extending a selection we now only highlight the new ranges selected rather than all of them (e.g. Find All (⌥⌘F) when there already is one instance selected or the new `find{Next,Previous}AndModifySelection:`).
  • Jumping files with ⌘G (after a Find in Folder) would lead to an anchored selection, a few other cases would also cause the selection to be anchored. This is no longer the case (the subtle difference here is that unanchored selections will always extend for the initial shift (⇧) + movement action).
  • Add revision numbers to release notes. *[Elia Schito]*

New in TextMate 2.0 R9301 Alpha (Sep 5, 2012)

  • Fix crash for when one of the `Bundles` folders (under `Library/Application Support`) was a symbolic link.
  • Fix crash related to trying to use a grammar that no-longer exists on disk, i.e. before the bundle index had a chance to catch up with disk changes.

New in TextMate 2.0 R9300 Alpha (Sep 5, 2012)

  • The underline drawn for misspelled words now use high-DPI artwork on retina macs.
  • Bundle item names using “«unit» / Selection” in their title now display either “«unit»” or “Selection” depending on whether or not there is a selection.
  • The pop-up menu used for multiple choices (in snippets) now filter items based on the prefix typed (rather than just changing selection). It also no longer pin the selected item at the first visible row.
  • The various filter lists (⌘T, ⇧⌘T, and ⌃⌘T) are now positioned relative to the current document window.

New in TextMate 2.0 R9299 Alpha (Sep 5, 2012)

  • Wrap Column → Other… now show a sheet where you can enter wrap column.
  • We now search the menus “right to left” when searching for a key equivalent. The problem is that on some key maps the keys used to Toggle Foldings at Level (⌥⌘1-n) clash with modifier + bracket used in the Text menu for shift left/right.
  • When editing property lists in the bundle editor, the dictionary keys are now ordered more naturally.
  • Drag-selecting beyond visible document no longer leaves tears in the selection.
  • When viewing a saved search (spotlight query) in the file browser, going to parent now correctly goes to the folder containing the saved search.
  • Fix slow performance with subversion repositories (introduced in last build, only present when all files were “clean”). Also fix issue where badges wouldn’t always update instantly (also introduced recently).
  • When showing SCM Status for subversion repositories in the file browser, we no longer remove parent folders for uncommitted items nor child items (reported by `svn status`) for untracked folders.
  • It is now possible to “open” an Xcode project file inside TextMate. This “descends” into the project descriebed by the project file.

New in TextMate 2.0 R9296 Alpha (Sep 3, 2012)

  • You can now disable SCM badges by adding this to `.tm_properties`: scmStatus = false. This can be set either globally (`~/.tm_properties`) or for specific projects. If you see file browser performance issues then you should try to disable SCM badges.
  • Improve performance of obtaining subversion status by using `xsltproc` to process the XML (instead of `python`) and by skipping status parsing for clean files.
  • Fix issue with bundle item key equivalents sometimes eclipsing regular menu items even when the bundle item in question should not be enabled (due to scope selector).

New in TextMate 2.0 R9295 Alpha (Sep 3, 2012)

  • Doing authenticated saves would fail (out of memory) if you had an older (32 bit) version of the “auth server” installed. TextMate now ensures the installed version is up-to-date.
  • Running `sudo mate` would fail to establish connection with TextMate (bug introduced when socket name was changed to include user ID).
  • The tab size dialog (Other…) now allow you to set a tab size of 1.
  • Improved alignment of the gutter images and made them adjust to font size.
  • Calling TextMate via QuickCursor would show wrong display name or in worst case cause a crash.
  • Improved subversion status parser so unexpected output doesn’t cause a crash.
  • Running commands from TextMate wouldn’t always set the working directory to that of the current document (introduced in r9292 / 2012-08-28).
  • Gutter line numbers wouldn’t always update (introduced in last nightly).

New in TextMate 2.0 R9293 Alpha (Aug 31, 2012)

  • Fix random crash mainly when bringing focus back to TextMate or opening a new window.
  • If TextMate fails to read a link (readlink) it will show an alert with some diagnostics that you should submit to us (more info in the dialog). This is an attempt to track down another random crash that has been frequent (but has been in decline in recent versions, though not because it is fixed).
  • The Go to File window (⌘T) would lack the last path separator for the path shown in the status bar.
  • Key equivalent field now use the normal system font (instead of Menlo and previously Monaco).
  • Fix missing svn status for long committer names. [Jeremy Whitlock]
  • WIP: Updated gutter images, presently not aligned/sized optimally. [Dennis Vennink]

New in TextMate 2.0 R9292 Alpha (Aug 30, 2012)

  • TextMate is now built with libc++ and as a 64 bit application using the new Objective-C run-time. Ideally no changes affecting the user, but a lot has changed under the hood. Jacob Bandes-Storch
  • New TM_SCM_NAME variable giving the name of the SCM system used for the current file (git, svn, or hg) which can be used when setting windowTitle. Adam Strzelecki
  • Untitled documents now get their TM_SCM_BRANCH and TM_SCM_NAME variables based on the current project. Adam Strzelecki
  • Update window title when application is activated for the case where the current branch (SCM) is part of the title. Adam Strzelecki
  • Update look of release notes and make it a normal window (instead of floating). Dustin Wilson
  • Fix crash when using Find All in the Find dialog for an untitled file (introduced in last release).

New in TextMate 1.5.11 R1634 (Jun 27, 2012)

  • [NEW] TextMate is now signed with an Apple issued developer ID (for Gatekeeper compatibility).

New in TextMate 2.0 R8930 Alpha (Dec 14, 2011)

  • Multiple carets / discontinuous selection:
  • The easiest way to get multiple carets is by doing a left or right movement command (like arrow left/right) with a column selection. You can also ⌘-click to place new carets or use Edit → Find All (⌥⌘F).
  • Snippets:
  • New syntax for pop-up menus: ${1|first,second,…,last|}. In a Git commit message try fixup⇥ to get a pop-up of your last 10 commit messages (for a fixup!-commit) or between @interface…@end in Objective-C you can try prop⇥ to get a @property-declaration with pop-up for its access type.
  • Snippets can be nested, a frequent request but it does cause a few false firings of snippets which we haven’t yet found a good solution for.
  • Movement / Selection:
  • Text is classified into units which you can change with the characterClass (scope) setting. For example a C string with %1$ld\n has only two units (%1$ld and \n) for the purpose of selection (Select → Word or double click), word movement (⌥⇠/⌥⇢), and other functions that rely on character types.
  • TextMate 1.x has Select → Block (⇧⌘B) where a block is found using scope-defined paired characters such as braces, brackets, etc. In 2.0 you can move to begin/end of such block with ⌃⇡/⌃⇣ and the paired characters can be strings (planned to be patterns).
  • Whenever you select a unit (like anything in the Edit → Select submenu) the selection is “unanchored”, meaning it can be extended to either the left or right side. A minor thing but I find it surprisingly useful, e.g. to select foo(bar‸) we first select the parenthesis with ⇧⌘B and then extend left by one unit with ⌥⇧⇠, previously you couldn’t be sure the last step would extend or simply move the selection end point.
  • Themes:
  • There now is the ability to change font and font size per scope. So you’ll (by default) see that headings in markup are shown with a larger (non-fixed width) font.
  • You can also change soft wrap on a per-line basis, so soft wrap is e.g. disabled (by default) for diffs embedded in Git commit messages, raw (code) blocks embedded in markup, and enabled for line comments in source.
  • Soft wrap can be indented. This is also based on scoped settings so list items in markup are indented differently than line comments in source.
  • Foldings:
  • Foldings have been taken out of grammars and are now per-line (via scoped settings). In addition there are two new patterns to allow folding indented blocks.
  • Indent:
  • TextMate is more aggressive about doing indent corrections. This works great when the patterns are well-calibrated but can be disabled with the disableIndentCorrections scope-setting. This setting also change the behavior of re-indented paste to a heuristic that works much better with Python (for which indent corrections are disabled by default).
  • Folder specific settings:
  • Variables and some settings can be set on a folder / file-type basis.
  • Project drawer:
  • The project drawer has been replaced with a file browser sidebar. This file browser has most Finder functions (labels, duplicate, etc.) and does SCM-badging, presently only for Subversion, Git, and Mercurial. In addition it has support for running commands (although somewhat proof-of-concept ATM) and can also do custom data sources, the API is not yet public but an SCM Status data source is included (the smart folder icon) which show SCM status for the current project. This data source works great together with the various SCM bundles.
  • Buffer completion:
  • This has been improved to work with the existing word suffix (in addition to prefix), use the new character class system, etc.
  • Shell invocation:
  • Preferences → Terminal allows you to install mate which has a few new options and work when called as sudo mate. In addition you’ll find rmate which is a ruby implementation that you can use on a server over ssh.
  • Search in project / folder:
  • Revamped the old “Find in Folder” and merged it with the regular find dialog. It’s now asynchronous, a lot faster, and more flexible.
  • Format strings:
  • Format strings are ubiquitous in TextMate 2. Even scopes in grammars are format strings (allowing you to capture document content for use in scopes) and format strings are more powerful than the 1.x variant.
  • Scopes:
  • Scopes now contain info beyond document context. For example the attr.scm scopes give info about the current file’s SCM status, allowing using same key equivalent for different SCM systems.
  • The dyn scopes give info such as “is there a selection” (allowing to change key bindings only when there is or isn’t a selection), an example of this is overloading { to “wrap selection” (nicely), but leave the key alone when there is no selection. Another use-case could be to change tab to shift the text right (indent) only when there is a selection (common user request that I don’t plan to make native behavior).
  • You can also add your own stuff to the scope via the file and folder specific settings which allows e.g. adding attr.test to your unit tests and overload ⌘R for that scope or have certain snippets only fire in that scope (e.g. we have a main⇥ snippet for C which inserts the venerable main function — makes sense to overload this for (C) unit tests, which generally would be regular C files).
  • Scope selectors:
  • The caret is actually between two scopes, the left and right characters scope. In 2.0 we finally allow you to explicitly target either side (or both), making the firing of certain overloads more correct. There are also a few other new things related to scope selectors, but a lot of it is still only implemented in the parser, so will delay the thorough explanation of this.
  • Commands:
  • Commands can require other bundles which allow them to reference support files in the required bundle. They can also declare which shell commands they need which means better error handling and also having TextMate try to find the required commands. Failing commands result in more graceful error dialogs. The output options for a command has been split into location and format. Commands can run without a document.
  • Grammars:
  • Grammars can be injected into existing scopes, for example there are now grammars for marking URLs, TODO, and similar which are injected into comments and other appropriate places.
  • Various other things related to parsing which require its own post.
  • Semantic classes:
  • Bundle items can now be assigned a semantic class. This allows us to query for e.g. action.build || action.run (for current scope) to find an appropriate build command (with a run command as fallback). The advantage of this is manyfold: ability to do tool bars, palettes, and unified key bindings, for example we have a single proxy item bound to ⌘Y which does a query for action.scm finding all the SCM actions relevant for the current scope (remember scope now include SCM info, making it pick the proper SCM system).
  • Proxy items are a new construct but still at the proof-of-concept level, so more about this later.
  • TextMate itself will also do queries at various times, for example when opening a file it queries for import commands, where we include several to decompile AppleScript, pretty-print binary property lists, and similar. It also uses this system on save, so by default we now make new scripts with a shebang executable after save.
  • Like proxy items, this system is in its infancy.
  • Managed bundles:
  • When you open a file type for which you have no bundle, you’ll be asked to install one (if TextMate knows of one). Bundles are automatically kept up to date and you can see installed bundles (and install more) in Preferences → Bundles.
  • Session restore:
  • TextMate restores the full session which includes unsaved changes incase of abnormal exit. Hold shift (⇧) during launch to bypass.
  • Foreign Input Modes:
  • Display of CJK and “advanced” input modes is now be supported (although only limited testing has been done).

New in TextMate 1.5.10 R1623 (Nov 23, 2010)

  • [FIXED] Java bundle’s Compile & Run again works with non-ASCII source code.
  • [FIXED] Include latest Ruby on Rails bundle.
  • [FIXED] Avoid using fcntl(F_SETOWN) when Interactive Input is not present. Ticket F66289D9.
  • [NEW] It is possible to set DisableColumnSelectionTogglingOnOption (via defaults write) to disable ⌥ behavior. Ticket 5C202273.
  • [FIXED] Workaround for stale dead key info related to French keymap and ^.
  • [FIXED] Shift left again works on ⌥⇧⇥. Ticket 9E09E055.
  • [FIXED] The old tab switching keys can now be used. Only the new ones are in the menu and these have been changed to remove the shift modifier and instead require a press of { and }. This is to provide better compatibility with layouts where the brackets themselves require using shift. Ticket 395A4706.

New in TextMate 1.5.10 R1616 (Nov 13, 2010)

  • [CHANGED] Disable interactive input support as this is unfortunately causing too many problems on Snow Leopard. Ticket 75950BCB.
  • [NEW] Set DisableClipboardPrecomposing to 1 to disable the precomposing introduced in r1589.
  • [NEW] Included Make bundle among the default bundles.
  • [FIXED] Solved problem with broken application after software update. Ticket D8B9A720.
  • [FIXED] Correct the CSS link in the printable version of the manual.
  • [CHANGED] Change next/previous file tab key equivalents to shift command [ and ]. This has become the de facto standard.
  • [FIXED] Improve key event deciphering when running on 10.5 or newer. This should fix problems with the Qwerty / Dvorak hybrid.
  • [FIXED] On Snow Leopard TextMate should no longer lose last used folder for Save As. Ticket FEE58154.
  • [FIXED] Truncate really long menu item titles. Ticket 8BBEF40A.
  • [FIXED] Add missing CFBundleIdentifier which was lost in last update. Ticket F970873A.
  • [CHANGED] Update use of selectRow:byExtendingSelection: to avoid deprecation warning in console.
  • [FIXED] Don’t use undocumented API for save panels. Ticket 45963BCA.

New in TextMate 1.5.8 R1498 (Feb 11, 2009)

  • [FIXED] The default template (from New Template / New Template File) now use TM_FULLNAME instead of setting up TM_USERNAME and using that.
  • [FIXED] Menu items in the gear menu use the proper menu size on Leopard.
  • [NEW] On Leopard TextMate asks the system to let the Find window “move to active space”. Unfortunately, after having moved TM to a new space, the window will quite consistently open in a non-active space (without switching to that space). When this happens, press cmd-F again, and the window will then move to the active space.
  • [FIXED] Initiating a drag, causing the text to be unselected (w/o releasing the mouse) and then holding down option (switching to column mode) would lead to a crash when TM tried to create the drag image.
  • [FIXED] Python bundle: Python New Method/Function now outputs a helpful message when used improperly, instead of barfing a traceback into the document.
  • [NEW] JavaScript bundle: Add a Javascript beautifier script, with a shortcut of ⌃Q.