copilot-chat.el は Emacs から GitHub Copilot Chat を使えるようにするパッケージ。
el-get 本体にはレシピがないので自前で用意している。なお依存している chatgpt-shell などのレシピは chatgpt-shell の設定ページ に置いてある
(:name copilot-chat
:website "https://github.com/chep/copilot-chat.el"
:description "This plugin allows you to chat with github copilot."
:type github
:pkgname "chep/copilot-chat.el"
:depends (request markdown-mode chatgpt-shell magit))
そして el-get-bundle
でインストールしている
(el-get-bundle copilot-chat)
とりあえず M-x copilot-chat-display
で起動する。
最初の起動の時は適当なメッセージを C-c C-c
で送信すると
GitHub Copilot Chat を有効にするための認証コードとメッセージが minibuffer に表示されるのでその認証コードをコピーして Enter を叩いたら Web ブラウザに認証コードを入れる画面が表示されるのであとは画面に従って動かしましょう
色々使っていると frontend は shell-maker
の方が使いやすいっぽいのでそれを指定している
(setopt copilot-chat-frontend 'shell-maker)
また出力は日本語の方が日本人には嬉しいのでひとまず copilot-chat-prompt
の末尾に日本語を出力するように指定している。
その際 copilot-chat-common
の読み込み後に設定しないと変数がないというエラーになるので
with-eval-after-load
の中に閉じ込めている
(with-eval-after-load 'copilot-chat-common
(setq my/copilot-chat-prompt-original copilot-chat-prompt)
(setopt copilot-chat-prompt (concat my/copilot-chat-prompt-original "\n出力には日本語を用います")))
色々な起動コマンドがあるので pretty-hydra
を使って Hydra の定義をしてる。使うのは偏るかもしれないけど、とりあえずこれで行ってみる
(with-eval-after-load 'pretty-hydra
(pretty-hydra-define copilot-chat-hydra
(:separator "-" :color teal :foreign-key warn :title (concat (nerd-icons-mdicon "nf-md-robot") " Copilot Chat") :quit-key "q")
("Launch"
(("c" copilot-chat-display "Chat")
("S" copilot-chat-switch-to-buffer "Switch")
("d" copilot-chat-doc "Doc")
("r" copilot-chat-review-whole-buffer "Review")
("f" copilot-chat-fix "Fix")
("C" copilot-chat-ask-and-insert "Insert")
("o" copilot-chat-optimize "Optimize")
("t" copilot-chat-test "Write test"))
"Explain"
(("e" copilot-chat-explain "Selected")
("s" copilot-chat-explain-symbol-at-line "Symbol at line")
("f" copilot-chat-explain-defun "Function"))
"Commit message"
(("I" copilot-chat-insert-commit-message "Insert")))))