Misplaced Pages

TextMate: Difference between revisions

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Browse history interactively← Previous editContent deleted Content addedVisualWikitext
Revision as of 22:32, 13 November 2021 editMdijkstra (talk | contribs)5 editsm Limitations← Previous edit Latest revision as of 07:02, 8 January 2025 edit undoJJMC89 bot III (talk | contribs)Bots, Administrators3,695,779 editsm Moving Category:Software using the GPL license to Category:Software using the GNU General Public License per Misplaced Pages:Categories for discussion/Speedy 
(22 intermediate revisions by 18 users not shown)
Line 1: Line 1:
{{short description|Text editor}} {{Short description|GUI text editor for macOS}}
{{Infobox software {{Infobox software
| name = TextMate | name = TextMate
Line 7: Line 7:
| developer = Allan Odgaard (]), Ciarán Walsh | developer = Allan Odgaard (]), Ciarán Walsh
| released = {{Start date and age|2004|10|05|df=y}} | released = {{Start date and age|2004|10|05|df=y}}
| discontinued = yes
| latest release version = {{wikidata|property|preferred|reference|edit|Q2297533|P348|P548=Q2804309}}
| latest release date = {{start date and age|{{wikidata|qualifier|Q2297533|P348|P548=Q2804309|P577}}}} | latest release version = {{wikidata|property|preferred|references|edit|Q2297533|P348|P548=Q2804309}}
| latest preview version = {{wikidata|property|preferred|reference|edit|Q2297533|P348|P548=Q51930650}} | latest release date = {{wikidata|qualifier|preferred|single|Q2297533|P348|P548=Q2804309|P577}}
| latest preview date = {{start date and age|{{wikidata|qualifier|Q2297533|P348|P548=Q51930650|P577}}}}
| operating_system = ] | operating_system = ]
| genre = ] | genre = ]
| license = {{unbulleted list|2.0: ]|1.0: ]}} | license = {{unbulleted list|2.0: ]|1.0: ]}}
| website = {{URL|http://macromates.com/}} | website = {{URL|https://macromates.com/}}
}} }}
'''TextMate''' is a general-purpose ] ] for ] created by Allan Odgaard. TextMate features ] customizations, ], recordable ], ], ], ] integration, and an extensible bundle system. '''TextMate''' is a ] general-purpose ] ] for ] created by Allan Odgaard. TextMate features ] customizations, ], recordable ], ], ], ] integration, and an extensible bundle system.


