LSP Servers
OpenCode はお使いの LSP サーバーと連携します。
OpenCode は、LLM がコードベースとやり取りできるように、Language Server Protocol (LSP) と連携できます。診断情報を使って LLM にフィードバックを提供します。
Built-in
OpenCode には、人気のある言語向けの組み込み LSP サーバーがいくつか付属しています:
| LSP Server | Extensions | Requirements |
|---|---|---|
| astro | .astro | Astro プロジェクト向けに自動インストール |
| bash | .sh, .bash, .zsh, .ksh | bash-language-server を自動インストール |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | C/C++ プロジェクト向けに自動インストール |
| csharp | .cs, .csx | .NET SDK がインストール済み |
| clojure-lsp | .clj, .cljs, .cljc, .edn | clojure-lsp コマンドが利用可能 |
| dart | .dart | dart コマンドが利用可能 |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno コマンドが利用可能(deno.json/deno.jsonc を自動検出) |
| elixir-ls | .ex, .exs | elixir コマンドが利用可能 |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | プロジェクトに eslint 依存関係がある |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK がインストール済み |
| gleam | .gleam | gleam コマンドが利用可能 |
| gopls | .go | go コマンドが利用可能 |
| hls | .hs, .lhs | haskell-language-server-wrapper コマンドが利用可能 |
| jdtls | .java | Java SDK (version 21+) がインストール済み |
| julials | .jl | julia と LanguageServer.jl がインストール済み |
| kotlin-ls | .kt, .kts | Kotlin プロジェクト向けに自動インストール |
| lua-ls | .lua | Lua プロジェクト向けに自動インストール |
| nixd | .nix | nixd コマンドが利用可能 |
| ocaml-lsp | .ml, .mli | ocamllsp コマンドが利用可能 |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | プロジェクトに oxlint 依存関係がある |
| php intelephense | .php | PHP プロジェクト向けに自動インストール |
| prisma | .prisma | prisma コマンドが利用可能 |
| pyright | .py, .pyi | pyright 依存関係がインストール済み |
| razor | .razor, .cshtml | .NET SDK と VS Code の C# 拡張機能がインストール済み |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby と gem コマンドが利用可能 |
| rust | .rs | rust-analyzer コマンドが利用可能 |
| sourcekit-lsp | .swift, .objc, .objcpp | swift がインストール済み(macOS では xcode) |
| svelte | .svelte | Svelte プロジェクト向けに自動インストール |
| terraform | .tf, .tfvars | GitHub リリースから自動インストール |
| tinymist | .typ, .typc | GitHub リリースから自動インストール |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | プロジェクトに typescript 依存関係がある |
| vue | .vue | Vue プロジェクト向けに自動インストール |
| yaml-ls | .yaml, .yml | Red Hat の yaml-language-server を自動インストール |
| zls | .zig, .zon | zig コマンドが利用可能 |
LSP が有効になっている場合、上記のファイル拡張子のいずれかが検出され、要件が満たされると、サーバーが起動します。
注記:
OPENCODE_DISABLE_LSP_DOWNLOAD環境変数をtrueに設定すると、LSP サーバーの自動ダウンロードを無効にできます。
How It Works
LSP が有効になっていて opencode がファイルを開くと、opencode は次のことを行います:
- ファイル拡張子を、有効なすべての LSP サーバーと照合します。
- まだ実行されていない場合は、適切な LSP サーバーを起動します。
Configure
opencode 設定の lsp セクションを通じて、LSP サーバーを有効化・カスタマイズできます。
すべての組み込み LSP サーバーを有効にするには、lsp を true に設定します。
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}組み込みサーバーを有効にしたまま、オーバーライドやカスタムサーバーを設定するには、オブジェクトを使用します。
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}設定された各 LSP サーバーのエントリは、次の項目をサポートしています:
サーバーのみを無効化する場合を除き、サーバーのエントリには command が必要です。
| Property | Type | Description |
|---|---|---|
disabled | boolean | LSP サーバーを無効にするには true に設定します |
command | string[] | LSP サーバーを起動するためのコマンド |
extensions | string[] | この LSP サーバーが処理すべきファイル拡張子 |
env | object | サーバー起動時に設定する環境変数 |
initialization | object | LSP サーバーに送信する初期化オプション |
いくつか例を見てみましょう。
Environment variables
env プロパティを使って、LSP サーバーの起動時に環境変数を設定します:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}Initialization options
initialization プロパティを使って、LSP サーバーに初期化オプションを渡します。これらは LSP の initialize リクエスト中に送信される、サーバー固有の設定です:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}注記: 初期化オプションは LSP サーバーによって異なります。利用可能なオプションについては、お使いの LSP サーバーのドキュメントを確認してください。
Disabling LSP servers
lsp が省略されると、すべての LSP サーバーが無効になります。別の設定で有効になった後にすべての LSP サーバーを無効にするには、lsp を false に設定します:
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}特定の LSP サーバーを無効にするには、disabled を true に設定します:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}Custom LSP servers
コマンドとファイル拡張子を指定して、カスタム LSP サーバーを追加できます:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}Additional Information
PHP Intelephense
PHP Intelephense は、ライセンスキーを通じてプレミアム機能を提供します。次の場所のテキストファイルにキー(のみ)を配置することで、ライセンスキーを提供できます:
- macOS/Linux の場合:
$HOME/intelephense/license.txt - Windows の場合:
%USERPROFILE%/intelephense/license.txt
ファイルには、追加の内容を含めずライセンスキーのみを記載してください。