1 个不稳定版本
0.1.0 | 2024年3月30日 |
---|
#1671 in 开发工具
23KB
486 代码行
lsp-rs
lsp-rs
是一个Rust库,旨在简化与语言服务器协议(LSP)服务器的通信。它提供了一个异步客户端,用于根据LSP规范发送和接收消息,使得将LSP功能集成到Rust应用程序中变得更加容易。
功能
- 支持与LSP服务器建立TCP和Unix域套接字连接。
- LSP请求和响应的序列化和反序列化。
- 包含常用的LSP消息结构,如
Initialize
、Notification
和Response
。 - 支持跳转到定义。
安装
将lsp-rs
添加到您的Cargo.toml
[dependencies]
lsp-rs = "0.1.0"
用法
以下是一个使用lsp-rs初始化与LSP服务器的连接并发送初始化请求的基本示例
use lsp_rs::{LspClient, RequestMessage};
use tokio::runtime::Runtime;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let rt = Runtime::new()?;
rt.block_on(async {
let mut client = LspClient::new("tcp:127.0.0.1:8080").await?;
let initialize_request = RequestMessage::new_initialize(
1, // Request ID
std::process::id(),
"file:///path/to/workspace".into(),
"MyLSPClient".into(),
"1.0".into(),
vec![], // Workspace folders
);
client.send_request(initialize_request).await?;
let response = client.handle_response().await?;
println!("Received response: {:?}", response);
Ok(())
})
}
限制
- 我仅测试了它与gopls一起使用。
- 目前,lsp-rs支持LSP规范的一部分。可能需要根据您的需求实现额外的请求和响应类型。
- 该库旨在用于基本的LSP交互;涉及高级LSP功能的复杂工作流尚未支持。
未来工作
- 实现LSP请求和响应的全部范围。
- 增强错误处理和日志记录,以实现更好的调试和可靠性。
- 添加对更复杂的LSP功能的支持,如增量同步和工作空间更新。
- 添加通知处理。
依赖
~3–10MB
~96K SLoC