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:

bash
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:

bash
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.

Paid IDEs only
JetBrains exposes the LSP integration API only in its paid IDEs, not the Community editions. Syntax highlighting, file recognition, and commenting still work everywhere; the language-server features (diagnostics, completion, hover, definition) need a paid IDE.

#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:

bash
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:

lua
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,
})
Highlighting outside VS Code / JetBrains
Editors that consume the server get semantic-token highlighting from it directly. The VS Code and JetBrains packages additionally bundle a native grammar for zero-latency colouring before the server has started.

#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.