TextMate

Last updated
TextMate
Developer(s) Allan Odgaard (MacroMates), Ciarán Walsh
Initial release5 October 2004;19 years ago (2004-10-05)
Final release
2.0.23 [1]   OOjs UI icon edit-ltr-progressive.svg / 12 October 2021
Repository
Operating system macOS
Type Source code editor
License
Website macromates.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.

Contents

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. [2] [3] [4] 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. [5] [6] 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. [7]

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. [8] Reviews were positive, in contrast to earlier versions that had been criticised. [9]

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. [10] 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. [11] 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. [12] 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. [13]

In August 2012, TextMate 2's source code was published on GitHub under the terms of GPL-3.0-or-later, [14] an attempt by the developer to counteract restrictions Apple placed on software distributed through the Mac App Store. [15] 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. [16] [17]

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. [18]

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. [19] It uses a modified version of the Apple ASCII property list format to define language grammars.[ citation needed ] 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. [19]

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. [20]

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:

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

Limitations

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

Awards

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

See also

Related Research Articles

<span class="mw-page-title-main">Text editor</span> Computer software used to edit plain text documents

A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software. Text editors are provided with operating systems and software development packages, and can be used to change files such as configuration files, documentation files and programming language source code.

<span class="mw-page-title-main">Vim (text editor)</span> Improved version of the Vi keyboard-oriented text editor

Vim is a free and open-source, screen-based text editor program. It is an improved clone of Bill Joy's vi. Vim's author, Bram Moolenaar, derived Vim from a port of the Stevie editor for Amiga and released a version to the public in 1991. Vim is designed for use both from a command-line interface and as a standalone application in a graphical user interface. Since its release for the Amiga, cross-platform development has made it available on many other systems. In 2018, it was voted the most popular editor amongst Linux Journal readers; in 2015 the Stack Overflow developer survey found it to be the third most popular text editor, and in 2019 the fifth most popular development environment.

<span class="mw-page-title-main">GNU TeXmacs</span> Open-source word processor

GNU TeXmacs is a scientific word processor and typesetting component of the GNU Project. It originated as a variant of GNU Emacs with TeX functionalities, though it shares no code with those programs, while using TeX fonts. It is written and maintained by Joris van der Hoeven and a group of developers. The program produces structured documents with a WYSIWYG user interface. New document styles can be created by the user. The editor provides high-quality typesetting algorithms and TeX and other fonts for publishing professional looking documents.

gedit Linux text editor

gedit is a text editor designed for the GNOME desktop environment. It was GNOME's default text editor and part of the GNOME Core Applications until GNOME version 42 in March 2022, which changed the default text editor to GNOME Text Editor. Designed as a general-purpose text editor, gedit emphasizes simplicity and ease of use, with a clean and simple GUI, according to the philosophy of the GNOME project. It includes tools for editing source code and structured text such as markup languages.

TextPad is a text editor for Microsoft Windows developed by Helios Software Solutions. It is currently in its eighth major version. TextPad was initially released in 1992 as shareware, with users requested to pay a registration fee to support future development. As of 1996 the company was an associate member of the Association of Shareware Professionals. By 1998 the company was pointing out that the editor was "shareware " and payment was necessary to continue to use it.

HomeSite was an HTML editor originally developed by Nick Bradbury. Unlike WYSIWYG HTML editors such as FrontPage and Dreamweaver, HomeSite was designed for direct editing, or "hand coding", of HTML and other website languages.

<span class="mw-page-title-main">NEdit</span>

NEdit, the Nirvana editor, is a text editor and source code editor for the X Window System. It has an interface similar to text editors on Microsoft Windows and Macintosh, rather than to older UNIX editors like Emacs. It was initially developed by Mark Edel for Fermilab and released under a very restrictive licence, but today it is distributed under the less restrictive GPL-2.0-or-later and is developed as an independent open-source project by a team of developers. Nedit was also distributed with the IRIX operating system.

<span class="mw-page-title-main">UltraEdit</span>

