TextMate 2.0.23

TextMate is a text editor for MacOS X which binds common Unix tools and features and is useful as programming editor. It provides project sessions, regex search and replace, auto indentation, bracket pairing, a clipboard history, column selections, word completion, CSS-style selections, language grammars and syntax highlighting (50 langs), document outlines, shortcut words, code folding, visual file bookmarks. It's also plugin-extendable, allows macro recording, shell command invocation, SCM integration, and works together with Xcode.

Tags c++ objective-c text-editor macosx programmers
License GNU GPLv3
State beta

Recent Releases

2.0.2308 Jul 2023 20:25 minor feature:
2.0.2217 Apr 2021 10:45 minor feature: 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. See all changes since v2.0.21.
2.0.2119 Mar 2021 11:25 minor bugfix: 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 as with Z / Z in v2.0.19). See all changes since v2.0.20.
2.0.1926 Feb 2021 09:25 minor feature: 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. See all changes since v2.0.18.
2.0.1605 Feb 2021 20:25 minor feature: 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. See all changes since v2.0.15.
2.0.1501 Jun 2020 07:25 minor bugfix: 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. See all changes since v2.0.14.
2.0.1111 May 2020 00:05 minor feature: 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 since v2.0.8). See all changes since v2.0.10.
2.0.719 Apr 2020 07:25 minor feature: 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 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:
2.0.416 Dec 2019 17:25 minor bugfix: Possible for accessibility features causing crashes on macOS 10.15. See all changes since v2.0.3.
2.0.229 Oct 2019 19:45 minor bugfix: : Context menu items for tabs would be disabled in full screen mode. : Changes made to bundles on disk could go undetected on macOS 10.15. : 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). : In rare circumstances the tab bar (after launch) would have one tab missing even though space was allocated for this tab. See all changes since v2.0.1.
2.0.108 Oct 2019 19:25 minor bugfix: Allow loading plug-ins not signed by Apple nor MacroMates. : File permission flags were lost when saving using the default atomic save algorithm. : Disposing a nib using `" DIALOG" nib --dispose token ` would not the nib s window. See all changes since v2.0.
2.016 Sep 2019 10:45 major bugfix: After far too long, there is no longer any qualifier sufin 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 responsibly 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. Not everything on the wishlist made it into 2.0, but TextMate remains a work in progress, so don t despair :). * Allan Odgaard*.
2.0-rc.3026 Aug 2019 06:25 minor feature: Add even more deoutput for when TextMate is activated via mate. Look for numeric prewhen 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`. See all changes since v2.0-rc.29.
2.0-rc.2930 Jul 2019 06:45 minor feature: Add more deoutput for when TextMate is activated via mate. Miscellaneous minor and tweaks. See all changes since v2.0-rc.28.
2.0-rc.2709 Jul 2019 06:25 minor feature: Saving a file would lose the existing file s permission flags. See all changes since v2.0-rc.26.
2.0-rc.2320 Mar 2019 03:15 minor feature: Some UI for 10.13 and earlier (introduced in previous build(s)). Implement accessibility rotor for document symbols. Explanation here. * Boris Dušek *. See all changes since v2.0-rc.22.
2.0-rc.2211 Dec 2018 03:15 minor feature: Improve UI for tagging files (file browser action menu). * Ronald Wampler *. See all changes since v2.0-rc.20.
2.0-rc.1820 Nov 2018 03:15 minor feature: 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 in an upcoming build (to have active tab use titlebar material ). The first one is probably not coming back anytime soon. See all changes since v2.0-rc.15.
2.0-rc.1131 Oct 2018 03:15 minor feature: 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 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. See all changes since v2.0-rc.10.
2.0-rc.1012 Jun 2018 03:15 minor bugfix: It is now possible to scroll project/folder search results horizontally. Misclassification of file encoding for documents saved with TextEdit. * Ronald Wampler *. Potential deadlock when using T just after loading a new document. an where setting a mark (in the gutter) via `mate` could cause TextMate to crash. See all changes since v2.0-rc.9.
2.0-rc.901 May 2018 06:45 minor feature: TextMate s QuickLook plug-in no longer claims `public.data` (files without extension). The idea was to support previewing files like `README` but a side-effect was that TextMate s QuickLook plug-in became responsible for generating thumbnails for all binary files without a dedicated QuickLook plug-in (e.g. disk images or zip archives). There appears to be no way to dynamically opt out of thumbnail generation, therefor we ve had to remove support for previewing files without extension. See all changes since v2.0-rc.8.
2.0-rc.523 Dec 2016 05:25 minor feature: 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. * Ronald Wampler *. See all changes since v2.0-rc.4.
2.0-rc.102 Dec 2016 10:05 minor bugfix: Removed beta from version string (and miscellaneous /improvements). See all changes since v2.0-beta.12.26.
2.0-beta.12.2612 Nov 2016 03:15 minor feature: TextMate s bundle identifier has been changed to `com.macromates.TextMate` (previously it had a `preview` suf). 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 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). See all changes since v2.0-beta.12.23.
2.0-beta.12.2322 Oct 2016 07:05 minor feature: 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`. See all changes since v2.0-beta.12.21.
2.0-beta.12.1301 Oct 2016 14:45 minor feature: 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. See all changes since v2.0-beta.12.11.
2.0-beta.12.420 Aug 2016 17:05 minor bugfix: I normally do not mention in the release notes but since this is a regular release primarily meant to address some reported, I am making an exemption. New: Projects with a `Package.swift` file now get the `attr.project.swift` scope. * Ronald Wampler *. : 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). : Specifying the same file multiple times via `mate` would cause an with the tab bar. : If a font was specified in `.tm_properties` and wasn t using the canonical name (e.g. spaces were inserted), TextMate would ignore it. : Doing a folder search for a CR character would throw an exception if any file was CRLF delimited. : Doing a folder search followed by Replace All would not do any replacements in inactive tabs. : Using the indented line movement actions when there was a column selection would not split the column selection into multiple carets (one per line). : Documents that caused the encoding dialog to show could cause TextMate to freeze. : Commands with tool tip output would sometimes cause the insertion point to temporarily stop blinking. See all changes since v2.0-beta.12.
2.0-beta.11.1030 Jul 2016 10:45 minor feature: 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 which does work. If you are using that version, you can clear TextMate s blacklist by running this in a termina: 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 with third party software using Open in TextMate then please let us know, preferably by using the mailing list. * Ronald Wampler *. See all changes since v2.0-beta.11.5.
2.0-beta.11.509 Jul 2016 06:05 minor documentation: 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: #.tm_properties setting = value # 1. Untargeted. text setting = value # 2a. Scope selector match. text.plain # 2b. More specific scope selector match setting = value . *.txt setting = value # 3. File type match. 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. It is worth mentioning though that all settings are actually evaluated, this is mainly useful for variables, for example we can do: #.tm_properties Foo = "This is Foo". text Foo = "a text file". source Foo = "source code". If you press R on a line containing `echo foo` it should show either _ This is a text file _ or _ This is source code _. 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. : Document settings targeted at file types (e.g. ` *.md `) would not work (since 2.0-beta.11). See all changes since v2.0-beta.11.4.
2.0-beta.9.518 Jun 2016 03:15 minor feature: Improve folder search performance for large documents with few newlines and lots of matches. `mate`: If the mark argument given to `--clear-mark` has a trailing slash then all marks with this prewill be removed. The *Jump to Selection menu item has been moved to the Navigate menu and items in this menu are now using consistent naming. * Ronald Wampler *. 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 *. If `git` is found in `/usr/bin` then we check if Xcode is installed and if not, we ignore git. This is because `/usr/bin/git` 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` unless we actually find a `.git` folder in your project. See all changes since v2.0-beta.9.3.
2.0-beta.9.229 May 2016 03:15 minor feature: You can now double click parentheses, braces etc. to select the contents. * Brian T. Kelley *. Optionally draw a vertical 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. The Jump to Next/Previous Mark shortcuts have been changed to F3/ F3 so as to not conflict with some keyboard layouts. See all changes since v2.0-beta.9.
2.0-beta.9.108 May 2016 06:45 minor feature: 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. See all changes since v2.0-beta.9.
2.0-beta.917 Apr 2016 04:25 minor feature: 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 Be nony *. See all changes since v2.0-beta.8.4.
2.0-beta.8.407 Dec 2015 03:15 minor feature: 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. See all changes since v2.0-beta.8.1.
2.0-beta.8.129 Oct 2015 03:15 minor feature: 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. See all changes since v2.0-beta.8.
2.0-beta.829 Sep 2015 07:05 minor feature: 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 r 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`. See all changes since v2.0-beta.7.4.
2.0-beta.7.908 Sep 2015 16:05 minor feature: You can now export a bundle (merging potential delta files) by right-clicking the bundle in the bundle editor and selecting _Export Bundle _. See all changes since v2.0-beta.7.7.
2.0-beta.7.706 Aug 2015 03:15 feature minor: 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. See all changes since v2.0-beta.7.6.
2.0-beta.7.516 Jul 2015 09:25 minor feature: 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`. See all changes since v2.0-beta.7.2.
2.0-beta.7.214 Jun 2015 15:45 minor feature: 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. See all changes since v2.0-beta.7.
2.0-beta.729 Mar 2015 18:25 feature: 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). 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. Visual improvements for tabs and file browser on Yosemite. Increasing and decreasing font size ( + / -) now shows the current scale factor to make it easy to get back to 100 .
2.0-beta.6.729 Jan 2015 07:25 minor feature: You can have the recent projects / favorites list shown on startup and re-activation . To enable this behavior run: `defaults write com.macromates.TextMate.preview showFavoritesInsteadOfUntitled -bool YES` ** Improve heuristic that looks up actions based on key events. If you have a non-Latin keyboard and see unexpected behavior wrt. triggering actions via their key equivalents, let me now (e.g. via ). See
2.0-beta.5.231 Oct 2014 11:05 minor bugfix: 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.