Skip to content

filiptibell/async-language-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

async-language-server

A higher-level abstraction on top of async-lsp with good defaults and a streamlined integration with tokio for stdio / tcp transports.

Designed specifically for making language servers with less boilerplate and handling of text documents. More specifically, this crate:

  • Uses the excellent ropey library for fast incremental document updates.
  • Automatically negotiates encoding, supporting any of UTF-8, UTF-16, and UTF-32.
  • Transparently changes encoding of requests & responses to & from UTF-8.

Additional Features

Just like how incremental text content updates are handled automatically when using this crate, an optional tree-sitter cargo feature is also provided, and uses the same, fast incremental updates to update arbitrary tree-sitter syntax trees when text document contents are updated.

With the tree-sitter cargo feature enabled, each document may be associated with its own parser, allowing a language-per-document architecture for language servers that work with multiple languages.

Stability Guarantees

This crate is a personal project of mine, to make small language servers that I want to have, easier to write. It is not generally intended for public consumption, and will not be published to crates.io.

It is however generally stable, so feel free to use it at your own risk, either by:

  • Specifying it as a git dependency
  • Forking this repository

About

Boilerplate-free language servers in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages