GitHub Copilot Chatメモ
Emacs パッケージ
copilot のみの場合はコードの提案しかしないけど、copilot chat はもう少し対話的に AI と情報のやり取りができる。
コミットメッセージの自動生成
設定するだけで git commit の時に数秒遅れてコミットメッセージを作ってくれる。これは便利。
(add-hook 'git-commit-setup-hook 'copilot-chat-insert-commit-message)
コードを送信してアクション (code helper functions)
範囲選択して (copilot-chat-review)
みたいなコマンドを実行すると、コードレビューの結果を出力してくれる。色々バージョンがあって、テスト、ドキュメント、コード修正、コード解説などのコマンドがある。あまり精度が良いという感じはしなかった。ただ、大量のコードがあって不慣れな時とかには役に立ちそう。
チャットで質問 (basic function)
コマンド (copilot-chat-display)
でウィンドウを開き対話できる。ほぼ ChatGPT と同じ UX だが、質問内容はソフトウェアエンジニアリングに制限されていて、関係ない分野の質問は回答してもらえない。
C-c C-c でメッセージ送信できる。
ここの設定が参考になる
役に立った事例
- csv のカラムの追加をしたときにテストの修正
- OpenAPI の仕様書の作成
copilot-chat-ask-and-insert
は新しいコードを書くときには役立つけど、今あるのをリプレイスはしてくれないので微妙かも
こっちのパッケージは inline-assist みたいなのを持ってるけど最近アクティブではない様子。そもそも copilot-chat とは関係ないのかも。
2日前に copilot-chat-yank
っていうのが追加されてた。
straight で copilot と copilot-chat をバージョンアップしたら下記のエラー。どうやら language server インストールしないといけないようになったらしい。
error: The package @github/copilot-language-server is not installed. Unable to find nil
下記でインストール。
M-x copilot-intall-server
また別のエラーが出た。
error: :pre-build command error in "org" recipe (error "Failed to parse ORGVERSION: (file-missing "Setting current directory" "No such file or directory" "/usr/eggc/.emacs.d/straight/repos/org/lisp/")")
straight で自動で org-mode をインストールして失敗しているらしい。詳細はわからない。ただ、org-mode は最新版じゃなくても良いので下記の設定を加えた。結果、エラーは出なくなった。
(straight-use-package '(org :type built-in))
テストコードを書かせる実験
- サンプルにしたいプロダクトコードと、テストコードのファイルを開く
-
M-x copilot-chat-list
でファイルを RET でマークする - copilot-chat で「<file_name> のテストコードを書いてください」と依頼
- チャットバッファをアクティブにして
M-x copilot-chat-send-to-buffer
でテストファイルを指定して
コピペよりはちょっと効率良い
別の環境で開くと下記のエラーが発生
jsonrpc-error: request id=1 failed:, (jsonrpc-error-code . -1), (jsonrpc-error-message . Server died), (jsonrpc-error-data)
調べてみると copilot-language-server のバージョンに対して nodejs が古いと出ることがあるようだ。
~/.emacs.d/.cache/copilot/bin/copilot-language-server --version
Node.js 20.x is required to run GitHub Copilot but found 19.7.0
asdf で最新版入れてみる
asdf install nodejs latest
asdf global nodejs 24.0.1
emacs 再起動して M-x copilot-install-server