Crate auto_lsp

Crate auto_lsp 

Source
Expand description

Auto LSP

A Rust crate for creating Abstract Syntax Trees (AST) and Language Server Protocol (LSP) servers powered by Tree-sitter

CI Status CI Status Book crates.io Rust Version

auto_lsp is a generic library for creating Abstract Syntax Trees (AST) and Language Server Protocol (LSP) servers.//!

It leverages crates such as lsp_types, lsp_server, salsa, and texter, and generates the AST of a Tree-sitter language to simplify building LSP servers.

auto_lsp provides useful abstractions while remaining flexible. You can override the default database as well as all LSP request and notification handlers.

It is designed to be as language-agnostic as possible, allowing any Tree-sitter grammar to be used.

See ARCHITECTURE.md for more information.

§✨ Features

  • Generates a thread-safe, immutable and iterable AST with parent-child relations from a Tree-sitter language.
  • Supports downcasting of AST nodes to concrete types.
  • Integrates with a Salsa database and parallelize LSP requests and notifications.

§📚 Documentation

§Examples

§Cargo Features

  • lsp_server: Enables the LSP server (uses lsp_server).
  • wasm: Enables wasm support (only compatible with wasi-p1-threads).

§Inspirations / Similar projects

Re-exports§

pub use anyhow;
pub use lsp_server;
pub use lsp_types;
pub use salsa;
pub use texter;
pub use tree_sitter;

Modules§

core
Re-export of the auto_lsp_core crate
default
server

Macros§

configure_parsers
Create the parsers with any given language.
define_semantic_token_modifiers
Define the standard and custom semantic token modifiers.
define_semantic_token_types
Define the standard and custom semantic token types.