Editor support
Write .milda with the comforts you expect from a real language: syntax highlighting, live diagnostics, completion, hover docs, go-to-definition, a document outline, and folding. It all comes from one language server, so every editor behaves the same.
#What you get
- Syntax highlighting - keywords, types, colour functions, strings, numbers, and dotted token references, coloured the instant a file opens.
- Diagnostics - syntactic and cross-file semantic errors as you type (unknown archetypes, dangling token references, literal-vs-declared-type mismatches, and more).
- Completion, hover, and go-to-definition over keywords, types, tokens, and component references.
- Document outline & folding - jump around foundations, components, and parts from the breadcrumb / symbol list.
#VS Code
Install Milda from the VS Code Marketplace, or from the command line:
code --install-extension milda.milda-vscode
The language server ships insidethe extension and runs on VS Code's own runtime, so there is nothing else to install - not even Node.js.
#Cursor, Windsurf, VSCodium
VS Code forks install from Open VSX. Search Milda in the extensions panel, or:
cursor --install-extension milda.milda-vscode # Windsurf, VSCodium: use their CLI or the UI
#JetBrains IDEs
In IntelliJ IDEA Ultimate, WebStorm, PyCharm, GoLand, Rider, and other paid JetBrains IDEs, open Settings › Plugins › Marketplace and search Milda. The plugin bundles the language server; you only need Node.js on your machine to run it.
#Any other editor
The server is a standard LSP over stdio, so it works with Neovim, Zed, Emacs, Helix, Sublime, and anything else with an LSP client. Install it from npm:
npm install -g @mildastudio/milda-lsp # provides the `milda-lsp` binary
Then point your editor's LSP client at the milda-lsp command for .mildafiles. For example, with Neovim's built-in client:
vim.filetype.add({ extension = { milda = 'milda' } })
vim.api.nvim_create_autocmd('FileType', {
pattern = 'milda',
callback = function(args)
vim.lsp.start({
name = 'milda-lsp',
cmd = { 'milda-lsp' },
root_dir = vim.fs.dirname(args.file),
})
end,
})#One server, one vocabulary
Every editor is driven by the same @mildastudio/milda-lspserver, and all three highlighters (the server's semantic tokens, the VS Code TextMate grammar, and the JetBrains lexer) are generated from a single shared vocabulary. They cannot drift on what counts as a keyword, a type, or a colour function. See the value literals and facets & tokens pages for what those colours mean.