TextMate
TextMate is a free and open-source graphical text editor designed primarily for macOS, created by Danish developer Allan Odgaard and first released in 2004.[1][2] It emphasizes extensibility through a declarative bundle system that supports syntax highlighting, code folding, snippets, and macros for a wide range of programming languages and file formats.[3] Known for its innovative approach to customization, TextMate won the Apple Design Award for Best Mac OS X Developer Tool in 2006, recognizing its impact on developer workflows.[4] Initially developed as a proprietary application by MacroMates, TextMate gained popularity among programmers for features like multiple cursors, integrated version control, and shell command execution, making it a lightweight alternative to heavier integrated development environments (IDEs).[3][5] Version 1.5, released in 2006, solidified its reputation, but development of the major update to version 2.0 faced delays, with an alpha appearing in 2011.[1] In August 2012, Odgaard open-sourced the TextMate 2.0 codebase under the GNU General Public License version 3 (GPLv3), responding to community demand and Apple's evolving platform restrictions, with the project hosted on GitHub.[1][2] The latest stable release, TextMate 2.0.23 from October 2021, requires macOS 10.12 or later and continues to receive community contributions, though primary maintenance remains with Odgaard.[6] Its bundle architecture allows users to install language-specific packages for enhanced functionality, such as live previews for Markdown or integration with tools like Git, positioning it as a versatile tool for coding, writing, and configuration editing.[3][5] Despite competition from modern editors like Visual Studio Code, TextMate's native macOS integration and focus on simplicity keep it relevant for users seeking a customizable, performant editor.[3]Introduction
Overview
TextMate is a free and open-source graphical user interface (GUI) text editor designed primarily for macOS, created by developer Allan Odgaard.[1] It functions as a general-purpose tool for editing plain text and code, with a particular emphasis on supporting programming languages through efficient workflows and user extensibility.[3] At its core, TextMate enables customization via declarative syntax definitions, including language grammars that power syntax highlighting by assigning scopes to elements like keywords and comments.[7] It also incorporates features such as multi-tabbed document handling, recordable macros for automating repetitive actions, and snippets—reusable text templates with variables and tab stops—to accelerate coding and writing tasks.[8][9] Distinguishing itself in the macOS ecosystem, TextMate integrates native frameworks like WebKit for previews and UNIX tools for external commands, while offering powerful regular expression-based search and replace capabilities across files and projects.[3][9] Its bundle system further enhances functionality by allowing users to install or create modular extensions for specific languages, markup formats, and workflows, promoting a highly adaptable editing environment.[10] Over time, TextMate has evolved from a proprietary application to an open-source project, enabling broader community involvement in its development and maintenance.[1]Platforms and Requirements
TextMate is exclusively available for macOS, serving as a native application optimized for Apple's ecosystem.[3] The editor requires macOS 10.12 (Sierra) or later to ensure compatibility with its core functionalities and dependencies.[11] It supports both x86_64 (Intel) and arm64 (Apple Silicon) architectures, allowing native operation on modern Macs.[11] There is no native support for other platforms such as iOS, Windows, or Linux, though community efforts have explored unofficial ports in the past.[2] Hardware requirements are modest, consistent with the minimums for macOS 10.12. TextMate runs efficiently on standard Mac configurations, prioritizing low resource consumption over heavy graphical features. Installation options cater to both novice and advanced users. The primary method involves direct download of the pre-built binary from the official website at macromates.com, where users select the appropriate version for their macOS release.[11] For those preferring package management, TextMate can be installed via Homebrew using the commandbrew install --cask textmate, which handles dependencies and updates automatically.[12] Developers interested in customization or contributing can build from source using the official GitHub repository: clone the repository with git clone --recursive https://github.com/textmate/textmate.git, install dependencies like Boost and Ninja via Homebrew or MacPorts, then run ./configure && ninja TextMate/run to compile and launch.[2]
Out of the box, TextMate handles plain text files (.txt and similar) with basic editing capabilities, including support for various encodings like UTF-8 and line ending formats.[13] Advanced file format support, such as syntax for programming languages like C++ (.cpp) or D (.d), is enabled through installable bundles rather than core binaries.[14]
As of November 2025, the latest stable version is 2.0.23, released in October 2021. It is compatible with macOS 10.12 or later, including macOS Sequoia (version 15).[11][6]
History
Early Development
Allan Odgaard, a Danish developer based in Copenhagen, initiated the development of TextMate in 2004, driven by frustrations with the limitations of existing macOS text editors, particularly BBEdit, which he viewed as outdated for modern coding needs.[15][16][17] Seeking to create a more intuitive tool for code and markup editing on OS X, Odgaard aimed to address the scarcity of robust options that supported languages like C++, Ruby, PHP, HTML, CSS, and JavaScript.[16][17] TextMate drew inspiration from the extensibility of command-line editors such as Vim and Emacs, incorporating flexible syntax definitions and customization capabilities, while prioritizing a native macOS graphical user interface to enhance accessibility and integration with the platform's design principles.[17] This approach allowed for user-driven enhancements without sacrificing ease of use, setting TextMate apart from its predecessors.[17] The initial public release, TextMate 1.0, occurred on October 6, 2004, following approximately five months of full-time development, and was distributed as shareware with a 30-day unrestricted trial and a suggested registration fee of $39 to support ongoing work.[16][17] A key early innovation was the introduction of the bundle concept, which enabled the packaging of language-specific syntax highlighting, snippets, and commands, fostering immediate community contributions and extensibility from launch.[17]TextMate 1.x Era
TextMate's 1.x series saw its first stable release with version 1.5 on January 6, 2006, marking a significant maturation from the initial 1.0 launch in 2004 and the extensive 1.1 betas conducted throughout 2005.[18] This version incorporated hundreds of improvements over prior non-beta releases, including refined language support and enhanced stability, while subsequent updates extended the lineage to 1.5.11, released on June 26, 2012.[19] The era was characterized by iterative refinements that solidified TextMate's reputation as a lightweight yet powerful editor tailored for macOS developers. A key driver of adoption during this period was TextMate's alignment with emerging web development trends, particularly its popularity within the Ruby on Rails community. By 2007, surveys indicated TextMate as the leading editor among Ruby and Rails practitioners, outpacing alternatives like Vim and Emacs due to its intuitive interface and Mac-native design.[20] Enhancements focused on core editing tools: the snippet system received major upgrades in the 1.1 betas of September 2005, introducing advanced tab-stop mechanisms for dynamic text insertion and placeholders.[21] Version 1.5.6, released in July 2007, improved the project drawer for better file navigation and filtering, alongside compatibility tweaks for input managers like Edit in TextMate.[22] Macro recording, enabling users to capture and replay sequences of keystrokes and commands, had been available since early 1.x builds, facilitating automation of repetitive tasks.[23] As a shareware application, TextMate offered free upgrades for all 1.x minor versions, encouraging broad adoption without additional costs for existing users.[24] This model supported steady growth, with the editor amassing a dedicated following by the late 2000s. Community engagement flourished through the official mailing list forum, where users shared and refined bundles—modular extensions for syntax highlighting, snippets, and commands—often hosted on early version control platforms preceding widespread GitHub use. These contributions, starting prominently with bundled language support in 2005 betas, fostered a vibrant ecosystem that extended TextMate's versatility across programming languages.[25]TextMate 2.0 and Open Source Transition
Development of TextMate 2.0 began in 2006 as a complete ground-up rewrite of the original application, aimed at addressing limitations in the 1.x architecture while introducing modern features for macOS developers. The project faced significant delays, with the first public alpha build released on December 13, 2011, marking the end of over five years of closed development led by creator Allan Odgaard. This alpha emphasized stability for licensed users on Intel-based Macs, though it lacked some planned functionalities like advanced search improvements and full bundle support.[26] The transition to beta occurred in 2012, with release candidates such as rc.1 appearing in October of that year, following the open-sourcing of the codebase. Key enhancements in 2.0 included a rewrite in Objective-C++ to leverage native macOS frameworks more effectively, resulting in improved startup times and overall responsiveness compared to the 1.x versions built with older tools. A built-in bundle manager was introduced in preferences, simplifying the installation, updating, and management of language bundles directly within the application, reducing reliance on external tools. Additionally, the grammar engine was overhauled to support advanced features like injection grammars, allowing scoped syntax rules to be embedded within other grammars for more precise highlighting in mixed-language files, and nested replacements for complex text transformations.[27][28] On August 9, 2012, Odgaard announced the open-source release of TextMate 2.0 under the GNU General Public License version 3 (GPL-3.0), hosted on the official GitHub repository at textmate/textmate. This move was motivated by Apple's evolving macOS restrictions on unsigned applications and a desire to foster community involvement, enabling forks, pull requests, and contributions from developers worldwide. The GPL choice ensured derivative works remained open, countering potential proprietary forks while allowing TextMate to evolve beyond Odgaard's solo efforts. Prior to this, 2.0 builds were available only to 1.x license holders, but open-sourcing made alphas and betas freely accessible, accelerating feedback and bug fixes.[29] Following the 2012 transition, MacroMates Ltd., Odgaard's company, retained oversight of the project, coordinating merges from community contributions while maintaining compatibility with evolving macOS versions. Updates continued steadily, with notable releases including version 2.0.8 in 2013 (adding clever completion for snippets) and progressing through multiple release candidates. The stable 2.0 version arrived on September 16, 2019, after nearly eight years of development, incorporating refinements like multiple cursor support and enhanced find-and-replace capabilities. Subsequent maintenance releases, up to 2.0.23 in October 2021, focused on stability and optimizations, including native Apple Silicon support for ARM-based Macs starting with macOS 11, ensuring seamless performance on M1 and later chips without Rosetta emulation.[6][30] The prolonged timeline for 2.0 stemmed from the ambitious scope of the rewrite and Odgaard's commitment to delivering a polished product, amid challenges like adapting to macOS updates such as 10.8's Apple Events changes, which required significant debugging. Despite community anticipation building since 2006 announcements, the delays preserved TextMate's reputation for reliability, culminating in an editor that balanced legacy compatibility with forward-looking extensibility.[1]Core Features
Syntax Highlighting and Language Grammars
TextMate employs a declarative system for syntax highlighting through language grammars, which are defined in XML-based property list files with the.tmLanguage extension. These grammars specify rules for parsing and tokenizing text using Oniguruma regular expressions, breaking down code into named elements such as keywords, strings, or comments. This approach allows for precise, context-sensitive coloring without requiring a full parser for each language.[31][32]
The core of this system is the hierarchical scope mechanism, where tokens are assigned dot-separated scope names that reflect their syntactic role and nesting level. For example, a variable in Ruby source code might receive the scope source.ruby variable.other.readwrite.instance, enabling themes to target specific styling via scope selectors similar to CSS. Root scopes typically begin with categories like source for programming languages or text for markup, with over 80 standard subcategories defined for elements such as comment, constant, keyword, string, and variable. These scopes not only drive visual highlighting but also inform editor behaviors like auto-completion and navigation.[33]
In implementation, the grammar engine processes documents incrementally and in real-time during editing, matching patterns sequentially from top-level rules down to embedded sub-languages. Single-line matches use simple regex patterns, while multi-line constructs like block comments or quoted strings employ begin/end pairs with capture groups for dynamic boundaries. This parsing generates scopes that support advanced features, including code folding (via regex-defined markers like {{{$ for regions), indentation guides (derived from scope-based whitespace analysis), and symbol lists (populated by capturing named entities like functions or classes). Grammars can reference external ones using include directives, such as embedding source.php within HTML, and support repositories for modular rule reuse.[31][32][34]
Customization is facilitated through TextMate's Bundle Editor, where users create or modify grammars by defining scopeName (e.g., source.markdown), fileTypes arrays for extensions, and patterns collections. For a basic keyword rule in a hypothetical language, one might add:
This declarative format has enabled community adaptations, such as extending the core Markdown grammar for GitHub-flavored variants or tailoring LaTeX support for custom document classes, all packaged within bundles for easy distribution.[31]{ match = '\b(if|while|for)\b'; name = 'keyword.control.example'; }{ match = '\b(if|while|for)\b'; name = 'keyword.control.example'; }
Bundles and Customization
TextMate's bundle system serves as the core framework for extensibility, allowing users to add support for languages, tools, and workflows by packaging components such as grammars, commands, and preferences into.tmbundle directories. These bundles are organized as standard macOS bundles, with contents stored in subdirectories like Syntaxes for grammars, Commands for executable scripts, Snippets for text expansions, and Preferences for settings overrides.[10]
Bundles are installed manually by downloading the .tmbundle archive and double-clicking it, which places a pristine copy in ~/Library/Application Support/TextMate/Pristine Copy/Bundles/ while user modifications are saved in ~/Library/Application Support/TextMate/Bundles/ to avoid overwriting updates. Alternatively, the GetBundles bundle provides a graphical interface for browsing and installing from repositories directly within TextMate via the Preferences > Bundles tab.[10][35][36]
The official collection, originally hosted in a Subversion repository and now primarily on GitHub under the textmate organization, includes dozens of pre-installed bundles covering languages like Python, HTML, and Ruby, as well as integrations for tools such as Git and LaTeX. In total, over 100 bundles were available by the mid-2000s, with the ecosystem expanding to support countless customizations for markup systems and development workflows.[10][35]
Customization occurs through the Bundle Editor (accessible via the Window menu), where users can create, edit, or delete items; preferences and bundle order are managed in info.plist files using XML or the built-in plist editor. Theme support is handled via .tmtheme files, which define colorschemes for syntax highlighting—popular examples include Solarized, a palette designed for low-contrast readability across light and dark modes.[10][37]
Language-specific bundles exemplify this extensibility: the LaTeX bundle adds a build task for PDF generation using pdflatex (invoked with ⌘B), while HTML bundles provide commands for inserting tags (⌃<) or wrapping selections in links (⌃⇧L), and others integrate previewers for real-time rendering in tools like Markdown. These features enable tailored build tasks and integrations without altering TextMate's core application.[10][38]
Snippets
Snippets in TextMate provide a mechanism for inserting predefined text templates into documents, enabling rapid expansion of abbreviations into more complex structures. Users can define these templates, which are triggered by typing a short abbreviation followed by the Tab key; for instance, entering "for" in a Ruby scope might expand to a full for-loop construct such asfor ${1:i} in ${2:1..10} do ... end. This feature supports placeholders like ${1:placeholder}, where the number indicates the tab stop order for sequential editing, allowing users to customize the inserted text by jumping between positions with Tab.[39]
Advanced snippet usage incorporates nested placeholders, which can embed additional snippets or shell commands for dynamic generation, and mirrors, which synchronize edits across multiple instances of the same variable—such as repeating a method name in both declaration and implementation. Environment variables, accessed via notations like $TM_SELECTED_TEXT, insert context-specific content, such as the currently selected text or the filename without extension ($TM_FILENAME_BASE). Transformations using regular expressions further enhance flexibility, enabling operations like uppercase conversion on captured groups.[39]
Snippets are integrated into TextMate's bundle system and stored as XML-formatted .tmSnippet files within language-specific bundles, specifying the tab trigger, scope, and content. Examples include an HTML table generator triggered by "table", which inserts a full <table> structure with editable rows and cells, or a CSS class completion via "cl" that expands to .${1:class} { ${2:property: ${3:value};} }. These are editable through TextMate's bundle editor, promoting reusability across projects.[39]
The primary benefits of snippets lie in minimizing repetitive typing for boilerplate code, thereby boosting productivity, while their scope-aware expansion ensures contextually appropriate insertions, such as language-specific syntax without manual adjustment. By housing snippets within bundles, as detailed in the customization section, users can share and version-control these templates effectively.[39]
Advanced Functionality
Commands and Macros
TextMate provides commands as a mechanism for executing external scripts to automate tasks within the editor, enhancing user workflows by integrating shell commands or AppleScript invocations. These commands are typically defined in bundle files with a.tmCommand extension and can be triggered via menu items, keyboard shortcuts, or context-specific activations.[40][10]
Commands operate by reading input from the current document via standard input (stdin), which represents the document's content at the time of execution, or through environment variables such as TM_FILEPATH for the file path. Output is directed back to the document or handled externally, depending on the script's design; for instance, scripts can use temporary files created via TextMate's API for processing. Commands support various interpreters, indicated by shebang lines (e.g., #!/usr/bin/[ruby](/page/Ruby)), and a non-zero exit code signals an error to the editor. To prevent infinite loops, commands include save options like "Nothing," which avoids auto-saving the document post-execution.[41][42]
Representative examples include a "Sort Lines" command that reorders selected text alphabetically using a simple shell script, or a Git integration command that runs git commit on the current file by piping content to stdin and capturing output for review. Language-specific runners, such as invoking the Python interpreter on a script file, demonstrate how commands facilitate direct execution and feedback within the editor environment.[43][44]
Commands incorporate scope filtering through selectors that ensure execution only in relevant grammatical contexts, such as source code scopes for programming languages, thereby improving efficiency by limiting availability to appropriate documents or selections. This filtering is defined in the bundle item properties, matching against the document's scope at the caret position.[45][46]
In addition to commands, TextMate supports macros as recordable sequences of user actions for repeatable automation of editing tasks. Macros capture operations like selections, transformations, insertions, Find and Replace, command invocations, and snippet expansions during a recording session initiated via Bundles → Macros → Start Recording, indicated by a pulsating red dot in the status bar.[47][48]
Upon stopping the recording, users can immediately replay the macro or save it as a .tmMacro file within a bundle for persistent use, allowing assignment of keyboard equivalents or tab triggers for quick access. Macros maintain a local clipboard during recording to avoid interfering with the system clipboard, though this can be toggled. Scope selectors apply similarly to macros, restricting playback to matching contexts like specific language grammars.[47][45]
For example, a macro might select a block of text, apply a transformation such as uppercase conversion, and insert a comment wrapper, enabling rapid formatting of code sections; such sequences are particularly useful for repetitive edits in documents without predefined scripts. Unlike commands, which rely on external code execution, macros directly replay interactive editor actions for precise, user-defined automation.[47][48]
Project Management
TextMate provides robust tools for managing multi-file projects, enabling efficient navigation, searching, and integration with external build processes within a single workspace. The primary interface for project organization is the file browser, which offers a hierarchical view of files and folders in the current project. Users can open a project by selecting a folder, which TextMate treats as the project root for subsequent operations like searching and navigation.[49] Files and folders can be added to the project via drag-and-drop directly into the file browser or through the "Add Existing Files…" option in its action menu, allowing for flexible assembly of project contents without relying on legacy file formats.[50] For multi-file operations, TextMate includes a powerful search and replace feature scoped to the project. The "Find in Project" dialog, accessible via Edit → Find → Find in Project… (⇧⌘F), performs searches across all files in the project folder, supporting regular expressions for complex pattern matching.[51] Users can filter results by file type or scope, such as limiting searches to source code files or specific language elements, and apply replacements selectively or in bulk after reviewing matches.[52] This ensures precise editing across large codebases while maintaining control over the scope of changes. Build system integration in TextMate is achieved through customizable commands that interface with external tools like Make or Rake, often provided via language-specific bundles. For instance, the Ruby bundle includes a "Run Rake Task" command that executes Rakefiles within the project context, passing environment variables and handling output directly in TextMate.[3] Similarly, commands can invoke Make for compiling projects, with output displayed in HTML format for better readability if configured.[44] To support iterative development, TextMate manages sessions that preserve unsaved changes; upon relaunch, modified documents are recoverable from the session store in ~/Library/Application Support/TextMate/Session/, preventing loss during crashes or unexpected quits.[53] Additional features enhance project navigation and previewing. The symbols list, generated from language grammars and scope selectors, provides a navigable outline of functions, classes, and other structural elements in the active document, accessible via the Go to Symbol dialog (⇧⌘T) or the function pop-up in the status bar.[34] For web development projects, HTML preview capabilities allow real-time rendering of markup; bundles such as the HTML or Markdown ones include commands to generate and display previews in an embedded WebKit view or external browser, updating on save for efficient iteration.[44] These tools collectively streamline handling of complex, multi-file workflows.User Interface and Editing Tools
TextMate employs a single-window design that integrates essential elements such as a toolbar for quick actions, a status bar displaying file information and cursor position, and a customizable sidebar for navigation within the editing environment.[49] This layout supports split panes to view multiple sections of a document simultaneously and includes a full-screen mode for distraction-free editing, accessible via keyboard shortcuts like Command-Control-F.[54] The interface emphasizes minimalism, allowing users to hide elements like the toolbar or sidebar to focus on content.[55] Core editing tools enhance productivity through features like column selection, enabled by Option-drag to select rectangular blocks of text, and multiple cursors for simultaneous edits at various positions, invoked with Command-click.[56][57] Additional aids include wrapping or unwrapping selected lines to manage long content and regex-based find and replace for precise modifications within individual files.[58][59] These capabilities streamline common tasks without requiring external plugins. Themes and fonts are highly customizable, with users able to define color schemes and typography via bundles that override default settings.[10] The editor defaults to a monospaced font like Monaco, and later versions support ligatures when using compatible fonts for improved readability in code.[60] Syntax scopes can influence UI colors through these theme configurations, ensuring context-aware visual feedback.[54] Accessibility is prioritized through keyboard-driven navigation, including word and subword movement with Option-left/right arrows, and support for vim keybinding emulation via dedicated bundles.[61][62] This allows power users to adapt the interface to familiar modal editing paradigms while maintaining the editor's native efficiency.Limitations and Criticisms
Performance Issues
TextMate encounters performance challenges when handling large files, primarily due to its architecture that fully loads documents into memory and applies comprehensive regex-based syntax highlighting across the entire content. For instance, attempting to open a 5 MB SQL file with long lines can result in the editor becoming unresponsive for approximately 30 seconds, rendering it effectively unusable during that period. This overhead stems from the parsing process, where complex grammars exacerbate delays, as malformed or intricate regex patterns in bundles can even lead to hangs or crashes. Users have also reported complete freezes when opening sizable JavaScript files exceeding several megabytes, often requiring force-quitting the application.[63] Startup and responsiveness issues are particularly noticeable on older hardware. On an 800 MHz iBook G4 with 640 MB RAM, scrolling through documents can introduce 2-3 second delays before the display updates, significantly hindering workflow. The command-linemate tool for opening files occasionally takes over 5 seconds, attributed to initialization of the GUI and bundle loading. In comparison to lightweight editors like Vim, which launch nearly instantaneously even on legacy systems, TextMate's Cocoa-based interface contributes to slower initial loading times.[64]
Memory consumption represents another area of concern, especially for complex projects. The application's baseline footprint is around 40 MB, but opening a 66 MB file can push usage beyond 100 MB, with reports of leaks preventing garbage collection and causing gradual increases over time. Loading numerous bundles for language support and features can elevate this to 200-600 MB or more in demanding scenarios, such as projects with multiple syntax grammars active; early versions of TextMate 2.0 were noted for high usage even with minimal files open. Optimization for Apple Silicon (M1/M2 chips) was added in version 2.0.16 in February 2021.[65]
Common workarounds include disabling unused bundles via the Bundle Editor to minimize startup overhead and reduce memory demands, as these resources are preloaded on launch. For tasks involving large differences, integrating external tools like FileMerge can bypass TextMate's built-in diff viewer, which struggles with resource-intensive comparisons.
Compatibility Constraints
TextMate is designed exclusively for macOS, requiring version 10.12 or later, with no official ports available for Windows or Linux operating systems. This platform specificity limits its accessibility to users outside the Apple ecosystem, despite ongoing requests from the developer community for cross-platform support.[3][66][67] The transition to TextMate 2.0, released as a complete rewrite in 2011, introduced changes to its grammar system and bundle architecture that rendered many older bundles incompatible without updates. For instance, legacy bundles relying on TextMate 1.x syntax definitions often fail to load or function correctly in version 2.0 due to shifts in how language grammars are parsed and applied. Additionally, project synchronization via services like iCloud or Dropbox is limited, as TextMate lacks native integration for seamless cloud handling; users must rely on general file syncing, which can lead to inconsistencies when projects include bundle references or large file sets stored in application-specific directories.[26][68] External tool integration in TextMate depends heavily on macOS-specific paths, such as /usr/bin for invoking shell commands or scripts within bundles, which can break after system updates that alter or remove these paths—for example, the deprecation of Python 2 at /usr/bin/python in macOS 12.3 and later. On Apple Silicon Macs, legacy commands or bundle binaries compiled for Intel architectures require Rosetta 2 emulation, potentially causing compatibility issues or performance overhead until bundles are recompiled for native ARM support.[10][69][70] As of November 2025, TextMate remains at version 2.0.23 (released October 2021) with no further official updates, potentially affecting long-term compatibility and performance on macOS 15 (Sequoia) and later, though user reports indicate it generally functions on recent versions like macOS 14 (Sonoma).[71] Native Apple Silicon (ARM) support was added in version 2.0.16 in February 2021, around the same time as competitors like Visual Studio Code.[72][73][30]Reception and Legacy
Awards and Recognition
TextMate was awarded the Apple Design Award for Best Mac OS X Developer Tool in 2006, recognizing its innovative approach to text editing with elegant customization features that streamlined developer workflows.[4][74] The accolade received coverage in industry publications, including Macworld, which described TextMate as a powerful editor supporting multiple programming languages through its extensible architecture.[75] TextMate's bundle system and modular design influenced later editors, serving as a primary inspiration for Sublime Text, developed by Jon Skinner as a faster, cross-platform alternative.[76] Similarly, GitHub's Atom editor adopted TextMate's grammar and bundle mechanisms, integrating them via the FirstMate library to enable compatible syntax highlighting and customizations.[77]Community and Development Status
Since its open-sourcing in 2012 by creator Allan Odgaard, TextMate has been maintained by a community of volunteers through the project's GitHub organization.[29][1] The core repository at github.com/textmate/textmate has accumulated over 14,700 stars and contributions from 77 developers, reflecting sustained interest since the transition to open-source development.[2] Across the organization's 246 repositories, which include numerous language-specific bundles, activity persists with regular pull requests for updates, such as bundle enhancements and scope improvements; for example, a pull request in July 2025 introduced theattr.filebrowser scope to better integrate with file navigation tools.[78][79]
Community discussions and resources remain accessible via the official mailing list at lists.macromates.com, where users share troubleshooting tips, bundle customizations, and feature requests, alongside the IRC channel #textmate on Libera.Chat for real-time interaction.[80] Third-party bundle repositories, such as those under the textmate organization on GitHub (e.g., git.tmbundle and c.tmbundle), continue to receive updates from contributors, with some seeing commits as recently as March 2024 to refine syntax highlighting and commands for languages like D and Git integration.[79]
As of 2025, TextMate is in a stable but low-intensity maintenance phase, with the last official release (version 2.0.23) dated October 2021, focusing on bug fixes and macOS 11 compatibility; subsequent enhancements occur primarily through merged pull requests rather than major version increments.[6] This volunteer-driven model has ensured compatibility with modern macOS versions, including ongoing support for systems up to at least macOS 14 Sonoma, as reported by users in community forums.[81]
However, the pace of core development has declined compared to the 2010s, when frequent updates and bundle ecosystem growth were more robust, leading to observations in community threads of users migrating to alternatives like Visual Studio Code for its faster iteration and broader extension ecosystem.[82][83] Despite these challenges, the project's open-source nature sustains a niche but dedicated user base, with sporadic contributions addressing compatibility and usability needs.[84]