はじめに
この記事では、 Copilot CLI (コパイロット CLI)用の LSP サーバーを追加する方法について説明します。 LSP サーバーの概念については、 LSP サーバーの使用 GitHub Copilot CLI(コマンドラインインターフェース) を参照してください。
Copilot CLI (コパイロット CLI)用の LSP サーバーの追加は、次の 2 つの手順で行います。
- ローカル コンピューターに LSP サーバー ソフトウェアをインストールします。
- 構成ファイルでサーバーを構成します。
これらの手順については、この記事で詳しく説明います。
LSP サーバーのインストールと構成
次のいずれかの方法で、特定の言語の LSP サーバーを追加できます。
- プロセスを自動化する
lsp-setupスキルを使用します。 - サーバー ソフトウェアを手動でインストールし、サーバーを使用するように Copilot CLI (コパイロット CLI) を構成する。
これら 2 つの方法については、以下のセクションで説明します。
`lsp-setup` スキルを使用して言語サーバーを追加する
"Awesome lsp-setup" リポジトリのGitHub Copilot スキルは、一般的な言語の選択のインストールと構成を自動化します。
-
"Awesome GitHub Copilot" ダウンロード サイトに移動し、"lsp" を検索します。
https://awesome-copilot.github.com/skills/?q=lsp。 -
`lsp-setup` スキルをダウンロードします。 -
ダウンロードした
.zipファイルを解凍して、lsp-setupという名前のディレクトリを作成します。 -
`lsp-setup` ディレクトリを次のいずれかに移動します。- 個人用スキル ディレクトリ:
~/.copilot/skills/。 - プロジェクト スキル ディレクトリ: Git リポジトリ内の
.github/skills/。
- 個人用スキル ディレクトリ:
-
Copilot CLI (コパイロット CLI)を開始するか、現在 CLI セッションに参加している場合は、「`/skills reload`」と入力します。 -
プロンプトを入力します。
Copilot prompt setup lsp
setup lsp -
画面の指示に従って、設定するサーバーの言語を選択し、追加の手順を完了します。
-
プロセスが完了したら、「
/lsp reload」と入力して、新しい LSP サーバーを読み込みます。 -
サーバーが追加され、正常に動作していることを確認します。 この記事 の後半で LSP サーバーが使用可能であることを確認 するを参照してください。
LSP サーバーの手動インストールと構成
特定の言語の LSP サーバーをインストールするには、通常、 npm、 gem、 pipなどのパッケージ マネージャーを使用してパッケージをインストールする必要があります。
LSP サーバーを手動でインストールするには、インストールする特定の言語サーバーのドキュメントを参照してください。 一般的な LSP サーバーをインストールするためのコマンドの例を次に示します。
メモ
さまざまな言語の LSP サーバーを見つけるのに役立つリソースを次に示します。 * Implementations は Microsoft の Language Server Protocol の Web サイトにあります。
- Arch Linux Web サイトの言語サーバー プロトコル。
注意事項
信頼できるソースからの LSP サーバーのみをインストールします。
インストール コマンドの例: TypeScript と JavaScript
Node.js インストールされている場合は、次のコマンドを使用して、 typescript-language-server LSP サーバーをインストールできます。
npm install -g typescript typescript-language-server
npm install -g typescript typescript-language-server
`typescript-language-server` LSP サーバーでは、TypeScript と JavaScript の両方がサポートされています。
インストール コマンドの例: Ruby
gem がインストールされている場合は、次のコマンドを使用して ruby-lsp LSP サーバーをインストールできます。
gem install ruby-lsp
gem install ruby-lsp
または、次のコマンドを使用して、Ruby 用の solargraph LSP サーバーをインストールすることもできます。
gem install solargraph
gem install solargraph
インストール コマンドの例: Python
Node.js インストールされている場合は、次のコマンドを使用して、 pyright LSP サーバーをインストールできます。
npm install -g pyright
npm install -g pyright
または、pip がインストールされている場合は、次のコマンドを使用して python-lsp-server LSP サーバーをインストールできます。
pip install python-lsp-server
pip install python-lsp-server
言語サーバーの構成
-
LSP サーバーを構成するには、次の 2 つの構成ファイルのいずれかにサーバー定義を追加します。
- ユーザー構成:
~/.copilot/lsp-config.jsonはすべてのプロジェクトに適用されます。 - Project構成: リポジトリ内の
.github/lsp.jsonは、そのprojectで作業しているすべてのユーザーに適用されます。
どちらのファイルも同じ JSON 構文を使用します。
{ "lspServers": { "SERVER-NAME": { "command": "COMMAND", "args": ["ARG1", "ARG2"], "fileExtensions": { ".EXT": "LANGUAGE-ID" } }, "ANOTHER-SERVER": { ... } } }特定の LSP サーバーのサーバー定義の例については、この記事の後半で説明します。
- ユーザー構成:
-
サーバーをインストールして構成した後、 Copilot CLI (コパイロット CLI) がサーバーを使用できることを確認します。 以下を参照し、LSPサーバーが使用可能であることを確認してください。
構成フィールド
構成ファイル内の各サーバー定義には一意の名前を付け、英数字、アンダースコア、ハイフンのみを含める必要があります。
各サーバー定義内では、次のフィールドを使用できます。必須です。
| フィールド | 必須 | 説明 |
|---|---|---|
command |
はい | LSP サーバーの起動に使用するコマンド。 |
args |
いいえ | コマンドに渡す引数。 |
fileExtensions |
はい | ファイル拡張子とそれに対応する言語 ID (たとえば、 { ".rs": "rust" }) の JSON マップ。 |
env |
いいえ | サーバーの起動時に設定する環境変数。
${VAR}および${VAR:-default}展開構文をサポートします。 |
rootUri |
いいえ | Git ルートを基準とした LSP サーバーのルート ディレクトリ。 既定値は "." です。 monorepos に便利です。 プロジェクトがリポジトリ ルートではなく Git リポジトリのサブディレクトリに存在する場合は、 rootUri そのサブディレクトリ パスに設定します。 |
initializationOptions |
いいえ | 起動時にサーバーに送信されるカスタム オプション。 |
requestTimeoutMs |
いいえ | サーバー要求のタイムアウトはミリ秒単位です (既定: 90 秒)。 |
サーバー定義の例: LSP サーバーtypescript-language-server
{
"lspServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact",
".mjs": "javascript",
".cjs": "javascript",
".mts": "typescript",
".cts": "typescript"
}
}
}
}
{
"lspServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact",
".mjs": "javascript",
".cjs": "javascript",
".mts": "typescript",
".cts": "typescript"
}
}
}
}
サーバー定義の例: LSP サーバーruby-lsp
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
サーバー定義の例: Pythonの pyright LSP サーバー
{
"lspServers": {
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python",
".pyw": "python",
".pyi": "python"
}
}
}
}
{
"lspServers": {
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python",
".pyw": "python",
".pyi": "python"
}
}
}
}
`/lsp` コマンドを使用した言語サーバーの管理
`/lsp`スラッシュ コマンドを使用して、対話型 CLI セッションで LSP サーバーを一覧表示および管理できます。
| スラッシュ コマンド | 説明 |
|---|---|
/lsp または /lsp show | 構成されているすべての LSP サーバーの状態を表示します。 |
/lsp test SERVER-NAME | サーバーが正しく起動するかどうかをテストします。 |
/lsp reload | ディスクから LSP 構成を再読み込みします。 |
/lsp help |
`/lsp` コマンド情報を表示します。 |
使用可能な LSP サーバーの一覧表示
-
Copilot CLI (コパイロット CLI)で、`/lsp`スラッシュ コマンドを使用して、選択した LSP サーバーが使用可能であることを確認します。 次のような出力が表示されます。● LSP Server Status: User-configured servers: • ruby: ruby-lsp (.rb, .rbw, .rake, .gemspec) • omnisharp: omnisharp (.cs) User config: /Users/username/.copilot/lsp-config.json
LSP サーバーが使用可能であることを確認する
-
LSP サーバーを追加して構成した後、 Copilot CLI (コパイロット CLI)を開始 (または再起動) します。
-
スラッシュ コマンド
/lsp test SERVER-NAME使用して、LSP サーバーが正常に動作していることを確認します。Copilot CLI (コパイロット CLI) は、サーバーの一時的なスタンドアロン インスタンスの起動を試み、成功したかどうか、またはエラーが発生したかどうかを報告します。 その後、一時サーバー プロセスが強制終了されます。