其他编辑器
cha lsp 是标准 stdio LSP server。任何支持自定义 LSP 服务器的编辑器都能接。下面给最小可用配置——细节查各自编辑器文档。
要让服务器接管的文件类型:rust / typescript / typescriptreact / python / go / c / cpp。
Neovim(nvim-lspconfig)
local lspconfig = require('lspconfig')
local configs = require('lspconfig.configs')
if not configs.cha then
configs.cha = {
default_config = {
cmd = { 'cha', 'lsp' },
filetypes = { 'rust', 'typescript', 'typescriptreact', 'python', 'go', 'c', 'cpp' },
root_dir = lspconfig.util.root_pattern('.cha.toml', '.git'),
single_file_support = false,
},
}
end
lspconfig.cha.setup {}
跟你的语言 LSP 同时挂着用——Neovim 会合并多个 server 的诊断。
Helix(languages.toml)
[language-server.cha]
command = "cha"
args = ["lsp"]
[[language]]
name = "rust"
language-servers = ["rust-analyzer", "cha"]
[[language]]
name = "typescript"
language-servers = ["typescript-language-server", "cha"]
# 同样模式扩到 python / go / c / cpp;tsx 文件 Helix 用 "tsx" 这个 name
放 ~/.config/helix/languages.toml。
Zed
Zed 用扩展系统管 LSP,最简单的是项目级配置 .zed/settings.json:
{
"lsp": {
"cha": {
"binary": { "path": "cha", "arguments": ["lsp"] }
}
},
"languages": {
"Rust": { "language_servers": ["rust-analyzer", "cha"] },
"TypeScript": { "language_servers": ["typescript-language-server", "cha"] },
"Python": { "language_servers": ["pyright", "cha"] },
"Go": { "language_servers": ["gopls", "cha"] },
"C": { "language_servers": ["clangd", "cha"] },
"C++": { "language_servers": ["clangd", "cha"] }
}
}
完整 schema 见 Zed 文档。
Sublime Text(LSP 插件)
先装 LSP 插件,然后改 LSP.sublime-settings:
{
"clients": {
"cha": {
"enabled": true,
"command": ["cha", "lsp"],
"selector": "source.rust | source.ts | source.tsx | source.python | source.go | source.c | source.c++"
}
}
}
selector 语法 + per-window 覆盖见 LSP 插件文档。
验证连上了
打开支持的文件,故意改超阈值(比如 60+ 行函数触发 long_method 默认 50 阈值),保存——应该出诊断。
如果编辑器里没出但 cha analyze CLI 能报,问题在 LSP 客户端配置——server 跟 cha 都好的,是编辑器没把 server 的诊断接到 UI 上。