Changes

2021-10-12 (v2.0.23)

2021-04-16 (v2.0.22)

2021-03-08 (v2.0.21)

2021-03-07 (v2.0.20)

2021-02-25 (v2.0.19)

2021-02-09 (v2.0.18)

2021-02-05 (v2.0.17)

2021-02-04 (v2.0.16)

2020-05-16 (v2.0.15)

2020-05-14 (v2.0.14)

2020-05-14 (v2.0.13)

2020-05-10 (v2.0.12)

2020-04-30 (v2.0.11)

2020-04-23 (v2.0.10)

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

2019-12-28 (v2.0.6)

2019-12-28 (v2.0.5)

2019-09-15 (v2.0)

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:

Not everything on the wishlist made it into 2.0, but TextMate remains a work in progress, so don’t despair :)

— Allan Odgaard

2019-08-26 (v2.0-rc.31)

2019-08-21 (v2.0-rc.30)

2019-07-16 (v2.0-rc.29)

2019-07-13 (v2.0-rc.28)

2019-07-08 (v2.0-rc.27)

2019-07-08 (v2.0-rc.26)

2019-07-07 (v2.0-rc.25)

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:

Other Changes

2019-03-19 (v2.0-rc.23)

2018-12-06 (v2.0-rc.22)

2018-12-02 (v2.0-rc.20)

2018-11-14 (v2.0-rc.18)

2018-11-02 (v2.0-rc.15)

2018-11-01 (v2.0-rc.14)

2018-06-11 (v2.0-rc.10)

2018-04-02 (v2.0-rc.9)

2018-03-08 (v2.0-rc.8)

2016-12-03 (v2.0-rc.5)

2016-11-18 (v2.0-rc.4)

2016-11-11 (v2.0-rc.1)

2016-10-23 (v2.0-beta.12.26)

2016-10-11 (v2.0-beta.12.23)

2016-10-03 (v2.0-beta.12.21)

2016-09-21 (v2.0-beta.12.13)

2016-09-09 (v2.0-beta.12.11)

2016-08-30 (v2.0-beta.12.8)

2016-08-25 (v2.0-beta.12.5)

2016-08-18 (v2.0-beta.12.4)

I normally do not mention fixes in the release notes but since this is a regular release primarily meant to address some reported issues, I am making an exemption.

2016-08-08 (v2.0-beta.12)

2016-05-25 (v2.0-beta.9.2)

2016-03-05 (v2.0-beta.9)

2015-12-06 (v2.0-beta.8.4)

2015-10-23 (v2.0-beta.8.1)

2015-09-16 (v2.0-beta.8)

2015-06-13 (v2.0-beta.7.2)

2015-03-25 (v2.0-beta.7)

2015-02-03 (v2.0-beta.6.8)

2015-01-19 (v2.0-beta.6.7)

2014-11-29 (v2.0-beta.6.4)

2014-11-11 (v2.0-beta.6.1)

2014-11-05 (v2.0-beta.5.4)

2014-10-29 (v2.0-beta.5)

2014-10-20 (v2.0-beta.3)

2014-10-16 (v2.0-beta.1)

2014-10-15 (v2.0-alpha.9575)

2014-10-10 (v2.0-alpha.9573)

2014-09-26 (v2.0-alpha.9567)

2014-09-17 (v2.0-alpha.9565)

2014-09-02 (v2.0-alpha.9563)

2014-08-17 (v2.0-alpha.9559)

2014-07-31 (v2.0-alpha.9555)

2014-07-12 (v2.0-alpha.9551)

2014-07-06 (v2.0-alpha.9549)

2014-05-18 (v2.0-alpha.9547)

2014-05-18 (v2.0-alpha.9545)

2014-04-28 (v2.0-alpha.9543)

2014-04-18 (v2.0-alpha.9539)

2014-04-12 (v2.0-alpha.9533)

2014-04-05 (v2.0-alpha.9531)

2014-03-31 (v2.0-alpha.9529)

2014-02-23 (v2.0-alpha.9515)

2014-01-13 (v2.0-alpha.9503)

2013-11-03 (v2.0-alpha.9495)

2013-10-23 (v2.0-alpha.9489)

2013-10-08 (v2.0-alpha.9487)

2013-09-13 (v2.0-alpha.9479)

2013-09-06 (v2.0-alpha.9477)

2013-08-26 (v2.0-alpha.9475)

2013-08-02 (v2.0-alpha.9459)

2013-07-31 (a9455)

2013-07-23 (a9449)

2013-06-28 (a9439)

2013-06-24 (a9437)

