IDE support for Pest, via the LSP.
This repository contains an implementation of the Language Server Protocol in Rust, for the Pest parser generator.
- Error reporting.
- Warnings for unused rules.
- Syntax highlighting definitions available.
- Rename rules.
- Go to rule declaration, definition, or references.
- Hover information for built-in rules and documented rules.
- Autocompletion of rule names.
- Inline and extract rules.
- Full-unicode support.
- Formatting.
- Update checking.
Please see the issues page to suggest features or view previous suggestions.
You can find documentation on how to set up the server for in the DOCS.md
file.
- Visual Studio Code
- VSCode has a pre-built extension that can compile, update, and start up the language server. It also includes syntax highlighting definitions.
- The extension is also available on OpenVSX
- Sublime Text
- Sublime Text packages can be obtained from the latest release
- Vim
- Vim support is provided via the pest.vim package.
- Zed
- Zed support is provided via the Zed Pest extension.
Due to the usage of the LSP by this project, adding support for new IDEs should be far more achievable than a custom implementation for each editor. Please see the tracking issue to request support for another IDE or view the current status of IDE support.
This repository uses a Taskfile; install the task
command for a better experience developing in this repository.
The task fmt-and-lint
can be used to check the formatting and lint your code
to ensure it fits with the rest of the repository.
In VSCode, press F5
to build and debug the VSCode extension. This is the only
method of debugging that we have pre set-up.
The server itself is implemented in Rust using tower-lsp
. It communicates with
editors via JSON-RPC through standard input/output, according to the language
server protocol.
We appreciate contributions! I recommend reaching out on Discord (the invite to which can be found at pest.rs) before contributing, to check with us.
- OsoHQ, for their blog post, and open source code which was used as inspiration.
- Stef Gijsberts for their Pest syntax highlighting TextMate bundle which is used in this extension under the MIT license.