以下の内容はhttps://syu-m-5151.hatenablog.com/entry/2025/02/11/183337より取得しました。


Neovimで始めるGitHub Copilot - copilot.lua による Language Server の設定方法

github.blog

この設定は一時的なものであり、LSPのインストーラーが対応したらそちらで対応してください。

github.com

はじめに

2025年2月10日、GitHubCopilot Language Server SDKを公開しました。これは、エディタやIDEがLanguage Server Protocol(LSP)を通じてGitHub Copilotと連携できるものです。

このリリースは、開発者がより柔軟にCopilotを利用できるようになる重要な一歩です。今までGitHub CopilotはVS CodeVisual Studio、JetBrains IDEs、Vim/Neovim、そして最近ではXcodeでも利用可能でしたが、これらのエディタすべてがCopilot Language Serverを使用して実装されていました。GitHubは開発者の選択肢を重視し、好みのエディタでCopilotを使用できるようにすることを目指しているみたいです。

Copilotの進化

NeovimでのCopilot利用は、以前はgithub/copilot.vimを通じて行われていました。このVimscriptベースのプラグインは、多くの開発者に利用されてきた公式の実装です。その後、Lua APIを活用したzbirenbaum/copilot.luaが登場しましたが、これも内部的にはcopilot.vimを通じてGitHub Copilotと通信を行っていました。

このアーキテクチャでは、copilot.luaがNeovimのモダンなLua APIを活用した柔軟なインターフェースを提供し、バックエンドではcopilot.vimが実際のCopilotサービスとの通信を担当するという二層構造になっていました。

そして今回のLanguage Server SDKの公開により、エディタとCopilotの連携方法が標準化され、直接Language Server Protocolを介してCopilotと通信できるようになりました。これにより、中間レイヤーが不要になり、より効率的で安定した実装が可能になりました。

前提条件

インストール手順

1. Copilot Language Serverのインストール

まず、Neovimの設定ディレクトリにCopilot用のディレクトリを作成し、Language Serverをインストールします。

# Copilot用ディレクトリの作成
mkdir -p ~/.config/nvim/copilot/

# Language Serverのインストール
npm install @github/copilot-language-server -g --prefix ~/.config/nvim/copilot/

# 実行権限の付与
chmod +x ~/.config/nvim/copilot/bin/copilot-language-server

2. Neovimプラグインのインストール

lazy.nvimを使用している場合、以下の設定を~/.config/nvim/lua/plugins/copilot.luaに追加します。

return {
  "zbirenbaum/copilot.lua",
  lazy = false,
  priority = 1000,
  config = function()
    require("copilot").setup {
      suggestion = { enabled = false },
      panel = { enabled = false },
      server_opts_overrides = {
        trace = "verbose",
        cmd = {
          vim.fn.expand("~/.config/nvim/copilot/bin/copilot-language-server"),
          "--stdio"
        },
        settings = {
          advanced = {
            listCount = 10,
            inlineSuggestCount = 3,
          },
        },
      },
      filetypes = {
        yaml = true,
        markdown = true,
        help = false,
        gitcommit = true,
        gitrebase = true,
        hgcommit = false,
        svn = false,
        cvs = false,
        ["."] = false,
        ["*"] = true,
      },
    }
  end,
}

3. 認証設定

Neovimを起動後、以下のコマンドで認証を行います。

:Copilot auth

ブラウザが開き、GitHubアカウントでの認証が求められます。認証が完了すると、Copilotが使用可能になります。

設定の説明

設定の主要なポイントを解説します。この設定は私の設定ファイルなので自由に設定してください。

  1. suggestionpanel

    • enabled = false: デフォルトのサジェスト機能を無効化しています
  2. server_opts_overrides

    • cmd: インストールしたLanguage Serverのパスと起動オプションを指定
      • vim.fn.expand("~/.config/nvim/copilot/bin/copilot-language-server"): Language Serverの実行ファイルのパスを指定。vim.fn.expand()関数を使用して~をホームディレクトリに展開
      • "--stdio": Language Serverが標準入出力(stdio)を使用してNeovimと通信することを指定するオプション
    • settings.advanced: - settings.advanced:
      • listCount: 候補の表示数(10個)
      • inlineSuggestCount: インラインサジェストの数(3個)
  3. filetypes

    • 各ファイルタイプでのCopilotの有効/無効を設定
    • ["*"] = true: デフォルトですべてのファイルタイプで有効

トラブルシューティング

  1. Language Serverが見つからない場合 Error: Language server is not installed or not executable

    • パスが正しいか確認
    • 実行権限が付与されているか確認
    • chmod +xコマンドで実行権限を付与
  2. 認証エラーの場合

まとめ

GitHub Copilot Language Server SDKの公開により、Neovimでより直接的にCopilotを利用できるようになりました。これまでのcopilot.vimを経由する方式から、直接Language Server Protocolを使用する方式への移行により、より効率的で保守性の高い実装が可能になりました。

新しいSDKnpmjs.comで公開されており、誰でも利用可能です。この変更により、エディタ開発者はより簡単にCopilotを統合でき、ユーザーはより安定した開発体験を得られるようになります。

また、この方法は本来であれば不要でありlspconfigにコントリビューションすればよい()。

github.com

参考リンク




以上の内容はhttps://syu-m-5151.hatenablog.com/entry/2025/02/11/183337より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14