1---
2title: Standard ML
3description: "Configure Standard ML language support in Zed, including language servers, formatting, and debugging."
4---
5
6# Standard ML
7
8Standard ML support is available through the community-maintained [Standard ML extension](https://github.com/omarjatoi/zed-sml).
9
10- Tree-sitter: [MatthewFluet/tree-sitter-sml](https://github.com/MatthewFluet/tree-sitter-sml)
11- Language Server: [Millet](https://github.com/azdavis/millet)
12
13## Setup
14
151. Install a Standard ML implementation such as [SML/NJ](https://www.smlnj.org/) or [MLton](http://mlton.org/) to compile and run your code.
162. [Install Millet](https://github.com/azdavis/millet#install) and ensure `millet-ls` is on your `$PATH`.
17
18## Project setup
19
20For projects with more than one source file, Millet expects a single root group file. Create a `millet.toml` in the directory you open in Zed:
21
22```toml
23version = 1
24[workspace]
25root = "sources.mlb"
26```
27
28The root must be either a [ML Basis (MLB)](http://mlton.org/MLBasis) file (`.mlb`, used with MLton) or a [SML/NJ Compilation Manager (CM)](https://www.smlnj.org/doc/CM/new.pdf) file (`.cm`, used with SML/NJ). Files not transitively reachable from the root are not analyzed. See the [Millet manual](https://github.com/azdavis/millet/blob/main/docs/manual.md) for more options.