Building an LSP Server with Rust is surprisingly easy and fun
摘要
作者分享了使用 Rust 构建 LSP (Language Server Protocol) 服务器的实践经验,展示了如何创建自定义代码补全、文档编辑等功能。
核心内容
- LSP 协议基础: LSP 是一个 JSON-RPC 协议,定义了编辑器和语言服务器之间的通信方式
- 技术栈选择: 使用
tower-lsp-server(tower-lsp 的社区维护分支) - 最小化实现: 只需要实现两个必需方法 - initialize 和 shutdown
- 无服务器测试: 可以不启动服务器直接测试 LSP 服务
- 编辑器集成: 支持 Neovim、VS Code 等主流编辑器
亮点
- 代码可以编译为 WASM,甚至可以在浏览器中运行
- 可以实现自定义自动补全 (completion handler)
- 可以构建 AI 聊天机器人集成到编辑器中
- 可以作为 MCP 的替代方案
示例代码
use tower_lsp_server::{
LanguageServer, LspService,
ls_types::{InitializeParams, InitializeResult},
};
#[derive(Debug)]
struct Backend {}
impl LanguageServer for Backend {
// 只需要实现 initialize 和 shutdown
}
应用场景
- 创建自定义语言的 IDE 支持
- 在编辑器中集成 AI 助手
- 跨编辑器的代码分析工具
- 替代 MCP 的本地集成方案