- About TM4E
- Key Features
- Installation
- Getting started as an end user
- Who is using TM4E?
- Architecture and modules
- Integrating TM4E
- Contributing
- License
TM4E provides a Java implementation of the TextMate grammar engine, based on the microsoft/vscode-textmate project. It can be embedded in any Java application, along with Eclipse IDE integration for syntax highlighting and VS Code-style Language Configuration (brackets, auto-closing, on-enter behavior, and more).
Example: TypeScript editor using TM4E-based highlighting (from Eclipse Wild Web Developer)
TM4E is an official Eclipse.org project, and follows the usual Eclipse.org processes and IP requirements.
- TextMate-based syntax highlighting for Eclipse editors, including the Generic Editor and TM4E-powered custom editors.
- Language-configuration based editor features, such as auto-closing and matching brackets, on-enter indentation and comment continuation, toggle line and block comments, and folding when supported.
- Themable colorization through TextMate themes, with built-in Light/Dark themes and additional themes contributed by plugins.
- A TM4E secondary partitioner that understands embedded languages and exposes normalized grammar scopes that other tooling can consume.
You can install the latest stable TM4E release from the update site https://download.eclipse.org/tm4e/releases/latest/. TM4E is usually installed together with its consumers, so end users should normally not need to install it directly.
The latest snapshot build can be installed from the update site https://download.eclipse.org/tm4e/snapshots/.
| TM4E version | Min. Eclipse version | Min. Java version |
|---|---|---|
| latest | 2024-06 (4.32) | 21 |
| 0.16.0+ | 2024-06 (4.32) | 21 |
| 0.9.0+ | 2023-09 (4.29) | 17 |
| 0.8.1+ | 2023-06 (4.28) | 17 |
| 0.8+ | 2023-03 (4.27) | 17 |
| 0.6.3+ | 2022-12 (4.26) | 17 |
| 0.6.2+ | 2022-09 (4.25) | 17 |
| 0.6.0+ | 2022-03 (4.23) | 17 |
Snapshot binaries of org.eclipse.tm4e.core are available at https://repo.eclipse.org/content/repositories/tm4e-snapshots/org/eclipse/org.eclipse.tm4e.core/.
You need to add the following repository configuration to your Maven settings.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<settings>
<profiles>
<profile>
<repositories>
<repository>
<id>tm4e-snapshots</id>
<name>tm4e-snapshots</name>
<url>https://repo.eclipse.org/content/repositories/tm4e-snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>tm4e-snapshots</activeProfile>
</activeProfiles>
</settings>Then reference the dependency in your pom.xml as follows:
<dependencies>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>org.eclipse.tm4e.core</artifactId>
<version>[VERSION]-SNAPSHOT</version>
</dependency>
</dependencies>If you are using an Eclipse IDE or other tool that ships TM4E-powered editors, you usually do not install TM4E directly.
- For day-to-day usage, configuration, and troubleshooting of TM4E-powered editors, see the User Guide.
- For usage questions and general help, use GitHub discussions.
- To report problems with TM4E-powered editors, file issues in GitHub issues and include details about your IDE, TM4E version, and steps to reproduce.
Here are some projects that use TM4E:
- Apache NetBeans - A multi-language IDE using TM4E core parts to support syntax highlighting based on TextMate grammars.
- Eclipse Corrosion - Rust development tools in Eclipse IDE.
- Eclipse aCute - C# edition in Eclipse IDE.
- Eclipse Wild Web Developer - Modern, productive web development tools for the Eclipse IDE (React, Vue.js, Astro, ...).
- Eclipse ShellWax - Shell scripting support for the Eclipse IDE, providing a rich editing experience through integration with the Bash Language Server.
- LiClipseText - An editor which enables Eclipse to be used as a general-purpose text editor, providing support for multiple languages out of the box.
- EditorConfig for Eclipse - EditorConfig for Eclipse with GenericEditor.
- Solargraph - Ruby development tools for Eclipse.
- dart4e - Dart/Flutter development support for the Eclipse IDE.
- haxe4e - Haxe programming language support for the Eclipse IDE.
- Previewer - Eclipse plugin that contributes a Preview view that renders syntax-highlighted sample text in real-time using your TextMate grammar as you edit.
- Deprecated projects:
- BEF: Bazel Eclipse Feature - Bazel support for the Eclipse IDE.
- Dartboard - Dart language support for the Eclipse IDE.
- typescript.java - TypeScript IDE for Eclipse with JSDT & tsserver.
- Phaser Editor 2D - an IDE for the creation of HTML5 games.
TM4E is split into three main bundles plus an optional language pack feature:
- org.eclipse.tm4e.core - Java TextMate engine (a port of vscode-textmate), UI-agnostic and usable with any Java UI toolkit.
- org.eclipse.tm4e.ui - Eclipse integration layer providing
TMPresentationReconciler, TextMate-based partitioning, theming, preference pages, hovers, and diagnostics. - org.eclipse.tm4e.languageconfiguration - VS Code-style
language-configuration.jsonsupport for bracket handling, auto-close, on-enter behavior, and comment toggling. - org.eclipse.tm4e.language_pack - Optional language pack feature that bundles 50+ TextMate grammars and language configurations so many common languages work out of the box in the Eclipse IDE.
If you are an Eclipse plug-in developer or Java tool author and want to integrate TM4E in your own tools:
- Start with the Adopter Guide for how to depend on TM4E, contribute grammars, themes, and language configurations, and wire TM4E into editors.
- For integration questions, best practices, and design discussions, use GitHub discussions.
- To report bugs or request new APIs or integration features, file issues in GitHub issues.
If you want to work on TM4E itself:
- Source code lives in this github.com/eclipse-tm4e/tm4e repository.
- Quick Start: to build and test locally from the command line, run
./mvnw clean verify(Linux/macOS) ormvnw clean verify(Windows). - See the Contributor Guide for repository layout, development environment setup, internal architecture (registry, Generic Editor wiring, async tokenization, TM partitioner), diagnostics, semantic versioning, and the detailed release process.
- See CONTRIBUTING.md for prerequisites, legal terms, and the contribution workflow.
- For design discussions and contribution-related questions, use GitHub discussions.
- Contributors are encouraged to subscribe to the tm4e-dev mailing list.
- As with other Eclipse.org projects, active contributors who consistently uphold quality standards and good judgment may be nominated as committers.
TM4E is a community-driven open-source project licensed under the Eclipse Public License 2.0.

