lsp语言服务器
- pyright,python语言服务器
- gopls,golang语言服务器
- java language server(Red Hat)
- clangd
lsp语言服务器提供的服务
- 文档同步接口:文档的打开关闭修改事件监控
- 语言接口:代码补全,悬停提示,定义和引用,符号查询,重构,语法语义诊断,代码插和签名帮助
- 文件空间管理接口:代码地址管理
- 类层次和调用关系
- 语义标记接口
lsp服务器接入
以clangd为例,官方文档
https://clangd.llvm.org/
- textDocument/switchSourceHeader当前文件切换
- textDocument/clangd.fileStatus文件状态
- initializationOptions.compilationDatabasePath编译代码(clangd不直接编译,调用clang++编译代码)
- textDocument/symbolInfo符号信息
DAP服务器
- lldb
- gdb
- js-debug
- debugpy
- java-debug
- delve-dap
大多数dap服器没有restful接口,主流的dap通过以下两种方式传递数据
- cli命方式,通过子进程cout、cin重定向操作
- websocket或者rpc传输json、二进制数据