TOML Schema Language Server Protocol (LSP) written in Rust, and VS Code extension. Using TOML Schema by @brunoborges.
Features
- TOML Schema Validation: Full compliance with, and using the TOML Schema specification.
- Real-Time Diagnostics: Validates TOML files on the fly as you type.
- Local Schema Support: Uses local
.tosdfiles to define schemas.
Limitations
- TOML Version: TOML Schema is currently based strictly on TOML 1.0.0.
- Error Positioning: The underlying Rust implementation of TOML Schema validation currently only returns paths and string messages, no error type/tokens. Because of this, editor diagnostics/errors are placed directly on item values rather than pinpointing specific syntax tokens.
Roadmap
- Automatic TOSD Validation: Implement validation for
.tosdfiles using TOML Schema's Self-Schema. - Caching: Implement caching (and file watching) for
.tosdfiles to prevent re-fetching (disk I/O) on every modification. - Remote Schema Support: Add support for remote
.tosdURLs to improve UX (currently restricted as the current implementation supports only local files).
Development
The project consists of a Rust backend LSP server, and a TypeScript VS Code extension client.
Local Development
To develop locally, start file watchers for both the frontend and backend:
# Watch and build the VS Code client
npm run dev
# Watch and run the Rust LSP server
cargo watch -x run
note: In development, these communicate via TCP server (localhost:9260) as opposed to stdin/stdout.
Open this project in VS Code, press F5 and select "VS Code Extension Development" debugger to launch a host window with the extension active.
Packaging
To package the VS Code extension into a .vsix bundle:
npx @vscode/vsce package