强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

LSP 开发指南

前言

Language Server Protocol(LSP)是现代编辑器与 IDE 生态的基石。它定义了一套标准的 JSON-RPC 通信协议,使得语言智能(代码补全、跳转定义、诊断信息等)可以与编辑器 UI 彻底解耦。只需编写一个 Language Server,就能在 VS Code、Neovim、Emacs、Sublime Text 等所有支持 LSP 的编辑器中获得一致的语言支持体验。

本教程共 15 章,覆盖从协议原理到工程实践的完整知识链:


目录

章节 标题 内容概要
01 LSP 概述 历史背景、设计动机、架构总览、生态现状
02 协议基础 JSON-RPC 2.0、消息格式、传输层
03 生命周期 初始化、能力协商、关闭、重连
04 文本同步 文档打开/关闭/变更/保存全链路
05 语言特性 补全、悬停、跳转定义、引用查找、签名帮助
06 诊断信息 错误/警告的发布与订阅机制
07 工作区管理 配置、文件事件、工作区符号
08 代码动作 Quick Fix、重构、Code Lens
09 代码格式化 全量格式化、范围格式化、保存时格式化
10 实现示例 TypeScript / Python / Go 实战
11 编辑器集成 VS Code、Neovim、Emacs 客户端配置
12 测试策略 协议测试、模拟客户端、集成测试
13 高级主题 自定义扩展、实验性功能、进度报告
14 Docker 开发 容器化开发环境与容器内 LSP
15 最佳实践 性能优化、错误处理、发布到生态

读者对象

  • 编辑器插件开发者:希望为新语言或已有语言构建 Language Server
  • IDE 工具链工程师:需要理解 LSP 协议以进行深度集成
  • 对编辑器架构感兴趣的开发者:想了解语言智能是如何与 UI 解耦的

环境准备

  • Node.js >= 18(TypeScript 示例)
  • Python >= 3.10(Python 示例)
  • Go >= 1.21(Go 示例)
  • VS Code / Neovim(用于测试)

阅读建议

建议按章节顺序阅读。如果已有 LSP 基础,可直接跳到感兴趣的主题。每章都包含:

  • 📖 核心概念讲解
  • 💻 可运行代码示例
  • 📊 对比表格与流程图
  • ⚠️ 常见陷阱与注意事项
  • 🔗 扩展阅读链接

约定:本教程中「Server」指 Language Server 进程,「Client」指编辑器侧的 LSP 客户端。协议术语使用英文原文,解释使用中文。