Noxid for Visual Studio Code
This extension adds .nox syntax highlighting and connects Visual Studio
Code to the compiler's existing stdio language server. The language server
provides live diagnostics, whole-document formatting, go to definition,
references, semantic rename, code actions, and compiler-owned semantic
commands.
The extension launches noxid lsp from PATH by default. Set
noxid.compilerPath to an absolute compiler path if noxid is installed
elsewhere. Noxid does not launch the compiler in untrusted workspaces.
Build and test
npm ci
npm run build
npm test
The grammar test tokenizes the transitions example and every .nox source in
the tracker example. Set UPDATE_SNAPSHOTS=1 only when intentionally reviewing
a TextMate scope change.
Install from a VSIX
Build a local package:
npx @vscode/vsce package
Then open Visual Studio Code's Extensions view, choose Views and More
Actions… → Install from VSIX…, and select the generated
noxid-0.1.0.vsix. You can also install from a terminal:
code --install-extension noxid-0.1.0.vsix
Open a trusted Noxid project, then open any .nox file. If the compiler is
not on PATH, set Noxid: Compiler Path and reload the window.
This initial extension is packaged for local installation only; it is not
published to a marketplace.
Reusing the grammar outside VS Code
syntaxes/noxid.tmLanguage.json is a standard TextMate grammar, so any
TextMate-compatible highlighter can render Noxid with it — no
VS Code required:
- Shiki (VitePress, Astro, Nextra, most docs sites):
createHighlighter({ langs: [{ ...grammar, name: "noxid" }] }), then
```noxid fences highlight.
- Other TextMate hosts (Sublime, TextMate itself,
vscode-textmate
embedders): load the JSON directly.
- GitHub.com highlighting requires an upstream contribution to
github-linguist referencing this grammar once the language is
public; until then GitHub renders .nox as plain text.
- Chat/markdown surfaces (Claude, Slack, etc.) use their own fixed
highlighter sets and cannot load custom grammars; for shared
documents, render code to HTML with Shiki and this grammar instead.