跳到內容

LSP服務器

opencode 與您的 LSP 服務器集成。

opencode 與您的語言服務器協議 (LSP) 集成,以幫助 LLM 與您的程式碼庫交互。它使用診斷向LLM提供反饋。


內建

opencode 附帶了多種適用於流行語言的內置 LSP 服務器:

LSP服務器擴展要求
天文.astroAstro 項目自動安裝
bash.sh、.bash、.zsh、.ksh自動安裝 bash-語言-服務器
叮叮.c、.cpp、.cc、.cxx、.c++、.h、.hpp、.hh、.hxx、.h++自動安裝 C/C++ 項目
夏普.cs.NET SDK 已安裝
Clojure-lsp語言.clj、.cljs、.cljc、.ednclojure-lsp 命令可用
飛鏢.dartdart 命令可用
給定.ts、.tsx、.js、.jsx、.mjsdeno 命令可用(自動檢測 deno.json/deno.jsonc)
長生不老藥-LS.ex、.exselixir 命令可用
埃斯林特.ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vueeslint 項目中的依賴項
銳利.fs、.fsi、.fsx、.fsscript.NET SDK 已安裝
微光.gleamgleam 命令可用
伙計們.gogo 命令可用
HLS.hs、.lhshaskell-language-server-wrapper 命令可用
jdtls.javaJava SDK (version 21+) 已安裝
kotlin-ls.kt、.ktsKotlin 項目的自動安裝
lua-ls.lua自動安裝 Lua 項目
尼克斯.nixnixd 命令可用
ocaml-lsp.ml、.mliocamllsp 命令可用
ocx林特.ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.cts、.vue、.astro、.svelteoxlint 項目中的依賴項
php intelephensephp .phpPHP 項目的自動安裝
棱鏡.prismaprisma 命令可用
皮賴特.py, .pyipyright 依賴項已安裝
ruby-lsp(rubocop).rb、.rake、.gemspec、.rurubygem 命令可用
生鏽.rsrust-analyzer 命令可用
源套件-lsp.swift、.objc、.objcppswift 已安裝(xcode 在 macOS 上)
苗條.svelteSvelte 項目的自動安裝
地形.tf、.tfvars從 GitHub 版本自動安裝
微霧.typ、.typc從 GitHub 版本自動安裝
打字稿.ts、.tsx、.js、.jsx、.mjs、.cjs、.mts、.ctstypescript 項目中的依賴項
視圖.vueVue 項目自動安裝
yaml-ls.yaml、.yml自動安裝 Red Hat yaml-language-server
中立.zig、.zonzig 命令可用

當檢測到上述文件擴展名之一併且滿足要求時,LSP 服務器將自動啟用。


它是如何運作的

當 opencode 打開一個文件時,它:

  1. 根據所有啟用的 LSP 服務器檢查文件擴展名。
  2. 如果尚未運行,則啟動相應的 LSP 服務器。

配置

您可以通過 opencode 配置中的 lsp 部分自定義 LSP 服務器。

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}

每個LSP服務器支持以下功能:

物業類型描述
disabled布爾將其設置為true 以禁用LSP 服務器
command字符串[]啟動LSP服務器的命令
extensions字符串[]此 LSP 服務器應處理的文件擴展名
env對象啟動服務器時設置的環境變量
initialization對象發送到LSP服務器的初始化選項

讓我們看一些例子。


環境變量

啟動LSP服務器時使用env屬性設置環境變量:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}

初始化選項

使用initialization 屬性將初始化選項傳遞給LSP 服務器。這些是在 LSP initialize 請求期間發送的服務器特定設置:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}

禁用LSP服務器

要全局禁用所有 LSP 服務器,請將lsp 設置為false

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}

要禁用特定 LSP 服務器,請將disabled 設置為true

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}

自定義 LSP 服務器

您可以通過指定命令和文件擴展名來添加自定義 LSP 服務器:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}

附加信息

PHP 英特爾芬斯

PHP Intelephense 通過許可證密鑰提供高級功能。您可以通過將(僅)密鑰放入位於以下位置的文本文件中來提供許可證密鑰:

  • 在 macOS/Linux 上:$HOME/intelephense/license.txt
  • 在 Windows 上:%USERPROFILE%/intelephense/license.txt

該文件應僅包含許可證密鑰,不包含其他內容。