Glint for Zed#
Zed extension for Glint — language config, tree-sitter highlighting (via tree-sitter-gleam), and the glint language server.
Compile#
Glint binary (LSP)#
cd /home/nandi/code/glint
nix build # → result/bin/glint
Zed guest (Rust — what Install Dev Extension builds)#
Zed always runs cargo build --target wasm32-wasip2 when
[lib] kind = "Rust". Local check:
cd /home/nandi/code/glint/editors/zed
rustup target add wasm32-wasip2 # once
cargo build --release --target wasm32-wasip2
cp target/wasm32-wasip2/release/zed_glint.wasm extension.wasm
file extension.wasm # WebAssembly (wasm) binary version 0x1000d (component)
Pure Gleam guest (experimental)#
Compiler work is on our Gleam wasm fork on Tangled:
https://tangled.org/nandi.uk/gleam (wasm branch)
git clone https://tangled.org/nandi.uk/gleam
cd gleam && git checkout wasm
cargo build -p gleam
cd /home/nandi/code/glint/editors/zed
/path/to/gleam/target/debug/gleam export zed-extension
# → extension.wasm
See docs/compiler/wasm-zed-extensions.md in that repo. Until Zed can load a
prebuilt guest without cargo, Install Dev Extension still uses the Rust
crate (src/glint.rs). src/zed_glint.gleam is the pure-Gleam sketch.
Install in Zed#
-
Build
glint(nix buildabove). -
Extensions → Install Dev Extension… → this directory:
/home/nandi/code/glint/editors/zed -
Open a
*.glintfile. The guest runsglint lsp.
LSP binary resolution#
lsp.glint.binaryin Zed settingsglinton$PATH(worktree.which)- Fallback:
/home/nandi/code/glint/result/bin/glint
{
"lsp": {
"glint": {
"binary": {
"path": "/home/nandi/code/glint/result/bin/glint",
"arguments": ["lsp"]
}
}
}
}
Layout#
| Path | Role |
|---|---|
extension.toml |
Zed manifest |
src/glint.rs |
Installable guest (zed_extension_api) |
src/zed_glint.gleam |
Pure-Gleam authoring sketch |
languages/glint/ |
Tree-sitter queries + language config |
extension.wasm |
Built component (Zed / cargo) |
Grammar id is gleam so the linker finds tree_sitter_gleam. Language
name / path suffix stay Glint / *.glint.