This plugin allows you to chat with github copilot.
Feel free to contribute, report issues or discuss new features.
Copilot-chat is available on melpa :
M-x package-install RET copilot-chat RET
With use-package
:
(use-package copilot-chat)
(use-package copilot-chat
:straight (:host github :repo "chep/copilot-chat.el" :files ("*.el"))
:after (request org markdown-mode shell-maker))
Clone repository and eval files in emacs.
You will need a github acccount with access to copilot API. When sending the first prompt, you will need to authenticate to github. Follow instructions and everything will be fine.
copilot-chat-backend
can be set to 'curl
(default) or 'request
.
With curl, answers will be written token by token. Curl path can be set with copilot-chat-curl-program
variable.
With request library, the text is written when all data is read and this can be long.
Several frontends are available. You can select your favorite one by setting the copilot-chat-frontend
variable to 'markdown
, 'org
or 'shell-maker
( https://github.com/xenodium/chatgpt-shell ).
Try them and choose wisely.
You can use copilot to generate your commit messages :
(add-hook 'git-commit-setup-hook 'copilot-chat-insert-commit-message)
Or call manually (copilot-chat-insert-commit-message)
when in the commit message buffer.
The proxy can be configured with the curl backend. For the emacs-request backend, please refer to the emacs-request documentation if you need to configure a proxy.
Use the variables copilot-chat-curl-proxy
, copilot-chat-curl-proxy-user-pass
, and copilot-chat-curl-proxy-insecure
to set up a proxy. Refer to the documentation for each variable to learn how to use them.
Proxies have not been thoroughly tested yet, so there may be bugs. Many options are missing for HTTPS proxies. Please open an issue if you need additional features.
Start chatting with copilot-chat-display
. Type your question in *copilot-chat-prompt*
buffer, then press C-c C-c
or C-c RET
.
You may need to authenticate to github. Follow instructions.
You can select buffers that will be added as context in your prompt. Use copilot-chat-add-current-buffer
and copilot-chat-del-current-buffer
. You can also manage buffers by using copilot-chat-list
.
Selected buffers will be sent with each prompt until you remove them.
(copilot-chat-reset)
reset everything including history, buffers and frontend.(copilot-chat-display)
display copilot chat buffers.(copilot-chat-explain-symbol-at-line)
ask Copilot to explain symbol under point.(copilot-chat-explain)
ask copilot to explain selected code.(copilot-chat-review)
ask copilot to review selected code.(copilot-chat-doc)
ask copilot to document selected code.(copilot-chat-fix)
ask copilot to fix selected code.(copilot-chat-optimize)
ask copilot to optimize selected code.(copilot-chat-test)
ask copilot to write tests for selected code.(copilot-chat-custom-prompt-selection)
ask for a prompt in minibuffer and pastes selection after it before sending it to copilot.(copilot-chat-add-current-buffer)
add current buffer to copilot chat. Its content will be sent with every request.(copilot-chat-del-current-buffer)
remove current buffer.(copilot-chat-list)
open buffer list.(copilot-chat-prompt-history-previous)
insert previous prompt from history in prompt buffer.(copilot-chat-prompt-history-next)
insert next prompt from history in prompt buffer.(copilot-chat-ask-and-insert)
ask for a custom prompt and write answer in current buffer at point.(copilot-chat-insert-commit-message)
Insert in the current buffer a copilot generated commit message.Warning : key bindings have changed since Melpa integration needs to avoid C-c <letter>
bindings.
C-c RET
send prompt. Answer will be written in chat buffer.M-p
previous prompt.M-n
next prompt.C-c C-l
open buffer list.C-c C-q
bury buffer and delete windowq
bury bufferRET
select or deselect buffer on pointspace
select or deselect buffer on pointC-c C-c
clear buffer listg
refresh listq
bury buffer and delete windowThis plugin is unofficial and based on Copilot Chat for neovim repository: https://github.com/CopilotC-Nvim/CopilotChat.nvim
The prompt for git commit messages comes from gpt-commit.
For github copilot code completion in emacs, checkout copilot.el