==History== ==History==
TextMate 1.0 was released on 5 October 2004, after 5 months of development, followed by version 1.0.1 on 21 October 2004.<ref>David Hansson. “”, ''TextMate Blog'', 5 October 2004.</ref><ref>Allan Odgaard. “” on the TextMate wiki, 20 November 2005.</ref><ref>David Hansson. “”, ''TextMate Blog'', 21 October 2005.</ref> The release focused on ], and did not have a preference window or a toolbar, didn't integrate ], and had no options for printing.<ref>Matt Willmore. “ {{webarchive|url=https://web.archive.org/web/20060820174030/http://maczealots.com/reviews/textmate/ |date=2006-08-20 }}”, ''Maczealots.com'', 8 October 2004.</ref><ref>Michael “drunkenbatman” Bell. “ {{webarchive|url=https://web.archive.org/web/20060514032521/http://www.drunkenblog.com/drunkenblog-archives/000347.html |date=2006-05-14 }}”, ''Drunkenblog'', 4 November 2004.</ref> At first only a small number of programming languages were supported, as only a few “language bundles” had been created. Even so, some developers found this early and incomplete version of TextMate a welcome change to a market that was considered stagnated by the decade-long dominance of ].<ref>Kimbro Staken. “ {{webarchive|url=https://archive.is/20041204223039/http://www.xmldatabases.org/WK/blog/2129_A_cool_new_text_editor_-_TextMate_-_Mac_OS_X.item |date=2004-12-04 }}”, ''Inspirational Technology'', 6 October 2004.</ref> TextMate 1.0 was released on 5 October 2004, after 5 months of development, followed by version 1.0.1 on 21 October 2004.<ref>David Hansson. “ {{Webarchive|url=https://web.archive.org/web/20081205023934/http://macromates.com/blog/archives/2004/10/05/hello-world/ |date=2008-12-05 }}”, ''TextMate Blog'', 5 October 2004.</ref><ref>Allan Odgaard. “ {{Webarchive|url=https://web.archive.org/web/20070703083743/http://macromates.com/Profiles/AllanOdgaard |date=2007-07-03 }}” on the TextMate wiki, 20 November 2005.</ref><ref>David Hansson. “ {{Webarchive|url=https://web.archive.org/web/20200912103257/https://macromates.com/blog/archives/2004/10/21/textmate-101-emerges-after-nine-betas/ |date=2020-09-12 }}”, ''TextMate Blog'', 21 October 2005.</ref> The release focused on ], and did not have a preference window or a toolbar, didn't integrate ], and had no options for printing.<ref>Matt Willmore. “ {{webarchive|url=https://web.archive.org/web/20060820174030/http://maczealots.com/reviews/textmate/ |date=2006-08-20 }}”, ''Maczealots.com'', 8 October 2004.</ref><ref>Michael “drunkenbatman” Bell. “ {{webarchive|url=https://web.archive.org/web/20060514032521/http://www.drunkenblog.com/drunkenblog-archives/000347.html |date=2006-05-14 }}”, ''Drunkenblog'', 4 November 2004.</ref> At first only a small number of programming languages were supported, as only a few “language bundles” had been created. Even so, some developers found this early and incomplete version of TextMate a welcome change to a market that was considered stagnated by the decade-long dominance of ].<ref>Kimbro Staken. “ {{webarchive|url=https://archive.today/20041204223039/http://www.xmldatabases.org/WK/blog/2129_A_cool_new_text_editor_-_TextMate_-_Mac_OS_X.item |date=2004-12-04 }}”, ''Inspirational Technology'', 6 October 2004.</ref>


TextMate 1.0.2 came out on 10 December 2004. In the series of TextMate 1.1 ], TextMate gained features: a preferences window with a GUI for creating and editing themes; a status bar with a symbol list; menus for choosing language and tab settings, and a “bundle editor” for editing language-specific customizations. On 6 January 2006, Odgaard released TextMate 1.5, the first “stable release” since 1.0.2.<ref>Allan Odgaard. “”, ''TextMate Blog'', 6 January 2006.</ref> Reviews were positive, in contrast to earlier versions that had been criticised.<ref>Rui Carmo. “”, ''Tao of Mac'', 8 January 2006.</ref><!-- need some more references --> TextMate 1.0.2 came out on 10 December 2004. In the series of TextMate 1.1 ], TextMate gained features: a preferences window with a GUI for creating and editing themes; a status bar with a symbol list; menus for choosing language and tab settings, and a “bundle editor” for editing language-specific customizations. On 6 January 2006, Odgaard released TextMate 1.5, the first “stable release” since 1.0.2.<ref>Allan Odgaard. “ {{Webarchive|url=https://web.archive.org/web/20060325092903/http://macromates.com/blog/archives/2006/01/06/textmate-15/ |date=2006-03-25 }}”, ''TextMate Blog'', 6 January 2006.</ref> Reviews were positive, in contrast to earlier versions that had been criticised.<ref>Rui Carmo. “ {{Webarchive|url=https://web.archive.org/web/20061130133445/http://the.taoofmac.com/space/blog/2006-01-08 |date=2006-11-30 }}”, ''Tao of Mac'', 8 January 2006.</ref><!-- need some more references -->


TextMate continued to develop through mid-2006. On 8 August 2006, TextMate was awarded the Apple Design Award for Best Developer Tool, at Apple's ] in ], ], to “raucous applause.<ref>John Gruber. ”, ''Daring Fireball Linked List'', 8 August 2006.</ref> In February 2006, the TextMate blog expressed intentions for future directions, including improved project management, with a plug-in system to support remote file systems such as FTP, and ] systems such as ].<ref>Allan Odgaard. “”, ''TextMate Blog'', 15 February 2006.</ref> Throughout 2007, the core application changed only minimally, though its “language bundles” continued to advance. TextMate continued to develop through mid-2006. On 8 August 2006, TextMate was awarded the ] for Best Developer Tool, at Apple's ] in ], ].<ref>{{cite web |last1=Smykil |first1=Jeff |title=Apple Design Award winners announced |url=https://arstechnica.com/gadgets/2006/08/4937/ |website=] |access-date=11 January 2024 |language=en-us |date=9 August 2006}}</ref> In February 2006, the TextMate blog expressed intentions for future directions, including improved project management, with a plug-in system to support remote file systems such as FTP, and ] systems such as ].<ref>Allan Odgaard. “ {{Webarchive|url=https://web.archive.org/web/20081205030935/http://macromates.com/blog/archives/2006/02/15/future-directions/ |date=2008-12-05 }}”, ''TextMate Blog'', 15 February 2006.</ref> Throughout 2007, the core application changed only minimally, though its “language bundles” continued to advance.


In June 2009, TextMate 2 was announced as being about 90 percent complete, but with an undisclosed final-feature list.<ref>TextMate Blog: , 14 June 2009</ref> A public alpha was made available for download on the TextMate blog in December 2011, followed by a release candidate at the end of 2016. In September 2019, a final version was released.<ref>TextMate Github: , Sep 16, 2019</ref> In June 2009, TextMate 2 was announced as being about 90 percent complete, but with an undisclosed final-feature list.<ref>TextMate Blog: {{Webarchive|url=https://web.archive.org/web/20100307234318/http://blog.macromates.com/2009/working-on-it/ |date=2010-03-07 }}, 14 June 2009</ref> A public alpha was made available for download on the TextMate blog in December 2011, followed by a release candidate at the end of 2016. In September 2019, a final version was released.<ref>TextMate Github: {{Webarchive|url=https://web.archive.org/web/20190915233502/https://github.com/textmate/textmate/commit/54b232f6b1fa4257d512987248265acfd567cc13 |date=2019-09-15 }}, Sep 16, 2019</ref>


In August 2012, TextMate 2's ] was published on ] under the terms of ],<ref>GitHub, , Aug 9, 2012</ref> an attempt by the developer to counteract restrictions Apple placed on software distributed through the ].<ref>{{cite web|url=https://arstechnica.com/apple/2012/08/textmate-2-0-goes-open-source-in-response-to-os-x-restrictions/|title=TextMate 2.0 goes open source in response to OS X restrictions|quote=TextMate developer MacroMates announced on Thursday that the code for TextMate 2.0, currently in alpha, is now available via the online GitHub repository. The code is being open sourced in order to counteract what some developers see as Apple's increasingly limiting user and developer freedom on the Mac platform.}}</ref> Odgaard stated he prefers receiving patches as public domain as this preserves his ability to release a future version under a more permissive license, or to make a version available on the Mac App Store. Odgaard also stated he has a friend who uses some of TextMate's frameworks in a closed-source project, and they could not incorporate patches released under GPL.<ref name="Odgaard2009">Odgaard, (2009). .</ref><ref>{{cite web|url=https://arstechnica.com/apple/2012/08/odgaard-i-will-continue-working-on-textmate-as-long-as-i-am-a-mac-user/|title=Odgaard: "I will continue working on TextMate as long as I am a Mac user"|quote=Many open source proponents and would-be code contributors were vociferous in their opposition to Odgaard's choice of version 3 of the GNU General Public License, while asking upstream code patches to carry a public domain license. The problem, unfortunately, is the tug-of-war between FOSS principles and the desires of commercial ventures.}}</ref> In August 2012, TextMate 2's ] was published on ] under the terms of ],<ref>GitHub, {{Webarchive|url=https://web.archive.org/web/20180131194549/https://github.com/textmate/textmate |date=2018-01-31 }}, Aug 9, 2012</ref> an attempt by the developer to counteract restrictions Apple placed on software distributed through the ].<ref>{{cite web|url=https://arstechnica.com/apple/2012/08/textmate-2-0-goes-open-source-in-response-to-os-x-restrictions/|title=TextMate 2.0 goes open source in response to OS X restrictions|date=9 August 2012|quote=TextMate developer MacroMates announced on Thursday that the code for TextMate 2.0, currently in alpha, is now available via the online GitHub repository. The code is being open sourced in order to counteract what some developers see as Apple's increasingly limiting user and developer freedom on the Mac platform.|access-date=15 June 2017|archive-date=30 December 2016|archive-url=https://web.archive.org/web/20161230061945/http://arstechnica.com/apple/2012/08/textmate-2-0-goes-open-source-in-response-to-os-x-restrictions/|url-status=live}}</ref> Odgaard stated he prefers receiving patches as public domain as this preserves his ability to release a future version under a more permissive license, or to make a version available on the Mac App Store. Odgaard also stated he has a friend who uses some of TextMate's frameworks in a closed-source project, and they could not incorporate patches released under GPL.<ref name="Odgaard2009">Odgaard, (2009). {{Webarchive|url=https://web.archive.org/web/20220602194532/https://github.com/textmate/textmate/blob/master/CONTRIBUTING.md |date=2022-06-02 }}.</ref><ref>{{cite web|url=https://arstechnica.com/apple/2012/08/odgaard-i-will-continue-working-on-textmate-as-long-as-i-am-a-mac-user/|title=Odgaard: "I will continue working on TextMate as long as I am a Mac user"|date=10 August 2012|quote=Many open source proponents and would-be code contributors were vociferous in their opposition to Odgaard's choice of version 3 of the GNU General Public License, while asking upstream code patches to carry a public domain license. The problem, unfortunately, is the tug-of-war between FOSS principles and the desires of commercial ventures.|access-date=15 June 2017|archive-date=7 June 2017|archive-url=https://web.archive.org/web/20170607135407/https://arstechnica.com/apple/2012/08/odgaard-i-will-continue-working-on-textmate-as-long-as-i-am-a-mac-user/|url-status=live}}</ref>

