简体中文
每个示例都是可以运行的 stdio 语言服务器。解析器刻意保持简单,方便你把注意力放在协议交互上。
运行示例
console
cargo run -p lspf --example hover进程会等待来自标准输入的 LSP 客户端。在本仓库的 VS Code 中运行 Run LSP example client (select example),可以启动连接到所选示例的 Extension Development Host。
所有示例都把日志写入 stderr,因为 stdout 承载 LSP 线路协议。RUST_LOG 用于选择事件;RUST_LOG=lspf=trace 会启用完整框架跟踪。LSPF_LOG_FORMAT=json 会让每行包含一个机器可读事件,其他值则输出纯文本。
语言功能
| 示例 | 演示内容 |
|---|---|
code_actions | 代码操作 |
code_lens | Code Lens、resolve、命令和工作区编辑 |
colors | 文档颜色与颜色表示 |
formatting | 文档、范围和输入时格式化 |
goto | 声明、定义、实现、类型定义和引用跳转 |
hover | 基于同步文档文本生成悬停信息 |
inlay_hints | Inlay Hint 与 resolve |
links | 文档链接与 resolve |
publish_diagnostics | 从文档钩子推送诊断 |
pull_diagnostics | 文档与工作区拉取式诊断 |
rename | 重命名准备与重命名 |
semantic_tokens | 完整、增量和范围语义令牌 |
symbols | 文档与工作区符号 |
框架行为
| 示例 | 演示内容 |
|---|---|
server_features | 命令、进度、配置、异步工作和动态注册 |
blocking_work | 避免让阻塞工作占用异步执行器线程 |
传输示例
不同传输示例复用相同的处理器,因此应用逻辑不随宿主改变:
console
cargo check -p lspf --example native_tcp --no-default-features --features tcp
cargo check -p lspf --example native_websocket --no-default-features --features websocket在 VS Code 中运行 Run LSP example client over a socket (select transport) 并选择 tcp 或 websocket,即可启动示例,并让编辑器自己的语言客户端连接到它。Zed 通过 stdio 启动语言服务器,无法连接这些套接字示例。
如需无人值守检查两个适配器,请运行:
console
node tools/lsp-transport-probe/main.mjs both传输指南介绍原生套接字以及浏览器或 Node Worker,其中包含构建和宿主命令。