功能
LSP 语言服务
使用 LSP 获取智能代码提示和诊断
什么是 LSP?
LSP(Language Server Protocol) 是微软开发的语言服务协议,用于在编辑器和语言服务器之间提供标准化的通信。
TalkCody 集成了 LSP 支持,为您提供专业 IDE 级别的代码智能功能,包括:
- 代码诊断:实时显示语法错误和警告
- 跳转到定义:快速导航到符号定义位置
- 查找引用:查看符号在代码中的所有使用位置
- 悬停信息:查看类型信息和文档
- 代码补全:智能代码自动完成
支持的语言
TalkCody 支持以下 7 种编程语言的 LSP 服务:
| 语言 | 语言服务器 | 支持的文件扩展名 |
|---|---|---|
| TypeScript | typescript-language-server | .ts, .tsx, .mts, .cts |
| JavaScript | typescript-language-server | .js, .jsx, .mjs, .cjs |
| Rust | rust-analyzer | .rs |
| Python | Pyright | .py, .pyi |
| Go | gopls | .go |
| C | clangd | .c, .h |
| C++ | clangd | .cpp, .cc, .cxx, .c++, .hpp, .hh, .hxx, .h++ |
TSX 和 JSX 文件会被正确识别为 React 组件,确保 LSP 服务器提供准确的类型检查和代码补全。
功能特性
代码诊断
LSP 会实时分析您的代码,在编辑器中显示错误和警告:
| 严重级别 | 说明 | 显示颜色 |
|---|---|---|
| Error | 语法错误、类型错误等 | 红色 |
| Warning | 潜在问题、弃用警告等 | 黄色 |
| Information | 信息提示 | 蓝色 |
| Hint | 代码建议 | 灰色 |
诊断信息会以波浪线的形式显示在代码下方,悬停可查看详细描述。
跳转到定义
在符号上点击或使用快捷键,可以快速跳转到该符号的定义位置。支持:
- 变量和常量定义
- 函数和方法定义
- 类和接口定义
- 类型别名定义
- 导入模块定义
查找引用
查看某个符号在整个项目中的所有使用位置,包括:
- 直接引用
- 导入语句
- 类型注解
- 声明位置
悬停信息
将鼠标悬停在符号上,可以查看:
- 类型信息
- 函数签名
- JSDoc/文档注释
- 参数说明
代码补全
输入代码时,LSP 提供智能补全建议:
- 变量和函数名
- 属性和方法
- 导入建议
- 代码片段
配置选项
启用/禁用 LSP
LSP 默认启用。如需禁用,可以在设置中关闭:
- 打开 设置
- 找到 LSP 部分
- 关闭 Enable LSP 开关
诊断显示设置
您可以自定义显示哪些级别的诊断信息:
| 设置项 | 默认值 | 说明 |
|---|---|---|
| Show Diagnostics | 开启 | 是否显示诊断信息 |
| Show Errors | 开启 | 显示错误级别诊断 |
| Show Warnings | 开启 | 显示警告级别诊断 |
| Show Info | 开启 | 显示信息级别诊断 |
| Show Hints | 关闭 | 显示提示级别诊断 |
如果您觉得诊断信息太多,可以关闭 Hints 和 Info 级别,只保留 Errors 和 Warnings。
自动安装
语言服务器自动下载
当您首次打开某种语言的文件时,TalkCody 会检查对应的语言服务器是否已安装:
- 已安装:自动启动语言服务器
- 未安装但可下载:显示下载提示,点击即可自动安装
- 需要手动安装:显示安装说明
下载过程中会显示进度条,完成后语言服务器会自动启动。
手动安装方法
如果自动下载失败,可以手动安装语言服务器:
TypeScript/JavaScript:
npm install -g typescript typescript-language-serverRust:
rustup component add rust-analyzerPython:
pip install pyright
# 或使用 npm
npm install -g pyrightGo:
go install golang.org/x/tools/gopls@latestC/C++:
# macOS
brew install llvm
# Ubuntu/Debian
sudo apt install clangd
# Windows
# 从 https://releases.llvm.org/ 下载安装工作区检测
TalkCody 会智能检测项目的工作区根目录,以便 LSP 服务器正确理解项目结构。
检测规则
不同语言使用不同的标识文件(按优先级顺序):
| 语言 | 根目录标识文件 |
|---|---|
| TypeScript | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock, tsconfig.json, package.json |
| JavaScript | package-lock.json, bun.lockb, bun.lock, pnpm-lock.yaml, yarn.lock, jsconfig.json, package.json |
| Rust | Cargo.toml, Cargo.lock |
| Python | pyproject.toml, setup.py, setup.cfg, requirements.txt, Pipfile, pyrightconfig.json |
| Go | go.work, go.mod, go.sum |
| C/C++ | compile_commands.json, compile_flags.txt, .clangd, CMakeLists.txt, Makefile |
支持添加新的语言吗?
目前支持的语言是预配置的。如果您需要其他语言的支持,可以在 GitHub Issues 提交功能请求。