This extension wires VS Code .vx files to the VexaScript language server.
How it works
Registers language id vexa for *.vx.
Adds syntax highlighting for .vx via TextMate grammar (source.vexa).
Adds a custom language icon for .vx without replacing the active file icon theme.
Starts the bundled server using:
node ./dist/vexa.mjs --lsp
Uses stdio transport via vscode-languageclient.
Exposes LSP editor features including:
diagnostics
completion
hover
go-to-definition
rename symbol
formatting, including selected ranges
Local development
From plugins/vscode, install extension dependencies:
pnpm run setup
Build the compiler/LSP bundle:
pnpm run bundle-extension
Launch VS Code with the extension in development mode:
pnpm run launch
To create a .vsix package you can send/install:
pnpm run package
This writes vexascript.vsix in plugins/vscode.
The packaging command uses vsce --no-dependencies because the extension dependencies are installed with PNPM and vsce's default npm dependency scan can fail on PNPM's layout.
The extension package bundles the VS Code client entrypoint into dist/extension.js, so the generated .vsix includes the vscode-languageclient runtime even though vsce is invoked with --no-dependencies.
The extension manifest now declares the repository and uses an explicit files allowlist, so vsce packages only the runtime assets we ship.
setup is intentionally separate from launch and package, so packaging does not force a reinstall every time.
From the repo root, the wrapper commands still work:
pnpm run vscodeext:install
pnpm run vscodeext:bundle
pnpm run vscodeext:launch
pnpm run vscodeext:package
Open any .vx file. It should be recognized as vexa and show parse/tokenizer diagnostics while editing.
The .vx icon is contributed by the language itself and does not require selecting a separate icon theme.
Alternative debug flow:
Open plugins/vscode in VS Code.
Run F5 with the Run VexaScript Extension launch config (plugins/vscode/.vscode/launch.json).