2013-06-21 (a9435)

2013-06-15 (a9433)

2013-05-26 (a9427)

2013-05-17 (a9423)

2013-05-02 (a9419)

2013-04-25 (a9417)

2013-04-23 (a9415)

2013-04-10 (a9411)

2013-03-27 (a9407)

2013-03-26 (a9405)

2013-03-21 (a9403)

2013-03-20 (a9401)

2013-03-18 (a9399)

2013-03-17 (a9397)

2013-03-13 (a9395)

2013-03-07 (a9393)

2013-03-07 (a9391)

2013-03-04 (a9389)

2013-02-25 (a9387)

2013-02-22 (a9385)

2013-02-18 (a9383)

2013-02-16 (a9381)

2013-02-15 (a9379)

2013-02-11 (a9377)

2013-02-08 (a9375)

2013-02-06 (a9371)

2013-02-05 (a9367)

2013-02-05 (a9363)

2013-02-04 (a9361)

2013-01-30 (a9359)

2013-01-29 (a9353)

Settings

File browser

File chooser (⌘T)

Text editing

Other

2013-01-23 (a9351)

2013-01-21 (a9349)

2013-01-17 (a9347)

2013-01-13 (a9345)

2013-01-10 (a9343)

2013-01-10 (a9341)

2013-01-03 (a9337)

2013-01-03 (a9335)

2012-12-24 (a9331)

2012-12-20 (a9327)

2012-12-14 (a9325)

2012-11-14 (a9323)

2012-11-12 (a9321)

2012-10-01 (a9319)

2012-09-29 (a9317)

2012-09-24 (a9315)

2012-09-21 (a9313)

2012-09-18 (a9311)

2012-09-16 (a9309)

TextMate Hackathon

If there is some feature you would like to add to TextMate but need a little guidance on how to go about it, we are holding a TextMate Hackathon Saturday the 22nd of September 2012 starting at 2 pm, the address is:

SHAPE
Gothersgade 8B, 3rd floor
1123 København K
Denmark

We can fit 20-25 people so please let us know in advance if you wish to attend, either using the facebook event or by emailing Allan Odgaard (me).

We also welcome people who just want to drop by and say hello, share a pizza, or have some other project they want to hack on, in the company of fellow Mac/TextMate devotees.

2012-09-10 (a9307)

2012-09-10 (a9306)

2012-09-10 (a9305)

2012-09-09 (a9304)

2012-09-09 (a9303)

2012-09-07 (a9302)

Proxy Items

Proxy items are bundle items with a regular scope selector, key equivalent and/or tab trigger. Their body is a “query” which will find bundle items with a semantic class matching this (simple) query string.

Until now we have only used this for the SCM items. None of the actions (in Git, Mercurial, Subversion, and other SCM bundles) actually have a key binding, but they all have a semantic class which start with action.scm.

There is an SCM bundle with a single proxy item bound to ⌘Y which does a query for action.scm so if the user press ⌘Y, it will map to the SCM actions valid in the current scope (e.g. attr.scm.git).

A few improvements has been done with respect to how proxy items appear in the interface:

I plan to expand the query string to also support unions, so that we can e.g. bind ⌘D to a query on diff + scm.diff (to show Diff actions including those for the current version control system) and additionally put a scope assertion on the class query, for example my ideal ⌘B binding would likely be a query for:

action.build[-dyn.selection] || format.strong || action.build || action.run

So the first term (action.build) only match items if there is no selection, if there is a selection, we would instead search for a format.strong item, and if there isn’t any then we would look for a build action (this time even when there is a selection) and finally fallback on a run item.

If you have any comments on the above, please share on the mailing list.

Other Changes

2012-09-05 (a9301)

2012-09-04 (a9300)

2012-09-03 (a9298)

2012-09-02 (a9296)

2012-08-31 (a9294)

2012-08-30 (a9293)

2012-08-28 (a9292)

2012-08-27 (a9291)

2012-08-26 (a9290)

2012-08-22 (a9289)

2012-08-21 (a9287)

2012-08-19 (a9286)

2012-08-15 (a9283)

2012-08-14 (a9281)

2012-08-13 (a9278)

2012-08-12

2012-08-11 (a9270)

2012-08-10 (a9269)

The source for TextMate 2 is now available at GitHub under a GPL 3 license. There is an interview at Ars Technica that gives some background about what motivated this decision.

2012-07-09

2012-02-27

2012-02-18

2011-12-20

2011-12-18

2011-12-16


2011-12-13

Notable changes since to TextMate 1.5.10: