日本語
ドキュメント
LSPサーバー

LSP サーバー

OpenCode は LSP サーバーと統合します。

OpenCode は Language Server Protocol(LSP)と統合し、LLM がコードベースと対話するのを支援します。診断情報を使用して LLM にフィードバックを提供します。

組み込みサポート

OpenCode には、人気のある言語向けの組み込み LSP サーバーが含まれています:

LSP サーバー拡張子要件
astro.astroAstro プロジェクトで自動インストール
bash.sh, .bash, .zsh, .kshbash-language-server を自動インストール
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++C/C++ プロジェクトで自動インストール
csharp.cs.NET SDK がインストールされていること
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp コマンドが利用可能
dart.dartdart コマンドが利用可能
deno.ts, .tsx, .js, .jsx, .mjsdeno コマンドが利用可能(deno.json/deno.jsonc を自動検出)
elixir-ls.ex, .exselixir コマンドが利用可能
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueプロジェクトに eslint 依存関係
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK がインストールされていること
gleam.gleamgleam コマンドが利用可能
gopls.gogo コマンドが利用可能
hls.hs, .lhshaskell-language-server-wrapper コマンドが利用可能
jdtls.javaJava SDK(バージョン 21 以上) がインストールされていること
kotlin-ls.kt, .ktsKotlin プロジェクトで自動インストール
lua-ls.luaLua プロジェクトで自動インストール
nixd.nixnixd コマンドが利用可能
ocaml-lsp.ml, .mliocamllsp コマンドが利用可能
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteプロジェクトに oxlint 依存関係
php intelephense.phpPHP プロジェクトで自動インストール
prisma.prismaprisma コマンドが利用可能
pyright.py, .pyipyright 依存関係がインストールされていること
ruby-lsp (rubocop).rb, .rake, .gemspec, .rurubygem コマンドが利用可能
rust.rsrust-analyzer コマンドが利用可能
sourcekit-lsp.swift, .objc, .objcppswift がインストールされていること(macOS では xcode
svelte.svelteSvelte プロジェクトで自動インストール
terraform.tf, .tfvarsGitHub releases から自動インストール
tinymist.typ, .typcGitHub releases から自動インストール
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsプロジェクトに typescript 依存関係
vue.vueVue プロジェクトで自動インストール
yaml-ls.yaml, .ymlRed Hat yaml-language-server を自動インストール
zls.zig, .zonzig コマンドが利用可能

上記のファイル拡張子が検出され、要件が満たされると、LSP サーバーは自動的に有効になります。

注意: OPENCODE_DISABLE_LSP_DOWNLOAD 環境変数を true に設定することで、LSP サーバーの自動ダウンロードを無効にできます。

動作の仕組み

opencode がファイルを開くと:

  1. ファイル拡張子を有効なすべての LSP サーバーと照合します。
  2. まだ実行されていない場合、適切な LSP サーバーを起動します。

設定

opencode 設定の lsp セクションで LSP サーバーをカスタマイズできます。

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

各 LSP サーバーは以下をサポートしています:

プロパティ説明
disabledbooleantrue に設定して LSP サーバーを無効化
commandstring[]LSP サーバーを起動するコマンド
extensionsstring[]この LSP サーバーが処理するファイル拡張子
envobjectサーバー起動時に設定する環境変数
initializationobjectLSP サーバーに送信する初期化オプション

いくつかの例を見てみましょう。

環境変数

env プロパティを使用して、LSP サーバー起動時に環境変数を設定:

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 サーバーの無効化

すべての LSP サーバーをグローバルに無効にするには、lspfalse に設定:

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

特定の LSP サーバーを無効にするには、disabledtrue に設定:

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 Intelephense

PHP Intelephense はライセンスキーでプレミアム機能を提供しています。ライセンスキーを以下の場所のテキストファイルに配置できます(キーのみを含む):

  • macOS/Linux:$HOME/intelephense/licence.txt
  • Windows:%USERPROFILE%/intelephense/licence.txt

ファイルにはライセンスキーのみを含め、他のコンテンツは含めないでください。