auto-lsp-0.1.0 has been yanked.
Auto LSP
A Rust crate for creating Abstract Syntax Trees (AST) and Language Server Protocol (LSP) servers.
auto_lsp is designed to be as language-agnostic as possible, allowing any Tree-sitter grammar to be used.
Defining a simple AST involves two steps: writing the queries and then defining the corresponding AST structures in Rust.
Quick example
Let's say you have a toy language with a root node named document containing a list of function nodes, each containing a unique name.
A simple query file to capture the root document and function names:
@document
@function
The corresponding AST definition in Rust:
# use *;
# use seq;
Now that you have your AST defined, you can:
- Implement the LSP traits and create a LSP server (with the
lsp_serverfeature). - Add your own logic for testing purposes, code_generation, etc.
You can find more examples in the tests folder.
Features
assertions: Enable compile-time checks for conflicting queries.deadlock_detection: Enable [parking_lot]'s deadlock detection (not compatible withwasm).log: Enable logging. (uses [stderrlog])lsp_server: Enable the LSP server (uses [lsp_server]).python_test: Enable the python workspace mock for testing purposes.rayon: Enable [rayon] support (not compatible withwasm).wasm: Enable wasm support.