In October 2021, the latest/last commit was made to GitHub, though no announcement has been made to the effect that the project has been officially abandoned and its source code is still publicly available.<ref>{{Cite web |title=Github commits textmate/textmate |url=https://github.com/textmate/textmate |access-date=2023-07-29 |website=GitHub |language=en}}</ref>


==Features== ==Features==


=== Language Grammars === === Language grammars ===
TextMate language grammars allows users to create their own arbitrarily complex ] modes by assigning each document keyword a unique name.<ref name=":0">{{Cite web|title=Language Grammars — TextMate 1.x Manual|url=https://macromates.com/manual/en/language_grammars|access-date=2021-10-30|website=macromates.com}}</ref> It uses a modified version of the Apple ASCII ] format to define language grammars.{{Citation needed|date=October 2021}} These grammars allow nesting rules to be defined using the ] ] library, and then assigned specific “scopes”: compound labels which identify them for coloration. TextMate language grammars allows users to create their own arbitrarily complex ] modes by assigning each document keyword a unique name.<ref name=":0">{{Cite web|title=Language Grammars — TextMate 1.x Manual|url=https://macromates.com/manual/en/language_grammars|access-date=2021-10-30|website=macromates.com|archive-date=2021-10-30|archive-url=https://web.archive.org/web/20211030093101/https://macromates.com/manual/en/language_grammars|url-status=live}}</ref> It uses a modified version of the Apple ASCII ] format to define language grammars.{{Citation needed|date=October 2021}} These grammars allow nesting rules to be defined using the ] ] library, and then assigned specific “scopes”: compound labels which identify them for coloration.


Each point of a document is assigned one or more scopes, which define where in the document the point is, how it should be colored, and what the behavior of TextMate should be at that point. For instance, the title of one of the links in the “External links” section has the scope: Each point of a document is assigned one or more scopes, which define where in the document the point is, how it should be colored, and what the behavior of TextMate should be at that point. For instance, the title of one of the links in the “External links” section has the scope:
Line 46: Line 47:
TextMate themes can mark up any scope, at varying levels of precision. For instance, one theme may decide to color every constant (<code>constant.*</code>) identically, while another may decide that numerical constants (<code>constant.numeric.*</code>) should be colored differently than escaped characters (<code>constant.character.escape.*</code>). The hierarchal scope syntax allows language authors and theme authors various levels of coverage, so that each one can choose to opt for simplicity or comprehensiveness, as desired. TextMate themes can mark up any scope, at varying levels of precision. For instance, one theme may decide to color every constant (<code>constant.*</code>) identically, while another may decide that numerical constants (<code>constant.numeric.*</code>) should be colored differently than escaped characters (<code>constant.character.escape.*</code>). The hierarchal scope syntax allows language authors and theme authors various levels of coverage, so that each one can choose to opt for simplicity or comprehensiveness, as desired.


TexMate documentation provides a list of naming commonly used across different programming languages for interoperability between bundles.<ref name=":0" /> TextMate documentation provides a list of naming commonly used across different programming languages for interoperability between bundles.<ref name=":0" />


===Commands=== ===Commands===
Line 61: Line 62:
Snippets, macros, and commands can be limited to a particular scope, so that for instance the “close html tag” command does not work in a python script, freeing up that keyboard shortcut to be used for something else. This allows individual languages, and even individual scopes, to override built-in commands such as “Reformat Paragraph” with more specialized versions. Even special keys such as the return key and spacebar can be overridden. Snippets, macros, and commands can be limited to a particular scope, so that for instance the “close html tag” command does not work in a python script, freeing up that keyboard shortcut to be used for something else. This allows individual languages, and even individual scopes, to override built-in commands such as “Reformat Paragraph” with more specialized versions. Even special keys such as the return key and spacebar can be overridden.


A Subversion repository is available containing many more bundles than are shipped with the editor package, for everything from ] to ]ging to ] assembly language.<ref>For information on getting more bundles, see the .</ref> A Subversion repository is available containing many more bundles than are shipped with the editor package, for everything from ] to ]ging to ] assembly language.<ref>For information on getting more bundles, see the {{Webarchive|url=https://web.archive.org/web/20081010231331/http://macromates.com/textmate/manual/bundles#getting_more_bundles |date=2008-10-10 }}.</ref>


===Project management=== ===Project management===
Line 70: Line 71:


* ] can be used to hide areas of a document not currently being edited, for a more compact view of code structure or to avoid distraction. The sections to be folded can be selected by hand, or the structure of the document itself can be used to determine foldings. * ] can be used to hide areas of a document not currently being edited, for a more compact view of code structure or to avoid distraction. The sections to be folded can be selected by hand, or the structure of the document itself can be used to determine foldings.
* Regular-expression–based search and replace speeds complicated text manipulations. TextMate uses the ] regular expression library developed by K. Kosako.<ref>{{cite web |access-date=2009-04-28 |url=http://manual.macromates.com/en/regular_expressions |title=20 Regular Expressions |publisher=TextMate }}</ref> * Regular-expression–based search and replace speeds complicated text manipulations. TextMate uses the ] regular expression library developed by K. Kosako.<ref>{{cite web |access-date=2009-04-28 |url=http://manual.macromates.com/en/regular_expressions |title=20 Regular Expressions |publisher=TextMate |archive-date=2018-01-21 |archive-url=https://web.archive.org/web/20180121235220/http://manual.macromates.com/en/regular_expressions |url-status=live }}</ref>
* A function pop-up provides a list of sections or functions in the current document. * A function pop-up provides a list of sections or functions in the current document.
* ] history allows users to cut many sections of text at once, and then paste them. * ] history allows users to cut many sections of text at once, and then paste them.
* Column editing mode allows adding the same text to several rows of text, and is very useful for manipulating tabular data. * Column editing mode allows adding the same text to several rows of text, and is very useful for manipulating tabular data.
* "rmate" support for launching textmate as editor for files from remote servers - much improved over work-arounds needed in version 1 <ref>. ''TextMate Wiki - FAQ: Projects''</ref> * "rmate" support for launching textmate as editor for files from remote servers - much improved over work-arounds needed in version 1 <ref> {{Webarchive|url=https://web.archive.org/web/20170719235008/http://wiki.macromates.com/Main/FAQ#projects |date=2017-07-19 }}. ''TextMate Wiki - FAQ: Projects''</ref>


In addition, TextMate supports features to integrate well with the OS X graphical environment: In addition, TextMate supports features to integrate well with the OS X graphical environment:
Line 81: Line 82:
* Editing is further enhanced by multiple cursors (insertion points), and the ability to extend the current selection to additional instances creating multiple cursors. * Editing is further enhanced by multiple cursors (insertion points), and the ability to extend the current selection to additional instances creating multiple cursors.
* A WebKit-based HTML view window shows live updates as an HTML document is edited. * A WebKit-based HTML view window shows live updates as an HTML document is edited.
* VoiceOver and Zoom users can use TextMate thanks to its accessibility support.<ref>. ''GitHub pull request''</ref> * VoiceOver and Zoom users can use TextMate thanks to its accessibility support.<ref> {{Webarchive|url=https://web.archive.org/web/20200314173811/https://github.com/textmate/textmate/pull/621 |date=2020-03-14 }}. ''GitHub pull request''</ref>


===Limitations=== ===Limitations===
Line 87: Line 88:
TextMate does have a few limitations when compared to other editors in its class: TextMate does have a few limitations when compared to other editors in its class:


* Because TextMate is not tightly coupled to a scripting language, as ] is to ], it is impossible for users to have complete control over the program's configuration and behavior. Allan Odgaard explained his thoughts on the subject in an email to the TextMate mailing list, advocating for "platform-recommended" solutions.<ref>Allan Odgaard. “”. ''TextMate mailing list''. 14 February 2007.</ref> * Because TextMate is not tightly coupled to a scripting language, as ] is to ], it is impossible for users to have complete control over the program's configuration and behavior. Allan Odgaard explained his thoughts on the subject in an email to the TextMate mailing list, advocating for "platform-recommended" solutions.<ref>Allan Odgaard. “ {{Webarchive|url=https://web.archive.org/web/20160304001859/http://lists.macromates.com/textmate/2007-February/017457.html |date=2016-03-04 }}”. ''TextMate mailing list''. 14 February 2007.</ref>
* No built-in HTML validator — because TextMate uses the ] for HTML validation, users must have an active network connection to validate HTML using the standard functionality. * No built-in HTML validator — because TextMate uses the ] for HTML validation, users must have an active network connection to validate HTML using the standard functionality.
* Lack of code-completion feature: despite its substantial support for macros, commands, and snippets, TextMate has no built-in support for code-hinting or guided code-completion, so text editors that support these features may prove to be a better choice when learning the syntax of a new language or coding in verbose languages. Remark: you can get code/word suggestions by typing one or more letters and (repeatedly) pressing ESC. The suggestions are words that occur in the current document. * Lack of code-completion feature: despite its substantial support for macros, commands, and snippets, TextMate has no built-in support for code-hinting or guided code-completion, so text editors that support these features may prove to be a better choice when learning the syntax of a new language or coding in verbose languages. Remark: you can get code/word suggestions by typing one or more letters and (repeatedly) pressing ESC. The suggestions are words that occur in the current document.
Line 96: Line 97:


==See also== ==See also==
{{Portal|Free and open-source software}}
*] *]


