DocsLoom in your IDESupported editors

Supported editors

Like any language, Loom needs two things from your editor: syntax highlighting and a language server. Loom provides both for the editors below. If yours isn't here, ask for it.

VS Code

Install the Loom extension from the Extensions view, or from the terminal:

Cursor, Windsurf and VSCodium install the same extension from Open VSX, the registry they use in place of Microsoft's.

Zed

Zed builds the Loom extension on your machine, so install Rust from rustup.rs first.

Zed's registry doesn't list the extension yet, so Zed installs it from a folder. Clone the extension, then run zed: install dev extension from the command palette and choose the loom-zed folder:

Gram

Gram, a fork of Zed, installs the same extension straight from its repository, and builds it with Rust from rustup.rs. Open the Extensions page, click Install From URL, and enter .

Helix

Helix needs no extension. One command builds Loom's grammar into Helix's configuration folder and adds Loom to Helix's languages.toml:

Loom installed with curl carries the grammar already built, so that's all it takes. Loom installed from npm builds the grammar on your machine, which takes a C compiler: the Xcode Command Line Tools on macOS, or your distribution's build tools on Linux. Run loom helix again after you upgrade Loom, and check the result with .

In Helix, :format formats a loom.

Neovim

Neovim needs no plugin manager. One command builds Loom's grammar into Neovim's data folder and turns on the language server:

It takes Neovim 0.11 or newer. Loom installed from npm also needs a C compiler to build the grammar, while Loom installed with curl carries it already built. Run loom nvim again after you upgrade Loom, and check the result with :checkhealth vim.treesitter.

Any other editor

An editor with a language client starts the server with , and the server treats the nearest folder holding .loom/config.yaml as the project. An editor that colours with tree-sitter can build the grammar from packages/tree-sitter-loom.

Formatting and wrapping

Your editor's format command formats a loom through the language server: each prose paragraph goes onto one line, and each code section is laid out by its language's formatter. From the terminal, does the same.

A paragraph on one line is for your editor to wrap. Zed, Gram and Helix wrap a loom's prose at the width Loom formats code to, so prose and code end at the same column. They read that width from the .editorconfig that loom init writes. It is a hundred columns unless .loom/config.yaml sets another width. After you change it, run loom init again to bring .editorconfig up to date.

Checking TypeScript

Loom checks each section's code with that language's own server. Turn TypeScript on in a project with . After you upgrade Loom, bring the servers up to date with .

Outside VS Code, the server checks with the project's own TypeScript, version 6 or earlier. Add one with . TypeScript 7 has no JavaScript API for the server to load.

Loom