This extension wires VS Code .vx files to the VexaScript language server.
How it works
- Registers language id
vexafor*.vx. - Adds syntax highlighting for
.vxvia TextMate grammar (source.vexa). - Adds a custom language icon for
.vxwithout replacing the active file icon theme. - Provides schema-backed completion, hover descriptions, validation, and go-to-definition from configuration keys to their
vexascript.jsonschema entries. - 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
.vxfile. It should be recognized asvexaand 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/vscodein VS Code. - Run
F5with theRun VexaScript Extensionlaunch config (plugins/vscode/.vscode/launch.json).