Line 108: Line 110:
| publisher = Pragmatic Bookshelf | publisher = Pragmatic Bookshelf
| date = January 2007 | date = January 2007
| isbn = 0-9787392-3-X | isbn = 978-0-9787392-3-2
| url = https://archive.org/details/textmatepoweredi0000gray | url = https://archive.org/details/textmatepoweredi0000gray
| url-access = registration | url-access = registration
Line 114: Line 116:


==External links== ==External links==
* {{Official website|http://www.macromates.com/}} * {{Official website|https://www.macromates.com/}}


] ]
] ]
] ]
] ]
]

Latest revision as of 07:02, 8 January 2025

GUI text editor for macOS
TextMate
Textmate screenshot
Developer(s)Allan Odgaard (MacroMates), Ciarán Walsh
Initial release5 October 2004; 20 years ago (2004-10-05)
Final release2.0.23 Edit this on Wikidata / 12 October 2021
Repository
Operating systemmacOS
TypeSource code editor
License
Websitemacromates.com

TextMate is a free and open-source general-purpose GUI text editor for macOS created by Allan Odgaard. TextMate features declarative customizations, tabs for open documents, recordable macros, folding sections, snippets, shell integration, and an extensible bundle system.

History

TextMate 1.0 was released on 5 October 2004, after 5 months of development, followed by version 1.0.1 on 21 October 2004. The release focused on implementing a small feature set well, and did not have a preference window or a toolbar, didn't integrate FTP, and had no options for printing. At first only a small number of programming languages were supported, as only a few “language bundles” had been created. Even so, some developers found this early and incomplete version of TextMate a welcome change to a market that was considered stagnated by the decade-long dominance of BBEdit.

