Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

VS Code

primate ships a VS Code extension that provides syntax highlighting and connects to the primate lsp server. Source lives at editors/vscode/ in the project repo.

Install

  1. Install the primate binary so the extension can shell out to primate lsp:

    cargo install primate --locked
    

    The binary lands at ~/.cargo/bin/primate. As long as that’s on your PATH, you’re set. If you’d rather point the extension at a custom path, set primate.server.path in your VS Code settings.

  2. Install the extension from the Marketplace:

  3. Open any .prim file. Syntax highlighting and inline diagnostics should appear immediately.

What you get

  • Syntax highlighting via a TextMate grammar (editors/vscode/primate.tmLanguage.json).
  • LSP-driven diagnostics, hover, go-to-definition, find-references, format-on-save, and contextual completion (enum variants, unit suffixes).
  • Cross-target navigation: from a constant in a .prim file, find references jumps to its callsites in generated TypeScript / Rust / Python; from a generated symbol, go-to-definition resolves back to the originating .prim line via the sourcemap.
  • JSON schema validation for primate.toml.

Settings

SettingDefaultDescription
primate.server.path"primate"Path to the primate executable. Defaults to looking on PATH.

Commands

  • primate: Restart LSP Server — kill and re-launch the language server. Useful when you’ve upgraded the CLI binary.

Troubleshooting

If the extension activates but diagnostics never show, the language server probably failed to start. Check Output panel → primate LSP for the error message. Common causes:

  • primate isn’t on PATH. Run which primate from a terminal; if empty, either cargo install primate --locked or set primate.server.path to an absolute path.
  • The CLI version doesn’t match the extension. Run primate --version to confirm. Older CLIs may not implement some LSP requests the extension expects (e.g. cross-target navigation is added in v0.1+).

Install from source (development)

If you’re hacking on the extension itself rather than just using it:

cd editors/vscode
npm install
npm run compile

Then in VS Code, open editors/vscode/ and press F5 — that launches an “Extension Development Host” window with the in-progress extension loaded.

To package a .vsix locally without publishing:

npx --yes @vscode/vsce package
code --install-extension primate-vscode-*.vsix