Support matrix
Generated from the language and addon definitions in modules/devix, so it
cannot drift from the code.
Languages
A consumer whose capability is "all" configures every language
generically. One with capability = "meta" only covers languages that carry
metadata for it — the marks below show the Zed language name and the
OpenCode file extensions that metadata provides.
| Language | Language servers | Formatters | helix | opencode | zed |
|---|---|---|---|---|---|
bash | — | shfmt | ✅ | ✅ .sh .bash | ✅ Shell Script |
fish | fish-lsp | fish-indent | ✅ | ✅ .fish | ✅ Fish |
fortran | fortls | fprettify | ✅ | ✅ .f90 .f95 .f03 .f .for | — |
go | gopls, golangci-lint-langserver | gofmt | ✅ | ✅ .go | ✅ Go |
json | vscode-json-languageserver | prettier-json | ✅ | ✅ .json .jsonc | ✅ JSON |
julia | julia-ls | — | ✅ | ✅ .jl | — |
latex | texlab | — | ✅ | ✅ .tex .sty .cls | ✅ LaTeX |
markdown | marksman, markdown-oxide, iwe | prettier-markdown | ✅ | ✅ .md .markdown | ✅ Markdown |
matlab | matlab-ls | — | ✅ | ✅ .m | — |
nix | nixd, nil | nixfmt | ✅ | ✅ .nix | ✅ Nix |
nu | — | nufmt | ✅ | ✅ .nu | ✅ Nu |
python | pyright | ruff-check, ruff-format | ✅ | ✅ .py .pyi | ✅ Python |
rust | rust-analyzer | rustfmt | ✅ | ✅ .rs | ✅ Rust |
toml | taplo | taplo-fmt | ✅ | ✅ .toml | ✅ TOML |
typst | tinymist | typstyle | ✅ | ✅ .typ | ✅ Typst |
xml | lemminx | — | ✅ | ✅ .xml | ✅ XML |
yaml | yaml-lsp | yamlfmt | ✅ | ✅ .yaml .yml | ✅ YAML |
Consumer capabilities: helix all, opencode meta, zed meta.
Addons
| Addon | Attached by default | Available, not attached | Attaches to |
|---|---|---|---|
ai | copilot, lsp-ai | — | every enabled language |
grammar | ltex, codebook | harper | markdown, latex, typst |
A server in the Available, not attached column is defined in the registry
but stays inactive until you add it to that addon’s lspServers.