TextMate 1.0.2 came out on 10 December 2004. In the series of TextMate 1.1 betas, TextMate gained features: a preferences window with a GUI for creating and editing themes; a status bar with a symbol list; menus for choosing language and tab settings, and a “bundle editor” for editing language-specific customizations. On 6 January 2006, Odgaard released TextMate 1.5, the first “stable release” since 1.0.2. Reviews were positive, in contrast to earlier versions that had been criticised.

TextMate continued to develop through mid-2006. On 8 August 2006, TextMate was awarded the Apple Design Award for Best Developer Tool, at Apple's Worldwide Developers Conference in San Francisco, California. In February 2006, the TextMate blog expressed intentions for future directions, including improved project management, with a plug-in system to support remote file systems such as FTP, and revision control systems such as Subversion. Throughout 2007, the core application changed only minimally, though its “language bundles” continued to advance.

In June 2009, TextMate 2 was announced as being about 90 percent complete, but with an undisclosed final-feature list. A public alpha was made available for download on the TextMate blog in December 2011, followed by a release candidate at the end of 2016. In September 2019, a final version was released.

In August 2012, TextMate 2's source code was published on GitHub under the terms of GPL-3.0-or-later, an attempt by the developer to counteract restrictions Apple placed on software distributed through the Mac App Store. Odgaard stated he prefers receiving patches as public domain as this preserves his ability to release a future version under a more permissive license, or to make a version available on the Mac App Store. Odgaard also stated he has a friend who uses some of TextMate's frameworks in a closed-source project, and they could not incorporate patches released under GPL.

