lexloom
v1.1.0
Published
A cross-platform syntax highlighting meta-compiler.
Maintainers
Readme
LexLoom 🧵
LexLoom is a cross-platform syntax highlighting meta-compiler. It abstracts the nightmare of writing complex, engine-specific grammar files (Oniguruma for VS Code, procedural regex for Vim, and XML for Notepad++) into a single, clean JSON file.
Define your language once. Generate native highlighters everywhere.
✨ Key Features
- 🧠 Regex-Free Authoring: Define language constructs by intent (e.g.,
wordList,symbolList,stringMarker) rather than writing platform-specific regular expressions. - 🌍 Write Once, Highlight Anywhere: Instantly generate highlighters for VS Code (
.tmLanguage.json), Vim (.vim), and Notepad++ (UDL.xml). - ⚡ VS Code Web Extension Scaffolding: Bootstrap a ready-to-use, publishable VS Code Web extension project directly from your grammar.
- 🔋 Batteries-Included Presets: Built-in, highly optimized regex patterns for common needs like decimals, hex numbers, binary, and embedded language injection.
🚀 Quick Start
1. Installation
Install LexLoom globally via NPM to use the CLI anywhere:
npm install -g lexloom
(Alternatively, you can run it without installing by cloning this repo and using npx lexloom)
2. Write your Grammar (my-language.json)
LexLoom uses a standardized JSON format. Here is a taste of how easy it is to define keywords and operators:
{
"metadata": {
"name": "My Language",
"scopeName": "source.mylang",
"extensions": [".mylang"]
},
"rules": [
{
"ruleType": "wordList",
"universalScope": "keyword.control",
"words": ["if", "else", "function", "return"]
},
{
"ruleType": "symbolList",
"universalScope": "keyword.operator",
"symbols": ["==", "!=", "+", "-", "&&"]
}
]
}
3. Build the Highlighters
Run the CLI against your grammar file:
lexloom my-language.json --scaffold-vsc
Output:
out/
├── vscode/ # TextMate .tmLanguage.json
├── vim/ # Vim .vim syntax script
├── notepadpp/ # Notepad++ .xml UDL
└── vscode-extension/ # A complete, ready-to-publish VS Code Web extension!
🪄 Pro-Tip: Instant IDE Autocompletion
You don't need to guess the rule types or scopes. LexLoom comes with a built-in JSON Schema.
Add this single line to the very top of your JSON file in VS Code to get instant validation, hover documentation, and IntelliSense dropdowns for your grammar:
{
"$schema": "https://raw.githubusercontent.com/thisisthedarshan/LexLoom/refs/heads/main/schema/lexloom.schema.json",
"metadata": { ... }
}
📄 License
LexLoom is open-source software licensed under the Apache 2.0 License.
Note: The syntax files and VS Code extensions generated by the LexLoom CLI are the sole property of the user and are not bound by this license.