UltraEdit is a text editor for Microsoft Windows, Linux, and MacOS. It was initially developed in 1994 by Ian D. Mead, the founder of IDM Computer Solutions Inc., and was acquired by Idera Inc. in the August of 2021. Originally called MEDIT, it was first designed to run on Windows 3.1. A version called UltraEdit-32 was later created to run on Windows NT and Windows 95. The last 16-bit UltraEdit program version was 6.20b. UltraEdit-32 was later renamed to UltraEdit in version 14.00. Version 22.2 was the first native 64-bit version of the text editor. Starting with 2022.0, versioning had become year-based.

<span class="mw-page-title-main">BBEdit</span> Proprietary text editor

BBEdit is a proprietary text editor made by Bare Bones Software, originally developed for Macintosh System Software 6, and currently supporting macOS.

<span class="mw-page-title-main">Notepad++</span> Text editor and source code editor for Windows

Notepad++ is a free and open-source text and source code editor for use with Microsoft Windows. It supports tabbed editing, which allows working with multiple open files in a single window. The product's name comes from the C postfix increment operator; it is sometimes referred to as npp or NPP.

This article provides basic comparisons for notable text editors. More feature details for text editors are available from the Category of text editor features and from the individual products' articles. This article may not be up-to-date or necessarily all-inclusive.

<span class="mw-page-title-main">Snippet (programming)</span> Small region of re-usable source code, machine code, or text

Snippet is a programming term for a small region of re-usable source code, machine code, or text. Ordinarily, these are formally defined operative units to incorporate into larger programming modules. Snippet management is a feature of some text editors, program source code editors, IDEs, and related software. It allows the user to avoid repetitive typing in the course of routine edit operations.

<span class="mw-page-title-main">Smultron</span>

Smultron is a text editor for macOS that is designed for both beginners and advanced users, named after the Swedish word for the woodland strawberry.

Emacs, originally named EMACS, is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, self-documenting, real-time display editor". Development of the first Emacs began in the mid-1970s, and work on GNU Emacs, directly descended from the original, is ongoing; its latest version is 29.2, released January 2024.

<span class="mw-page-title-main">Sublime Text</span> Text editor

Sublime Text is a shareware text and source code editor available for Windows, macOS, and Linux. It natively supports many programming languages and markup languages. Users can customize it with themes and expand its functionality with plugins, typically community-built and maintained under free-software licenses. To facilitate plugins, Sublime Text features a Python API. The editor utilizes minimal interface and contains features for programmers including configurable syntax highlighting, code folding, search-and-replace supporting regular-expressions, terminal output window, and more. It is proprietary software, but a free evaluation version is available.

<span class="mw-page-title-main">Brackets (text editor)</span> Editor for web development

Brackets is a source code editor with a primary focus on web development. Created by Adobe Inc., it is free and open-source software licensed under the MIT License, and is currently maintained on GitHub by open-source developers. It is written in JavaScript, HTML and CSS. Brackets is cross-platform, available for macOS, Windows, and most Linux distributions. The main purpose of Brackets is its live HTML, CSS and JavaScript editing functionality.

Multi-Edit is a commercial text editor for Microsoft Windows created in the 1980s by Todd Johnson. Multi Edit Software obtained ownership rights for the product in October 2002. Multi-Edit contains tools for programmers, including macros, configurable syntax highlighting, code folding, file type conversions, project management, regular expressions, three block highlight modes including column, stream and line modes, remote editing of files via FTP and interfaces for APIs or command lines of choice. The editor uses a tabbed document interface and sessions can be saved.

<span class="mw-page-title-main">Pluma (text editor)</span>

Pluma is a fork of gedit 2 and the default text editor of the MATE desktop environment used in Linux distributions. It extends the basic functionality with other features and plugins.

<span class="mw-page-title-main">TEA (text editor)</span> Graphical text editor

TEA is a graphical text editor for power users. It is designed for low resource consumption, a wide range of functions and adaptability, and is available for all desktop operating systems supported by Qt 6, 5 or 4.6+, thus also OS/2 and Haiku OS. Its user interface is localized in several languages.

References

  1. Error: Unable to display the reference properly. See the documentation for details.
  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. 1 2 "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