In October 2021, the latest/last commit was made to GitHub, though no announcement has been made to the effect that the project has been officially abandoned and its source code is still publicly available.

Features

Language grammars

TextMate language grammars allows users to create their own arbitrarily complex syntax highlighting modes by assigning each document keyword a unique name. It uses a modified version of the Apple ASCII property list format to define language grammars. These grammars allow nesting rules to be defined using the Oniguruma regular expression library, and then assigned specific “scopes”: compound labels which identify them for coloration.

Each point of a document is assigned one or more scopes, which define where in the document the point is, how it should be colored, and what the behavior of TextMate should be at that point. For instance, the title of one of the links in the “External links” section has the scope:

text.html.mediawiki
    markup.list.mediawiki
        meta.link.inline.external.mediawiki
            string.other.link.title.external.mediawiki

This scope tells us that we are looking at a link title within a link within a list within a MediaWiki document.

TextMate themes can mark up any scope, at varying levels of precision. For instance, one theme may decide to color every constant (constant.*) identically, while another may decide that numerical constants (constant.numeric.*) should be colored differently than escaped characters (constant.character.escape.*). The hierarchal scope syntax allows language authors and theme authors various levels of coverage, so that each one can choose to opt for simplicity or comprehensiveness, as desired.

TextMate documentation provides a list of naming commonly used across different programming languages for interoperability between bundles.

