一个用于构建语言服务器的 SDK,实现了 LSP(语言服务器协议)3.18 版本。
基础协议消息模型库,定义了 LSP 通信的基础消息结构。
BaseProtocolHeader- 消息头解析,包含 Content-Length 和 Content-Type 等头部信息BaseProtocolMessage- 消息体封装,包含头部和二进制正文数据
基础协议服务器实现,基于 System.IO.Pipelines 构建,负责底层消息的读写处理。
- 使用
PipeReader和PipeWriter进行高性能流式 I/O - 通过
Channel实现异步消息队列,支持非阻塞发送 - 自动处理消息分帧(framing),包括头部解析和正文读取
JSON-RPC 2.0 协议数据模型,定义了协议规范中所有核心类型。
JsonRpcRequest- 请求对象,支持普通请求和通知(Notification)JsonRpcResponse- 响应对象,支持成功和错误响应JsonRpcError/JsonRpcErrorCode- 错误定义,包含标准错误码JsonRpcParams- 参数封装,支持位置参数和命名参数JsonRpcBatch- 批量请求支持
JSON-RPC 服务器实现,提供方法注册和请求分发机制。
- 支持方法处理器的注册和注销
- 自动解析 JSON-RPC 消息并分发到对应的处理器
- 支持批量请求处理
- 提供
IServiceProvider依赖注入集成 - 内置错误处理和异常转换
LSP 协议数据模型,基于 Language Server Protocol 3.18 规范定义的类型系统。
包含以下模块:
TextDocument- 文本文档相关类型(打开、关闭、同步等)Completion- 代码补全功能Symbols- 符号定义和引用Diagnostics- 诊断信息Workspace- 工作区管理Window- 窗口相关通知Progress- 进度报告Notebook- Notebook 支持Features- LSP 功能特性定义General- 通用类型(初始化、能力协商等)ClientCapabilities- 客户端能力声明
LSP 服务器实现,基于 JSON-RPC 服务器和基础协议服务器构建,提供语言服务器协议的核心处理能力。
- 通过
LanguageServer类作为JsonRpcServer/BaseProtocolServer之间的调度器进行集成 - 处理 LSP 生命周期(
initialize、shutdown、exit) - 支持客户端请求取消(
$/cancelRequest),为每个请求提供独立的CancellationToken - 支持以委托注册方法处理器,自动将
params绑定到参数(按位置或按名称) - 提供类型安全的外发请求 / 通知(
SendRequestAsync、SendNotification等) - 内置工作区进度上报(
WorkDoneProgress、$/progress) - 支持
$/setTrace追踪级别变更通知
参见 LICENSE 文件。