LSP サーバー
Dropstone は LSP サーバーと統合します。
Dropstone は Language Server Protocol (LSP) と統合して、LLM がコードベースと対話するのを支援できます。診断を使用して LLM にフィードバックを提供します。
ビルトイン
Dropstone には、一般的な言語向けのいくつかのビルトイン LSP サーバーが付属しています:
| LSP サーバー | 拡張子 | 要件 |
|---|---|---|
| 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 (バージョン 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 が有効な場合、上記のファイル拡張子が検出され、要件が満たされるとサーバーが起動します。
仕組み
LSP が有効で dropstone がファイルを開くと、以下の処理が行われます:
- ファイル拡張子をすべての有効な LSP サーバーと照合します。
- 必要に応じて適切な LSP サーバーを起動します (まだ実行されていない場合)。
設定
dropstone 設定の lsp セクションを通じて LSP サーバーを有効にしてカスタマイズできます。
すべてのビルトイン LSP サーバーを有効にするには、lsp を true に設定します。
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
ビルトインを有効に保ちながらオーバーライドまたはカスタムサーバーを設定するには、オブジェクトを使用します。
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {}
}
設定された各 LSP サーバーエントリは、以下をサポートしています:
サーバーエントリは、サーバーを無効にするだけの場合を除き、command が必要です。
| プロパティ | 型 | 説明 |
|---|---|---|
disabled | boolean | LSP サーバーを無効にするには true に設定します |
command | string[] | LSP サーバーを起動するコマンド |
extensions | string[] | この LSP サーバーが処理するファイル拡張子 |
env | object | サーバー起動時に設定する環境変数 |
initialization | object | LSP サーバーに送信する初期化オプション |
いくつかの例を見てみましょう。
環境変数
env プロパティを使用して、LSP サーバー起動時に環境変数を設定します:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}
初期化オプション
initialization プロパティを使用して、初期化オプションを LSP サーバーに渡します。これらは LSP initialize リクエスト中に送信されるサーバー固有の設定です:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
Note:
初期化オプションは LSP サーバーによって異なります。利用可能なオプションについては、LSP サーバーのドキュメントを確認してください。
LSP サーバーの無効化
lsp が省略されている場合、すべての LSP サーバーが無効になります。別の設定で有効にされた後、すべての LSP サーバーを無効にするには、lsp を false に設定します:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": false
}
特定の LSP サーバーを無効にするには、disabled を true に設定します:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
カスタム LSP サーバー
コマンドとファイル拡張子を指定することで、カスタム LSP サーバーを追加できます:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
追加情報
PHP Intelephense
PHP Intelephense はライセンスキーを通じてプレミアム機能を提供しています。ライセンスキーを提供するには、以下の場所のテキストファイルに (キーのみを) 配置します:
- macOS/Linux:
$HOME/intelephense/license.txt - Windows:
%USERPROFILE%/intelephense/license.txt
ファイルには追加コンテンツなしでライセンスキーのみが含まれている必要があります。