Commands

TextMate supports user-defined and user-editable commands that are interpreted by bash or the interpreter specified with a shebang. Commands can be sent many kinds of input by TextMate (the current document, selected text, the current word, etc.) in addition to environment variables and their output can be similarly be handled by TextMate in a variety of ways. At its most simple, a command might receive the selected text, transform it, and re-insert it into the document replacing the selection. Other commands might simply show a tool tip, create a new document for their output, or display it as a web page using TextMate's built-in HTML renderer.

Many language-specific bundles such as bash, PHP or Ruby contain commands for compiling and/or running the current document or project. In many cases the STDOUT and STDERR of the code's process will be displayed in a window in TextMate.

Snippets

At their simplest, TextMate “snippets” are pieces of text which can be inserted into the document at the current location via a context-sensitive key stroke or tab completion. Snippets are "intelligent", supporting "tab stops" dynamic updating, access to environment variables, and the ability to run inline scripts. This allows complicated behaviors. Tab stops can be cycled through using the “tab” key and support default text, drop-downs, to complete elements of the snippet. The results of these tab stops can be dynamically changed in another portion of the snippet, as the user fills in a stop. TextMate environment variables can be used, supporting information about the current scope, line number, or author name, etc. Snippets also have the ability to run inline shell scripts.

Bundles

TextMate language grammars, snippets, macros, commands, and templates can be grouped into “bundles” of functionality. Any snippet, macro, or command can be executed by pressing a keyboard shortcut, by typing a particular word and then pressing the “tab” key (so-called “tab triggers”), or by selecting the command from a menu. Tab triggers are particularly useful; the combination of tab triggers and snippets greatly eases coding in verbose languages, or languages with commonly typed patterns.

Snippets, macros, and commands can be limited to a particular scope, so that for instance the “close html tag” command does not work in a python script, freeing up that keyboard shortcut to be used for something else. This allows individual languages, and even individual scopes, to override built-in commands such as “Reformat Paragraph” with more specialized versions. Even special keys such as the return key and spacebar can be overridden.

A Subversion repository is available containing many more bundles than are shipped with the editor package, for everything from Markdown to blogging to MIPS assembly language.

Project management

Several documents or folders can be opened at once in a TextMate project window, which provides a drawer along its side listing file and folder names, and a series of tabs across the top. In TextMate 1.5, this drawer provides a means for users to organize files and folders from across the file system, as well as the ability to create virtual folders for further organization. This feature was removed from TextMate 2 and replaced with an ordinary file browser. Search and replace can be undertaken across an entire project, and commands can interact with the selected files or folders in the drawer. Bundles for CVS, Subversion, darcs, and other revision control systems allow TextMate to manage versioned code.

Other features

TextMate has many features common to programming editors:

  • Folding code sections can be used to hide areas of a document not currently being edited, for a more compact view of code structure or to avoid distraction. The sections to be folded can be selected by hand, or the structure of the document itself can be used to determine foldings.
  • Regular-expression–based search and replace speeds complicated text manipulations. TextMate uses the Oniguruma regular expression library developed by K. Kosako.
  • A function pop-up provides a list of sections or functions in the current document.
  • Clipboard history allows users to cut many sections of text at once, and then paste them.
  • Column editing mode allows adding the same text to several rows of text, and is very useful for manipulating tabular data.
  • "rmate" support for launching textmate as editor for files from remote servers - much improved over work-arounds needed in version 1

In addition, TextMate supports features to integrate well with the OS X graphical environment:

  • Clipboard graphical history supports pasting from previous copies, including prior launches.
  • Find and replace support an analogous graphical history.
  • Editing is further enhanced by multiple cursors (insertion points), and the ability to extend the current selection to additional instances creating multiple cursors.
  • A WebKit-based HTML view window shows live updates as an HTML document is edited.
  • VoiceOver and Zoom users can use TextMate thanks to its accessibility support.

Limitations

This section needs to be updated. Please help update this article to reflect recent events or newly available information. (October 2021)

