2024年12月19日木曜日

emacs に copilot.el をインストールする方法

emacs に copilot.el をインストールする方法

概要

copilot が無料になって誰でも使えるようになったので emacs の設定をしました

環境

  • macOS 15.2
  • emacs 29.4
  • node 20.17.0

準備

  • node のインストール
    • nvm でローカルだけ使えるようにしてそこで emacs を起動しても OK
  • editorconfig、jsonrpc のインストール
    • package-list-packages などで melpa からインストールすれば OK

copilot.el のインストール

最初に straight.el をインストールしています
そのあとで copilot.el をインストールしています
初回起動時はいろいろと clone するので少し時間がかかります

; for copilot (with straight)
(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name
        "straight/repos/straight.el/bootstrap.el"
        (or (bound-and-true-p straight-base-dir)
            user-emacs-directory)))
      (bootstrap-version 7))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

(use-package copilot
  :straight (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))
  :ensure t)

copilot サーバのインストール

M-x copilot-install-server で node が起動しサーバのインストールと起動が始まります

node で書かれておりバックグラウンドで npm が起動し copilot-node-server がインストールされます
執筆時点ではバージョンは 1.27.0 でした

copilot-install-server というバッファに「Comint finished at Thu Dec 19 14:44:17」という感じで表示されれば OK です

copilot へのログイン

M-x copilot-login を実行します

  • ワンタイムコードが発行されるのでコピーします
  • https://github.com/login/device にアクセスします、アクセスするブラウザは copilot を使う Github アカウントでログインしているブラウザを使います
  • コピーしたコードを入力し認証します

下のような画面が表示されればあとは許可すれば OK です

emacs 側には「Authenticated as GitHub user username.」と表示されれば OK です

使ってみる

適当に Python ファイルなどを開いてみましょう
M-x copilot-mode で起動します
自動で copilot-mode にする場合は以下を追加します

(add-to-list 'copilot-major-mode-alist '("python" . "python"))

上記がうまく動作しない場合は以下でも OK です

(add-hook 'python-mode-hook 'copilot-mode)

copilot によって補完された候補を入力するには M-x copilot-accept-completion を実行します
これをショートカットキーに登録しておいてもいいかなと思います

うまく補完してくれない場合には M-x copilot-diagnose を実行して copilot events バッファにエラーログが出ていないか確認しましょう

最後に

emacs + copilot の設定をしてみました
無料だと制限があるのでそのうち制限に引っかかって使えなくなるかなと思います

勝手にガンガン補完してくれるので慣れるまで結構かかるかもしれませんが慣れれば便利なのかもしれません

参考サイト

0 件のコメント:

コメントを投稿