Dropstone Docs

LSP サーバー

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

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


ビルトイン

Dropstone には、一般的な言語向けのいくつかのビルトイン 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, .csx.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+) がインストール済み
julials.jljuliaLanguageServer.jl がインストール済み
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 依存関係がインストール済み
razor.razor, .cshtml.NET SDK と VS Code C# 拡張機能がインストール済み
ruby-lsp (rubocop).rb, .rake, .gemspec, .rurubygem コマンドが利用可能
rust.rsrust-analyzer コマンドが利用可能
sourcekit-lsp.swift, .objc, .objcppswift がインストール済み (macOS では xcode)
svelte.svelteSvelte プロジェクト向けに自動インストール
terraform.tf, .tfvarsGitHub リリースから自動インストール
tinymist.typ, .typcGitHub リリースから自動インストール
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsプロジェクトに typescript 依存関係がある
vue.vueVue プロジェクト向けに自動インストール
yaml-ls.yaml, .ymlRed Hat yaml-language-server を自動インストール
zls.zig, .zonzig コマンドが利用可能

LSP が有効な場合、上記のファイル拡張子が検出され、要件が満たされるとサーバーが起動します。


仕組み

LSP が有効で dropstone がファイルを開くと、以下の処理が行われます:

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

設定

dropstone 設定の lsp セクションを通じて LSP サーバーを有効にしてカスタマイズできます。

すべてのビルトイン LSP サーバーを有効にするには、lsptrue に設定します。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

ビルトインを有効に保ちながらオーバーライドまたはカスタムサーバーを設定するには、オブジェクトを使用します。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {}
}

設定された各 LSP サーバーエントリは、以下をサポートしています:

サーバーエントリは、サーバーを無効にするだけの場合を除き、command が必要です。

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

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


環境変数

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 サーバーを無効にするには、lspfalse に設定します:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": false
}

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

{
  "$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

ファイルには追加コンテンツなしでライセンスキーのみが含まれている必要があります。

Ctrl+I