TextMate does have a few limitations when compared to other editors in its class:

  • Because TextMate is not tightly coupled to a scripting language, as Emacs is to Emacs Lisp, it is impossible for users to have complete control over the program's configuration and behavior. Allan Odgaard explained his thoughts on the subject in an email to the TextMate mailing list, advocating for "platform-recommended" solutions.
  • No built-in HTML validator — because TextMate uses the W3C validator for HTML validation, users must have an active network connection to validate HTML using the standard functionality.
  • Lack of code-completion feature: despite its substantial support for macros, commands, and snippets, TextMate has no built-in support for code-hinting or guided code-completion, so text editors that support these features may prove to be a better choice when learning the syntax of a new language or coding in verbose languages. Remark: you can get code/word suggestions by typing one or more letters and (repeatedly) pressing ESC. The suggestions are words that occur in the current document.
  • TextMate is not binary safe. It is explicitly text only, and does not guarantee that arbitrary binary data in a file will be preserved through a load/save cycle, regardless of whether that data is edited.

Awards

TextMate 1.5 won the Apple Design Award for best developer tool in 2006.

See also

References

  1. https://github.com/textmate/textmate/releases/tag/v2.0.23. {{cite web}}: Missing or empty |title= (help)
  2. David Hansson. “TextMate 1.0 is finally here! Archived 2008-12-05 at the Wayback Machine”, TextMate Blog, 5 October 2004.
  3. Allan Odgaard. “Profiles/Allan Odgaard Archived 2007-07-03 at the Wayback Machine” on the TextMate wiki, 20 November 2005.
  4. David Hansson. “TextMate 1.0.1 emerges after nine betas Archived 2020-09-12 at the Wayback Machine”, TextMate Blog, 21 October 2005.
  5. Matt Willmore. “TextMate 1.0.1 Review: A Checkmate for TextMate? Archived 2006-08-20 at the Wayback Machine”, Maczealots.com, 8 October 2004.
  6. Michael “drunkenbatman” Bell. “TextMate: The Missing Editor for OS X Archived 2006-05-14 at the Wayback Machine”, Drunkenblog, 4 November 2004.
  7. Kimbro Staken. “A cool new text editor - TextMate - Mac OS X Archived 2004-12-04 at archive.today”, Inspirational Technology, 6 October 2004.
  8. Allan Odgaard. “TextMate 1.5 Archived 2006-03-25 at the Wayback Machine”, TextMate Blog, 6 January 2006.
  9. Rui Carmo. “Third Time’s The Charm Archived 2006-11-30 at the Wayback Machine”, Tao of Mac, 8 January 2006.
  10. Smykil, Jeff (9 August 2006). "Apple Design Award winners announced". Ars Technica. Retrieved 11 January 2024.
  11. Allan Odgaard. “Future Directions Archived 2008-12-05 at the Wayback Machine”, TextMate Blog, 15 February 2006.
  12. TextMate Blog: Working on It Archived 2010-03-07 at the Wayback Machine, 14 June 2009
  13. TextMate Github: Archived 2019-09-15 at the Wayback Machine, Sep 16, 2019
  14. GitHub, Archived 2018-01-31 at the Wayback Machine, Aug 9, 2012
  15. "TextMate 2.0 goes open source in response to OS X restrictions". 9 August 2012. Archived from the original on 30 December 2016. Retrieved 15 June 2017. TextMate developer MacroMates announced on Thursday that the code for TextMate 2.0, currently in alpha, is now available via the online GitHub repository. The code is being open sourced in order to counteract what some developers see as Apple's increasingly limiting user and developer freedom on the Mac platform.
  16. Odgaard, (2009). CONTRIBUTING.md Archived 2022-06-02 at the Wayback Machine.
  17. "Odgaard: "I will continue working on TextMate as long as I am a Mac user"". 10 August 2012. Archived from the original on 7 June 2017. Retrieved 15 June 2017. Many open source proponents and would-be code contributors were vociferous in their opposition to Odgaard's choice of version 3 of the GNU General Public License, while asking upstream code patches to carry a public domain license. The problem, unfortunately, is the tug-of-war between FOSS principles and the desires of commercial ventures.
  18. "Github commits textmate/textmate". GitHub. Retrieved 2023-07-29.
  19. ^ "Language Grammars — TextMate 1.x Manual". macromates.com. Archived from the original on 2021-10-30. Retrieved 2021-10-30.
  20. For information on getting more bundles, see the relevant section in the TextMate manual Archived 2008-10-10 at the Wayback Machine.
  21. "20 Regular Expressions". TextMate. Archived from the original on 2018-01-21. Retrieved 2009-04-28.
  22. How to edit files from my FTP Server as a TextMate project Archived 2017-07-19 at the Wayback Machine. TextMate Wiki - FAQ: Projects
  23. Support accessibility in text view - VoiceOver and Zoom Archived 2020-03-14 at the Wayback Machine. GitHub pull request
  24. Allan Odgaard. “Re: Changing cursor position from command Archived 2016-03-04 at the Wayback Machine”. TextMate mailing list. 14 February 2007.

Further reading

External links

Categories: