From 44c4cc93c11733e891a523768e96aadfbe2c3ae2 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Thu, 28 Apr 2022 12:04:22 +0100 Subject: [PATCH] feat(completion): add support for GitHub Copilot via copilot.el I opted for accepting copilot completions using C- / (shift+tab) instead of regular tab, as it was often getting in the way of yasnippet and lsp completion suggestions. This allows a more explicit acceptance of Copilot suggestions. --- core/siren-core-modules.el | 3 ++- modules/completion/siren-cape.el | 1 + modules/completion/siren-copilot.el | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 modules/completion/siren-copilot.el diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 5008658..1a0ede2 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -19,8 +19,9 @@ (require 'siren-packages) ;; Completion -(require 'siren-company) (require 'siren-cape) +(require 'siren-company) +(require 'siren-copilot) ;; Documentation (require 'siren-dash-at-point) diff --git a/modules/completion/siren-cape.el b/modules/completion/siren-cape.el index 34403a9..ba05808 100644 --- a/modules/completion/siren-cape.el +++ b/modules/completion/siren-cape.el @@ -9,6 +9,7 @@ (require 'siren-company) (use-package cape + :after company :hook (lsp-completion-mode . siren-cape-capf-lsp-mode-setup) diff --git a/modules/completion/siren-copilot.el b/modules/completion/siren-copilot.el new file mode 100644 index 0000000..94fc9ec --- /dev/null +++ b/modules/completion/siren-copilot.el @@ -0,0 +1,28 @@ +;;; siren-copilot.el --- jimeh's Emacs Siren: copilot configuration. + +;;; Commentary: + +;; Basic configuration for copilot. Auto completion on steroids. + +;;; Code: + +(use-package copilot + :straight (:host github :repo "zerolfx/copilot.el" + :files ("dist" "copilot.el")) + :hook + (prog-mode . copilot-mode) + + :general + ("C-" 'copilot-accept-completion) + ("" 'copilot-accept-completion) + (:keymaps 'company-active-map + "C-" 'copilot-accept-completion + "C-TAB" 'copilot-accept-completion + "" 'copilot-accept-completion) + + :config + (with-eval-after-load 'company + (delq 'company-preview-if-just-one-frontend company-frontends))) + +(provide 'siren-copilot) +;;; siren-copilot.el ends here