Copilot.el は GitHub Copilot を Emacs で使えるようにするパッケージ。これ自体は非公式なプラグインで、動かすために Vim で動く公式プラグインのバイナリを利用して動いている
最近出て来たパッケージなので el-get には登録されていない。というわけでとりあえず自前でレシピを用意している
(:name copilot
:website "https://github.com/copilot-emacs/copilot.el"
:description "An Emacs plugin for GitHub Copilot."
:type github
:branch "main"
:pkgname "copilot-emacs/copilot.el"
:depends (s dash editorconfig jsonrpc))
依存している editorconig も自前でレシピを用意している
(:name editorconfig
:website "https://github.com/editorconfig/editorconfig-emacs"
:description "An EditorConfig plugin for Emacs."
:type github
:branch "master"
:pkgname "editorconfig/editorconfig-emacs")
そして el-get-bundle
でインストール
(el-get-bundle copilot)
とりあえずプログラミング系の mode で有効になるようにしていた。けど今はちょっと無効にしている
;; (add-hook 'prog-mode-hook 'copilot-mode)
また、そのままだと enh-ruby-mode では有効にならないので
copilot-major-mode-alist
に突っ込んでいる。なおこの設定は 公式の README にも書かれている
(with-eval-after-load 'copilot
(add-to-list 'copilot-major-mode-alist '("enh-ruby" . "ruby")))
あと何故か忘れたけど inline preview を無効にするような設定を入れている
(with-eval-after-load 'company
;; disable inline previews
(delq 'company-preview-if-just-one-frontend company-frontends))
タブで補完ができるように設定している
(with-eval-after-load 'copilot
(define-key copilot-completion-map (kbd "<tab>") 'copilot-accept-completion)
(define-key copilot-completion-map (kbd "TAB") 'copilot-accept-completion))
大きいファイルが開かれると
Warning (copilot): .loaddefs.el size exceeds 'copilot-max-char' (100000), copilot completions may not work
とか出るけど、そんなもんは分かってるので warning が出ないように黙らせている
(setq warning-suppress-log-types '((copilot copilot-exceeds-max-char)))